데이터과학 탐구노트 – Conceptional Basis #2. 머신러닝 정의, 학습법
‘데이터과학 탐구노트’ 시리즈는 카페지기 커피사유가 7년동안 아마추어 프로그래밍을 취미삼아 즐기다가, 부랴부랴 시작한 ‘데이터과학’ 공부 일지입니다.
대략적으로 강의에 등장하는 행렬을 배우고 나니, 눈에 잡히는 것이 하나 생겼다. 행렬 하나를 배우는데 꽤 시간을 써서 그랬을까, 어느 정도 이제 필자도 준비가 되었다고 생각했는지 바로 머신러닝 개론을 당당하게 강의 목록에서 골라버렸다. 비교적 가벼운 내용이고, 수학적이거나 따로의 컴퓨터 프로그래밍적인 내용도 아니어서, 개념 상의 내용으로 간단히 듣고 넘어가게 되는 내용인 듯 했다. 그 결과도 그렇게 예상과는 크게 다르지는 않았지만, 몇 가지 중요하다고 생각되는 개념 정리를 좀 해 둘 필요가 있다고 생각되었다.
필자는 이 Coursera 강좌를 참고하였음을 서두에 밝힌다.
Machine Learning의 정의
Arthur Saumel(1959)의 정의
Machine Learning is ‘Field of study that gives computers the ability to learn without being explicityly programmed’.
기계 학습이란 명쾌하게 하나-하나 프로그래밍 되지 않고도, 컴퓨터가 스스로 학습할 수 있도록 하는 능력을 부여하는 연구 영역이다.
당시는 머신러닝이 태동하는 때였고, 연구 초창기에 해당했기 때문에 이런 정의가 존재하였으나, 잠시 컴퓨터 역사에서 컴퓨터 하드웨어 및 연산량, 컴퓨팅 파워의 한계상 이어졌던 1970s의 머신러닝 침체기 이후, 다시 붐이 벌어진 1990년대 즈음에 보다 명확하고 수학적으로 보이는 정의가 탄생한다.
Tom Mitchell(1998)의 정의
Well-posed learning problem: ‘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를 수행하는 성능 P가 향상된다면, 프로그램이 경험 E로부터 ‘학습을 했다’고 표현한다.
현재 일반적으로 학계에서 ‘Machine Learning의 정의’라고 하면, 이 정의를 언급하는 경우가 많다. 즉, 이 정의는 일반적으로 받아들여지는 ‘기계학습’에 대한 정의인 셈이다.
Machine Learning의 예시 – 이메일 스팸 분류 프로그램
이메일 스팸 분류 프로그램은 사용자의 신고 패턴을 기억함으로써, 스팸을 잘 제거하는 방법을 학습하는(즉, 어떤 이메일이 스팸인지를 학습하는) 머신러닝 기술이 도입된 프로그램에 해당한다.
일반적으로, 이메일 스팸 분류 프로그램을 Tom Mitchell의 정의에 대입하여 본다면, 정의에 등장하는 경험 E, 작업 T, 성능 P는 다음과 같다고 할 수 있다.
– 경험 E: 컴퓨터가 사용자가 메일을 스팸/정상으로 분류하는 것을 관찰하는 것
– 작업 T: 컴퓨터가 스팸 메일을 선별하고, (필요시) 신고하는 것
– 성능 P: 컴퓨터가 정확하게 분류한 스팸 메일의 비율(‘참 양성비’인 셈이다)
지도 학습과 비지도 학습(Supervised Learning & Unsupervised Learning)
지도 학습(Supervised Learning)
지도 학습의 정의
머신러닝에서 지도 학습(Supervised Learning)이란, 컴퓨터에게 우리가 입력(Input)에 대한 답(Output)을 쌍으로 제시함으로써, 입력과 출력 사이의 관계를 컴퓨터가 학습하도록 하는 학습법이다.
지도 학습 문제의 분류
지도 학습 문제는 크게 두 종류, 회귀(regression) 문제와 분류(Classification) 문제로 나누어진다.
회귀(Regression) 문제
회귀 문제는 주어지는 입력 데이터에 대해서, 연속적인 출력 데이터 사이의 관계를 예측하도록 하는 문제이다.
그 예로는, 이를테면 집의 면적, 집의 침실 개수 등을 입력으로 주고, 집의 가격을 출력으로 제시하는 경우가 해당할 수 있다. 집의 가격은 가산적이지 않고, 연속적인 (양의) 실수 범위의 데이터이기 때문이다(연속적인 출력 데이터). 집의 가격을 비쌈 / 비싸지 않음과 같이, 이진으로 분류하는 문제가 아니므로 회귀 문제에 해당하는 것이다.
분류(Classification) 문제
분류 문제는 주어지는 입력 데이터에 대해서 가산적인 출력 데이터 사이의 관계를 예측하도록 하는 문제이다. 다르게 말하자면, 입력 데이터들을 몇 개의 카테고리로 분류하는 문제라고도 할 수 있다.
분류 문제의 예시로는, 이미지 데이터를 입력으로 줄 때, 주어지는 이미지가 강아지인지, 고양이인지 분류하는 것을 출력으로 하는 문제의 경우가 있을 수 있다.
지도 학습의 적용에서의 강점
지도 학습은, 일반적으로 Problem-Solving에서 그 결과가 예측되는, 즉 어떤 결과를 뽑아내야 할 지가 명확한 문제에 손쉽게 적용할 수 있다는 강점이 있다.
비지도 학습(Unsupervised Learning)
비지도 학습의 정의
비지도 학습은 주어지는 입력 데이터들에서 특이점 또는 공통점을 찾아내는 것이라고 생각할 수 있다. 일반적으로 지도 학습이 아닌 학습을 비지도 학습으로 칭한다.
비지도 학습 문제의 분류
지도 학습이 아닌, 비지도 학습의 문제에 대한 분류는 다양하다. 그 중에서 대표적으로 2가지가 강의에서 소개되었는데, 하나는 군집화(Clustering) 문제이고, 다른 하나는 비군집화(Non-Clustering) 문제 중 하나인 칵테일 파티 알고리즘(Cocktail Party Algorithm)이다.
군집화(Clustering) 문제
군집화 문제란, 수많이 주어지는 입력 데이터를 데이터 간의 유사성이나 관계성 등에 기반하여, 몇 개의 군집으로 나누는 것을 목표로 하는 문제를 말한다.
비군집화(Non-Clustering) 문제
비군집화 문제란, 군집화 문제가 아닌 비지도 학습 문제를 말한다. 비군집화 문제의 예시로는 칵테일 파티 알고리즘(Cocktail Party Algirhtm)이 있는데, 이 알고리즘은 여러 소스가 섞여있는 환경에서 몇 개의 공통적인 구조를 찾아내어 추출하는 알고리즘이다. 마치, 칵테일 파티의 혼잡한 소음 속에서 각 개인의 말을 추출해내는데 이용할 수 있는 알고리즘이라 이러한 이름이 붙었다.
이상으로 해서 머신러닝의 정의와, 그 학습 방법에 관해 간단히 필자가 학습한 내용을 정리하였다. 아마 이 강의 순서대로 포스트 연재를 진행하게 된다면, 다음 연재는 아마도 수학적인 기법에 해당하는 ‘비용 함수’나 ‘경사 하강법’에 대한 내용이 될 것이기 때문에, 아무래도 다음 연재는 Mathematical Basis가 될 듯 싶다.