이 포스팅은 Stanford University의 Machine Learning 수업 노트 입니다.
사실 아직도 기계학습이 무엇인지에 대해선 합의가 이루어지지 않았다.
그동안 나온 정의를 하나씩 살펴보겠다.
1959년에 정의 되었다. 기계학습이란 명시적 프로그램이 없어도 스스로 학습할 수 있는 능력을 연구하는 학문 분야다. 사무엘은 1950년 대에 체커게임을 직접 수행하는 프로그램을 만들면서 유명해졌다. 컴퓨터가 체커 게임을 아주 많이 학습하고, 반복한 끝에 어떤 수에서 이길 수 있고, 어떤 수에서 실패할 수 있는지를 알 수 있었다. 지금까지 본 사무엘의 정의는 사실 오래 됐다. 비교적 최근에 나온 Tom Mitchell의 정의를 보자.
1998년에 나온 Tom Mitchell의 정의는 기계학습을 학습과제(Well-posed Learning Problem)를 중심으로 정의하고 있다. 프로그램이 일정 수준의 작업성능(P)를 가지고 작업(T)을 수행한다고 했을 때, 경험(E)이 증가함에 따라 작업(T)을 수행하는 작업성능(P)이 향상될 수 있다. 이때 프로그램이 경험(E)으로 부터 학습(learn)했다고 한다.
Tom Mitchell의 정의를 체커 게임에 대입해보자. 경험(E)는 같은 게임을 수만번 반복하는 과정, 작업(T)는 체커게임을 수행하는 행위, 작업성능(P)는 프로그램이 다음 판을 새로운 상대로 했을 때 그 판을 이길 확률(probablity)이다.
Choose a correct number.
"A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, imporves with experience E."
Suppose your email program watches which emails you do or do not mark as spam, and based on that learns how to better filter spam. What is the task T in this setting?
1. Classify emails as spam or not spam.
2. Watching you label emails as spam or not spam.
3. The number (or fraction) of emails correctly classified as spam/not spam.
4. None of the above, this is not a machine learning algorithm.
1번은 작업(T)이다. 경험(E)는 2번이고, 작업성능(P)는 3번이 된다.
우리는 앞으로 다양한 학습 알고리즘을 배우게 된다. 우리가 배울 알고리즘은 지도학습(Supervised Learning)과 자율학습(Unsupervised Learning)이다. 지도학습(Supervised Learning)은 작업을 수행할 수 있는 방법을 컴퓨터에게 가르치는 게 핵심이라면, 비지도학습(Unsupervised Learning)은 컴퓨터가 스스로 학습하도록 유도한다.
강화학습(Reinforcement Learning)과 추천시스템(Recommender Systems)도 기계학습 알고리즘 중 하나다. 하지만 지도학습과 비지도학습이 가장 많이 사용된다.
기계학습 이론 이외에도 학습 알고리즘을 이용하는 실무를 다루고자 한다. 학습 알고리즘을 가르친다는 것은 도구를 가르치는 것이고, 이 도구를 잘 활용할 수 있는 방법을 알아야 한다. 공부하는 것은 목수가 되는 것과 같다. 누군가 목수가 되는 법을 가르쳐주는데, 망치, 드라이버, 톱 하나씩만 던져주고 "Good Luck!"이라고 해준다면.. 도움이 안되겠죠? 가장 중요한 것은 도구를 활용하는 방법을 알아야 한다는 것이다.