이처럼 학습 데이터는 완벽하지 않고 잡음 등이 섞일 수 있습니다. 그런데 학습 데이터 모두가 정답이라 생각하고 모델을 여기에 지나치게 맞추다 보면, 일반화 성능이 떨어지는 모델을 얻게 됩니다. 이러한 현상을 과적합이라고 부릅니다.

모델은 특별한 것이 아니라, 우리가 구하려는 최종 결과물을 말합니다. 예를 들어 이메일을 분석해 스팸 메일을 자동으로 분류해주는 시스템을 개발한다면 스팸 메일 분류기가 바로 머신러닝에서 말하는 모델에 해당합니다. 즉 모델은 우리가 가져다 사용할 결과물이라고 생각하면 됩니다.

머신러닝은 데이터에서 모델을 찾아내는 기법을 말합니다. 여기서 데이터는 말 그대로 문서, 음성, 이미지 등의 자료를 말합니다. 모델은 머신러닝으로 얻어내는 최종 결과물을 의미합니다.

학습 데이터가 나쁘면 어떤 머신러닝 기법으로도 원하는 목적을 달성하기 어렵습니다. 최근 주목받고 있는 딥러닝도 마찬가지입니다. 따라서 머신러닝 기법을 사용할 때는 실제 데이터의 특성이 잘 반영되어 있고 편향되지 않은 학습 데이터를 확보하는 것이 아주 중요합니다. 학습 데이터와 입력 데이터가 달라져도 성능 차이가 나지 않게 하는 걸 일반화generalization라고 합니다. 머신러닝의 성패는 일반화를 얼마나 잘 달성했느냐에 달려 있다고 해도 과언이 아닙니다.

정칙화는 모델의 형태를 최대한 간단하게 만들려는 수치해석적인 기법입니다. 앞 절의 예제를 보면 복잡한 모델(곡선)에서는 과적합이 일어나기 쉬웠습니다. 학습 데이터에 대한 모델의 성능을 약간 희생하더라도 모델을 최대한 간단하게 만들어 과적합에 빠지지 않도록 하자는 게 정칙화의 기본 전략입니다.

검증을 도입하면 머신러닝의 학습은 다음과 같은 절차를 거쳐 진행됩니다.
1. 학습 데이터를 학습용 데이터와 검증용 데이터로 나눕니다. 보통 8:2의 비율을 사용합니다.
2. 학습용 데이터로 모델을 학습시킵니다.
3. 검증용 데이터로 모델의 성능을 평가합니다.
A. 성능이 만족스러우면, 학습을 마칩니다.
B. 성능이 떨어지면, 모델의 구조 등을 수정해 2단계부터 다시 수행합니다.

지도학습은 사람이 뭔가를 배우는 과정과 매우 비슷합니다. 우리가 연습 문제를 풀면서 새로운 지식을 공부하는 과정을 예로 들어 보겠습니다.
1. 연습 문제를 하나 고릅니다. 현재 지식으로 이 문제에 대한 답을 구합니다. 이 답을 정답과 비교합니다.
2. 틀렸으면 잘못된 지식을 교정합니다.
3. 모든 연습 문제에 관해 단계 1~2를 반복합니다.

입력 데이터가 어느 범주에 해당하는지 판별하는 모델을 찾아야 하면 분류 문제가 되고, 입력 데이터의 추세를 예측하는 모델을 찾는다면 회귀 문제가 됩니다.

* 인공지능과 머신러닝, 딥러닝은 구별해서 사용해야 합니다. 세 단어의 관계를 정리하면 다음과 같습니다.
* 딥러닝은 머신러닝의 일종이고, 머신러닝은 인공지능의 일종이다.
* 머신러닝은 학습 데이터로부터 모델을 찾아내는 귀납적 기법으로 영상 인식과 음성 인식 및 자연어 처리 등의 문제를 푸는 데 효과적입니다.
* 머신러닝의 성패는 일반화를 얼마나 잘 달성하느냐에 달려 있습니다. 학습 데이터와 실제 입력 데이터의 차이로 인한 성능 저하를 막기 위해서는 편향되지 않은 학습 데이터를 충분히 확보해야 합니다.
* 과적합은 모델이 학습 데이터에 지나치게 최적화되어 학습 데이터에서는 성능이 좋지만, 실제 입력 데이터에서는 성능이 크게 떨어지는 현상을 의미합니다. 과적합은 머신러닝 모델의 일반화 성능을 떨어뜨리는 주요 원인 중의 하나입니다.
* 과적합 문제를 해결하기 위한 대표적인 기법으로는 정칙화와 검증이 있습니다. 정칙화는 최대한 단순한 모델을 유도하려는 수치해석적인 기법입니다. 검증은 학습 과정에서 과적합 여부를 미리 알아내 이에 대한 조치를 취하려는 목적으로 고안된 기법입니다. 검증의 변형된 형태로 교차 검증이 있습니다.
* 머신러닝은 학습 방법에 따라 지도학습, 비지도학습, 강화학습으로 나눌 수 있습니다.
* 지도학습은 모델의 용도에 따라 크게 분류와 회귀 문제로 나눠집니다. 분류는 입력 데이터가 어느 범주에 속하는지를 알아내는 문제입니다. 분류 문제에서 학습 데이터의 정답은 범주로 주어집니다. 회귀 문제는 값을 예측하는 문제입니다. 학습 데이터의 정답은 값으로 주어집니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo