만약 동일한 점들이 주어지고 이 점을 대표할 수 있는 함수(곡선)을 추정하는 경우에서, 가운데가 optimize하다고 한다면
- 왼쪽은 지나친 단순화로 인해 에러가 많이 발생해 underfitting이라 합니다.
- 오른쪽은 너무 정확하게 표현한 나머지 training data에 대한 정확도는 좋지만 실제 test에서는 에러가 날 수 있는 상황이라 overfitting이라 합니다.
모델은 과대적합(Overfitting)과 과소적합(Underfitting)이 발생하지 않도록 설계하는 것이 중요합니다.
1. Overfitting이란?
Overfitting은 학습 데이터(Training Set)에 대해 과하게 학습된 상황입니다. 따라서 학습 데이터 이외의 데이터에 대해선 모델이 잘 동작하지 못합니다. 학습 데이터가 부족하거나, 데이터의 특성에 비해 모델이 너무 복잡한 경우 발생합니다. Training Set에 대한 loss는 계속 떨어지는데, Test Set에 대한 loss는 감소하다가 다시 증가합니다.
1-1. 원인: Model Capacity
Model Capacity는 모델이 더 복잡한 형상을 나타낼 수 있는 정도를 의미합니다. MLP에서 Model Capacity를 늘리려면 layer를 더 deep하게 쌓거나 layer당 hidden unit 개수를 늘리면 됩니다. 하지만 model capacity를 무한정 늘리면 overfitting이 발생합니다.
모델의 error나 loss를 의미하는 loss는 아래와 같이 두 개로 나눌 수 있습니다.
- True Risk: 이상적으로 가져올 수 있는 모든 데이터에 대해 계산한 error, loss. 앞으로 어떤 데이터가 들어올지 모르므로, 실제로 줄여야 하는 것은 True Risk입니다.
- Empirical Risk: 이상적으로 가져올 수 있는 데이터 중 일부 데이터만 가지고 계산한 error, loss입니다. 모든 데이터를 가져올 수는 없기 때문에 구할 수 없는 True Risk 대신, Empirical Risk를 계산합니다.
overfitting을 방지하려면 학습 데이터에 적합한 Model Capacity를 가지도록 모델을 설계할 필요가 있습니다. 예를 들어 dataset이 Train set만 있다고 해 봅시다. 이 데이터로 Model Capacity가 매우 높은 모델을 학습하면, 모델이 Train set을 외워버리는 것으로 학습될 수 있습니다. 모델이 Train set을 외웠기 때문에, 다른 데이터가 들어오면 올바른 결과를 주지 못할 것입니다.
이런 문제가 발생하는 것을 확인하기 위해 train에 사용하지 않는 test set을 두고, test set에 대해서도 모델이 잘 동작하는지 확인합니다. Train sample의 loss는 계속 감소하는데, Test sample의 loss만 계속 증가한다면 overfitting이 발생한다고 볼 수 있습니다.
1-2. 해결책
Overfitting이 발생했을 때 사용할 수 있는 일반적인 해결책은 아래와 같습니다.
- Model Capacity 낮추기: 모델이 학습 데이터에 비해 과하게 복잡하지 않도록, hidden layer 크기를 줄이거나 layer 개수를 줄이는 등 모델을 간단하게 만듭니다.
- Dropout: 학습을 할 때 일부 뉴런을 끄고 학습합니다.
- L1/L2 정규화(L1/L2 regularization)
- 학습 데이터 늘리기(data augmentation)
Test Set Accuracy가 증가하다가 감소하면 학습 데이터가 부족한 경우로 볼 수 있습니다. 학습 데이터를 늘릴 필요가 있습니다. 이미지 같은 경우 이미지의 비율을 바꾸거나, 일부분을 가리거나, 회전하는 것으로 데이터를 늘릴 수 있습니다.
Training Set Accuracy가 100%에 가깝지만 Test Set Accuracy가 상당히 낮은 경우가 있습니다. 학습 데이터가 편향되어 있지 않은지 확인할 필요가 있습니다. 특수한 경우의 데이터를 가지고 일반적 문제를 해결하는 경우가 해당될 수 있습니다.
2. Underfitting
Underfitting(과소적합)은 이미 있는 Train set도 학습을 하지 못한 상태를 의미합니다. Overfitting과 반대되는 상태를 의미합니다. Overfitting이 바생하는 이유는 아래와 같습니다.
- 학습 반복 횟수가 너무 적음
- 데이터의 특성에 비해 모델이 너무 간단함
- 데이터 양이 너무 적음
3. Reference
- 밑바닥부터 시작하는 딥러닝 6장
- 딥러닝 학습 기술들: 딥러닝 학습 기법(역전파)나 활성화 함수 설명
- Machine Learning 스터디 Overfitting
'Learning > Tuning' 카테고리의 다른 글
Regularization : L1, L2 regularization (0) | 2020.04.12 |
---|---|
Batch Normalization (0) | 2020.04.12 |
Dropout (0) | 2020.04.12 |
Regularization (0) | 2020.04.12 |
Hyperparameter (0) | 2020.04.12 |