정보공간_1

[7기 신촌 박진상] 기계학습 #1 - 지도학습 본문

IT 놀이터/Elite Member Tech & Talk

[7기 신촌 박진상] 기계학습 #1 - 지도학습

알 수 없는 사용자 2015. 3. 6. 17:20

안녕하세요 엘리트 7기 신촌 멤버십의 박진상입니다.

저는 기계학습이 어떻게 이루어지는지 이론과 간단한 실습을 통해 얘기하겠습니다. 이번 포스팅에서는 기계 학습의 한 종류인 지도 학습법에 대해 이론을 먼저 알아보겠습니다.

 

기계로 구현하는 지능은 철학적으로 생각하면 답이 나오질 않는 부분입니다. 그래서 지능형 기계를 만드는데 있어서 한가지 가장 기본적인 예를 들어보겠습니다.


위의 그림에서 ? 안에 들어갈 함수를 유추할 수 있을까요? 우리는 ?가 보통 덧셈(+)이라고 생각할 수 있습니다. 그렇다면 다음 그림에서 출력값은 뭐가 될지 예측할 수 있을까요?


제 설명이 없이 그림만 보고 따라오신 분이라도 어렵지 않게 X 120이라고 결론지을 수 있을 것입니다. 따라서 ?가 첫번째 그림에서 주어진 규칙을 기반으로 추리했을 때 +라고 기계가 인식할 수 있다면, 이 기계는 사람처럼 생각할 수 있다라는 결론이 나옵니다. 그리고 +라고 기계가 인식할 수 있도록 해주는 것이 바로 학습입니다.

좀 더 설명을 보태겠습니다. 기계는 방금 어떤 식으로 학습했을까요? 이는 어렸을 때 저희가 배운 방법과 유사합니다. 예제를 주고 답을 알려주면서 과정을 학습한 것이죠. 지도학습이란 바로 이렇게 예제와 답을 통해서 과정을 학습하는 학습 방법을 말합니다.

과정을 학습시키기 위해서는 입력에서 출력을 도출할 수 있는 문제를 정의해야 합니다. 문제를 정의 하는 과정을 모델링한다고 하고, 일반적으로 문제의 특징점(feature vector)을 뽑아내야 합니다. 위의 덧셈을 학습 시키는 예에서 만약 모델링을 다르게 했다면, 의미없는(여기선 덧셈이 아닌) 결과가 도출될 가능성이 크게 됩니다.

학습시키는 과정에서 우리는 또 다른 문제점을 만날 수 있습니다. 학습이 제대로 이루어졌는지 검증하는 과정에서 위의 문제의 답이 다음이라고 하겠습니다.


현재 기계는 ?라는 프로세스를 + 이라고 학습한 상황입니다. 따라서 50 70이 입력되었을 때 기계는 120이라는 답을 내겠죠. 하지만 정답은 27로 빗나간 상황입니다. 이 경우, 학습은 잘못되었으며 50 ? 70 = 27 이라는 결과를 어느 정도 학습하기 위하여 과정이 수정되어야 합니다. 그리고 제대로 수정이 된다면 ? 연산은 두 수를 더한 후 31로 나눈 나머지라고 학습되어야 할 것입니다. 

처음의 3가지 데이터셋을 훈련 데이터 집합(Training set)이라고 하며, 후에 입력된 50 ? 70 = 27 이라는 답안을 검증 데이터 집합(Cross validation set) 이라고 합니다. 학습이 되었다면 훈련 데이터 집합(Training set)에 대해서는 만족하고 검증 데이터 집합(Cross validation set)에 대해서 만족해야 합니다.

 

이런 일이 심해져서 훈련 데이터 집합에만 과하게 정확하고, 검증 데이터 집합이나 다른 입력에 대해서는 부정확한 경우 학습이 오버피팅(Overfitting)되었다고 합니다. 반대의 경우, 즉 너무 모호하게 출력이 발생하는 경우에는 언더피팅(Underfitting)되었다고 합니다.

 

자료는 Coursera의 스탠포드 대학의 Prof.Andrew Ng 의 강의를 참조했습니다.

https://www.coursera.org/course/ml