Overfitting
개념
Overfitting(과적합)은 모델이 훈련용 데이터에 너무 과하게 최적화되어 암기해 버린(훈련 데이터 안에 있는 예외적인 데이터까지 다 학습해버린)상태를 말한다.
출처: Тюжина Ирина / Getty Images
Overfitting 예시
집의 평수로 집값을 예측하는 모델을 만든다고 가정해보자. 일반적으로는 평수가 커질수록 집값이 오르는 그래프가 그려져야 한다.
- Overfitting: 훈련 데이터 중에 평수는 10평으로 아주 작은데, 내부에 값비싼 재료로 인테리어를 해서 집값이 50억인 이상치(Outlier, 노이즈)가 하나 섞여 있다.
- 결과: Overfitting된 모델은 “10평짜리 집은 50억이다”라는 예외적인 점까지 학습을 해버린다. 결국 나중에 들어온 평범한 10평짜리 원룸 데이터에 대해서도 “이 집은 50억입니다”라는 틀린 예측을 내놓게 된다.
Overfitting이 발생하는 이유
모델이 풀어야 할 문제에 비해 모델의 성능이 너무 높을 경우
- 간단한 모델로도 충분이 해결할 수 있는 문제인데, 너무 성능이 높은 모델을 쓰는 경우 모델의 넘치는 뇌 용량을 활용해 데이터의 모든 점을 꺾어가며 완벽히 잇는 선을 그려버린다. 패턴을 요약하는 대신 데이터를 1:1로 암기할 여유 공간이 너무 많은 것이다.
훈련 데이터가 부족할때
- 고양이 사진 10장만 보여주고 고양이를 학습하라고 하면, 모델은 ‘뾰족한 귀’나 ‘수염’ 같은 보편적 특징을 추출하기 위한 통계적 근거를 확보하지 못한다. 대신 10장에 우연히 공통으로 찍혀있던 얼룩무늬나 배경색 자체를 ‘고양이의 절대 조건’으로 외워버리는 경우가 있다.
데이터에 Noise나 이상치가 많은 경우
- 인공지능의 목표는 Loss를 0으로 만드는 것이다. 데이터셋에 튀어버린 데이터나 라벨링 오류가 섞여 있어도, 모델은 이를 무시하지 못하고 정답으로 맞추기 위해 자신의 파라미터를 심하게 업데이트시킨다.
학습을 오래 반복할 때
- 학습 초기에는 데이터 일반적인 패턴을 먼저 배운다. 하지만 이 과정이 계속 반복되면, 더 이상 학습할 패턴이 없는 상태에서 어떻게든 Loss을 더 줄이기 위해 무의미한 노이즈 영역까지 학습을 하게 된다.
Overfitting 해결 방법
Early Stopping: 학습을 너무 오래 반복을 할 때 사용
출처: ResearchGate
학습 과정을 모니터링하다가 오버피팅이 시작되는 조짐이 보이면, 지정한 학습 횟수(Epoch)가 덜 끝났더라도 과감하게 훈련을 강제로 종료하는 기법이다.
Dropout: 문제에 비해 모델의 성능이 너무 높을 때
학습을 진행할 때 신경망의 노드들을 무작위로 꺼버린다. 이렇게 하면 모델이 특정한 노드에만 의존해서 정답을 맞히지 못하도록 할 수 있다. 살아남은 다른 노드들을 골고루 활용하여 전반적인 특징을 파악하게 되므로, 하나의 거대한 네트워크가 여러 개의 작은 네트워크로 쪼개져 학습하는 앙상블(Ensemble) 효과를 낸다.
출처: Mannvi / Getty Images
데이터 증강: 훈련 데이터가 부족할 때
데이터가 적어서 모델이 픽셀 자체를 암기해 버리는 현상을 막기 위해, 원본 데이터에 인위적인 변형을 가해 학습 데이터의 양과 다양성을 뻥튀기하는 기법이다. 이미지를 좌우 반전(Flip) 시키거나, 무작위로 자르거나(Crop), 살짝 회전시키거나, 색상이나 밝기(Color Jitter)를 바꾼다.
가중치 감소: 데이터에 노이즈나 이상치가 너무 많을 때
오버피팅된 모델의 파라미터를 열어보면, 특정 노이즈를 맞히기 위해 가중치 값이 비정상적으로 엄청나게 커져 있는 것을 볼 수 있다. 이를 수학적으로 억누르는 기법이다. 모델이 Loss를 계산할 때, 단순히 정답과의 차이만 계산하는 것이 아니라 학습을 통해 가중치가 너무 커졌을 경우 가중치의 크기 자체를 벌점(Penalty)으로 추가한다.
Leave a comment