기계학습 내용은 개인적인 공부를 위해서 정리하는 용도이다. 개인적으로 인터넷을 통해서 공부한 내용을 포함하여 POSTECH의 옥정슬 교수님의 기계학습 강의를 기반으로 정리할 것이다.
기계학습, 영어로는 machine learning이라고 하는 것은 역사가 길지는 않다. Machine learning은 정의상으로는 여러 경험을 통해서 자동으로 개선하고 해결하는 알고리즘을 만드는 분야이다. 요즘 흔히 사용하는 유튜브나 넷플리스 등과 같은 미디어 플랫폼뿐 아니라 페이스북, 인스타그램 등과 같은 SNS에 machine learning 알고리즘은 필수적이다. 이러한 플랫폼에는 추천이라는 기능이 있는데, 이 기능이 machine learning 기반으로 동작하기 때문이다. 이 외에도 자율 주행이라든지, 아니면 헬스 케어 산업에서도 굉장히 중요한 부분을 차지하고 있다. 세상이 발전함에 따라 machine learning의 중요성이 강조되고 있다.
그렇다면 machine learning에서 machine은 어떠한 것을 의미하는 것일까? 우리가 영어를 그대로 해석하면 기계가 될 것이다. 기계가 학습하는 것이 틀린말은 아니다. 그래도 의미를 조금 더 생각해보면 machine이라는 것은 우리가 만든 어떤 function을 수행하는 하드웨어나 소프트웨어라고 생각하면 된다. 수학적으로는 f(x) = y라는 함수를 생각해도 된다. 어떤 input이 존재하면 이 input을 기반으로 output을 만들어낸다.
가령 추천해주는 시스템에서 유저들의 기록을 기반으로 선호나는 아이템을 추천해주는 상황이 되는 것이다. 자율 주행 자동차에서는 목적지를 입력으로 하면 안전하게 도착할 수 있도록 자동차를 제어하는 상황이 될 것이고, 헬스 케어 산업에서는 헬스 데이터를 기반으로 정확한 질병을 찾아내는 상황이 모두 machine learning이라고 할 수 있다.
이러한 machine learning이 등장하기 전에 전통적인 computer science 분야에서는 프로그램 코드를 사람이 직접 입력하여 이를 기반으로 동작하도록 되어 있다. 하지만, 이러한 경우 한계는 분명히 존재한다. 사람이 모든 상황에 적절한 대응점을 찾기가 어렵기 때문에 적절한 function을 모두 만들어내기 어렵다. 그래서 상황이 아무리 간단할지라도 모든 상황에 대응하는 function을 사람이 분명하게 정의하기가 어려운 부분이 있다. 우리는 이러한 상황을 아예 컴퓨터에게 맡기고 싶은 것이다. Machine learning이라는 것은 여러 상황을 기반으로 더욱 적절한 알고리즘을 만들어 상황에 대응시킬 수 있다. 이러한 패러다임의 등장으로 사람들은 편리함과 정확함을 함께 얻을 수 있었다.
조금 더 자세하게 machine learning을 알아보려고 한다. 우리 주변에는 input이 있으면 output이 있는 상황들이 존재할 것이다. 이렇게 input과 output을 대응시켜주는 여러 샘플들을 모아놓은 것을 우리는 dataset이라고 할 것이다. 그러면 machine learning은 machine이 이러한 dataset에서 function을 배울 수 있도록 하는 것이다. 여기서 function이라고 했지만 쉽게 이야기하면 여러 상황에서 보여주는 패턴을 학습하는 것이다. 예를 들어, 2 x 2 = 4, 2 x 4 = 8과 같이 여러 샘플들을 통해서 2 x 3이 몇인지 구하는 것이다. 물론 샘플이 적으면 힘들 수는 있지만, 이러한 맥락에서 샘플이 어느정도 많아지면 쉽게 구할 수 있을 것이다.
그래서 결론적으로 전통적인 computer science에서는 사람인 우리가 직접 패턴을 찾아서 이를 machine에게 입력해주는 구조라면, machine learning의 등장으로 machine이 직접 dataset으로부터 패턴을 찾는 구조인 것이다. 이렇기 때문에 세상이 발전함에 따라 인간이 직접 해결해야 하는 부분은 줄어들고 이를 컴퓨터에 맡기는 것이 더 효과적이라는 것을 알게 된 것이다.