-
Notifications
You must be signed in to change notification settings - Fork 3
Overfitting
BIBI edited this page Oct 2, 2019
·
5 revisions
만약 동일한 점들이 주어지고 이 점을 대표할 수 있는 함수(곡선)을 추정하는 경우에서, 가운데가 optimize하다고 한다면
- 왼쪽은 지나친 단순화로 인해 에러가 많이 발생해 underfitting이라 한다
- 오른쪽은 너무 정확하게 표현한 나머지 training data에 대한 정확도는 좋지만 실제 test에서는 에러가 날 수 있는 상황이라 overfitting이라 한다.
모델은 과대적합(Overfitting)과 과소적합(Underfitting)이 발생하지 않도록 설계하는 것이 가장 중요하다.
Test set Accuracy가 최대가 되면서, Training(validation) Set Accuracy보다 조금 낮은 상태가 이상적이다.
- 학습 데이터(Training Set)에 대해 과하게 학습을 한 상황이다.
- Training Set에 대한 결과는 계속 좋아지는데 Test Set을 이용한 결과는 개선되지 않는 현상이다.
- 학습 데이터가 부족하거나, 데이터의 특성에 비해 모델이 너무 복잡한 경우 발생한다.
- 매개변수가 많고 표현력이 높은 모델을 사용할 때
- 학습 데이터가 적을 때
-
일반적인 해결책
- 모델이 학습 데이터에 비해 과하게 복잡해서 발생 가능. 모델을 간단하게 만들어 해결 (Hidden layer 크기 줄이기, Input layer 크기 줄이기 등)
- Dropout: 학습을 할 때 일부 뉴런을 끄고 학습.
- L1/L2 정규화(L1/L2 regularization)
- 학습 데이터 늘리기(data augmentation)
-
Test Set Accuracy가 증가하다가 감소하는 경우
- 학습 데이터가 부족한 경우, 학습 데이터를 늘리는 것이 근본적 해결책
- 이미지 같은 경우 변형(비율 바꾸기, 가리기, 회전 등)을 통해 데이터를 늘릴 수 있음
-
Training Set Accuracy가 100%에 가깝지만 Test Set Accuracy가 상당히 낮은 경우
- 학습 데이터가 편향되어 있지 않은지 확인. (예: 특수한 경우에 해당하는 데이터를 가지고 일반적 문제를 해결하는 경우)
- 이미 있는 데이터도 제대로 학습을 못 한 상태로 Accuracy가 낮다.
- 심지어 Training set Accuracy보다 Test Set Accuracy가 높은 경우도 있다.
- 과소적합의 원인
- 학습 반복 횟수가 너무 적음
- 데이터의 특성에 비해 모델이 너무 간단함
- 데이터 양이 너무 적음
학습 반복 횟수가 많거나, 모델이 너무 간단한 것은 Overfitting과 반대되는 경우이다. 앞에 나온 원인부터 차근차근 해결하다보면 과대적합보다는 쉽게 해결이 가능하다.
- 논문으로 발표된 모델을 사용하는 것이 가장 쉽다.
- 그러나, 시행착오를 통해 모델을 만들어야 할 경우 Overfitting이 일어나는 모델을 만들고, 그 다음 튜닝하는 방법이 간단하다.
- Overfitting이 일어나는 모델 만들기: 매우 복잡한 모델 만들기. layer 수가 많고, layer의 크기도 큰 모델.
- Overfitting이 덜 일어나게 튜닝하는 방법은 경험적 방법에 의존한다.
- 데이터 양이 적다면 데이터 양을 늘려본다. 데이터를 늘리는 것이 불가능하다면, 기존 데이터를 변형해서 새 데이터를 만든다.
- 적절한 전처리가 되어 있는지 점검한다. 데이터 종류(텍스트, 이미지, 음성 등)에 따라 전처리 방법이 상이함에 유의.
- 학습 데이터가 편향되어 있는 것은 아닌지 확인한다. 특별한 경우의 데이터를 가지고 일반적인 문제를 해결하는 모델을 만드는 것은 거의 불가능하다.
- 밑바닥부터 시작하는 딥러닝 6장
- 딥러닝 학습 기술들: 딥러닝 학습 기법(역전파)나 활성화 함수 설명
- Machine Learning 스터디 Overfitting