기계학습에 대한 면밀한 정의를 하고 넘어가려고 합니다.
기계학습의 정의는 크게 두 가지로 나눌 수 있습니다.
(Arthur Samuel. 1959)
“Field of study that gives computers the ability to learn without being explicitly programmed.”
명시적인 프로그램 없이도 컴퓨터가 학습을 할 수 있는 능력을 부여하는 연구 분야
위와 같은 정의를 한 Samuel은 체커 게임을 플레이하는 프로그램을 개발했습니다.
그 당시 Samuel은 체커 게임을 잘 하지 못했으나, 프로그램이 자기 자신과 수만 번의 대국을 펼치도록 하여 스스로 체커 게임을 배우도록 했습니다.
대국을 승리로 이끄는 위치와 패배로 이끄는 체커 보드 상의 위치를 나누고, 프로그램이 학습을 진행하면서 스스로 "이 위치가 좋은 위치인가?"를 판단하여 최대한 좋은 위치에 칩을 놓도록 하여 프로그램의 성능을 향상시켰습니다.
(Tom Mitchell. 1998)
“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, improves with experience E.”
컴퓨터 프로그램이 특정 성능 P에 따라 작업 T를 수행할 때, 경험 E에 따라 작업 T의 성능이 향상된다면 이것을 “작업 T와 성능 P에 대해 경험 E로부터 학습 learn했다.”라고 한다.
앞선 체커 게임 프로그램을 예로 들어 경험 E, 작업 T, 성능 P가 무엇인지 비교해보겠습니다.
즉, 경험 E가 여러 번 쌓이면서 작업 T의 성능 P가 향상되고, 이를 반복하면서 더 좋은 체커 게임 프로그램이 만들어진다고 볼 수 있겠습니다!
ex) 이메일 프로그램
프로그램이 사용자가 체크하는 스팸 메일을 확인하고, 더욱 정확하게 스팸 메일을 걸러내기 위해 학습을 진행한다고 가정합시다. 이 상황에서 경험, 작업, 성능을 각각 정의해봅시다.
기계학습의 학습 알고리즘은 크게 지도 학습 Supervised Learning과 비지도 학습 Unsupervised Learning으로 나눌 수 있습니다.
다음 포스트에서는 Supervised Learning에 대해 알아보도록 하겠습니다.