데이터 분석 일지

[Deep Learning] Overfitting (과적합) 본문

Lecture or Textbook Review/Deep Learning

[Deep Learning] Overfitting (과적합)

-ˋˏ ♡ ˎˊ- 2024. 2. 3. 16:15

1. Overfitting

 

training error가 generalization error에 비해 현격히 낮아지는 현상을 Overfitting(과적합)이라고 한다. 모델이 Training set에 너무 최적화되어 있어서 새로운 데이터에 대해 최적화되지 못하게 되는 것을 의미한다. 즉, 학습 데이터의 불필요한 bias, noise까지 모두 학습하는 것이다. 반대로 Underfitting은 모델의 capacity(depth & width)가 부족하여 training error가 충분히 낮지 않은 현상을 의미한다. Overfitting에서는 모델의 capacity를 줄이거나 과도하게 최적화된 파라미터를 사용해서는 안 되고, Underfitting에서는 모델의 capacity를 늘려 학습을 해야 한다. 아래의 그림은 각각 Underfitting과 Well Generalized와 Overfitting된 모델을 보여준다. 

 

Underfitting & Well Generalized & Overfitting

 

2. Validation Set

 

이러한 Overfitting 문제를 해결하기 위하여 Validation set을 활용하여 Generalization error를 추측한다. 먼저 Validation Set를 학습 데이터셋에서 정해진 비율로 random split하여 나누어준다. 모델은 training set에 대해서만 학습된 상태이므로, Validation set에 대해서 좋은 예측을 한다면 generalization이 잘 된 것이고, training error는 낮지만 validation error가 높다면, generalization을 잘하고 있지 않는 것이다. 따라서 매 epoch가 끝나면 validation error를 측정하여, 모델의 genralization을 평가해야 한다. 

 

모델의 최적 파라미터를 구할 때 Loss를 최소화하는 파라미터를 찾기 보다 Validation Loss를 최소화하는 파라미터를 찾아야 한다. 학습 데이터의 Loss만을 최소화하는 파라미터를 찾게 된다면, 이와 같은 상황에서 Overfitting이 발생하는 것이다. 

 

3. Test Set

 

Validation error를 최소화하기 위해서는 모델의 파라미터도 중요하지만 hyper-parameter 또한 굉장히 중요하다. hyper-parameter는 Validation set에서 Overfitting이 될 수 있다. 따라서 validation loss만을 보고 모델을 선택하는 것이 일반화된 모델을 선택하는 것과는 차이가 있다는 것이다. 이때 Validation set뿐만 아니라 Test set을 따로 두어 최종적인 모델의 성능을 평가할 수 있다. 따라서 training set과 validation set로 모든 파라미터들을 결정하고, 이를 Test set에 대입하여 모델을 결정하는 것이다. 

 

In other words, 

  • Training set: 파라미터 학습을 위한 데이터
  • Validation set: 파라미터의 일반화 검증 + hyper-parameter 튜닝을 위한 데이터
  • Test set: 파라미터의 일반화 검증 + hyper-parameter의 일반화 검증 + 알고리즘 비교 및 결정

 

4. Training Procedure

 

데이터를 학습하여 최적의 모델을 선택하는 과정은 아래와 같다. 

  1. 데이터 분할: 데이터를 training set와 validation set와 test set로 나눈다.
  2. 학습: training set에 대해 feed-forward하여 loss를 계산하고 gradient descent를 수행한다. 
  3. training error 계산: training set 평균 loss를 구한다. 
  4. 검증: validation set에 대해 feed-forward하여 loss를 계산한다. 
  5. validation error 계산: validation set 평균 loss를 구한다. 그 loss가 가장 작은 경우의 모델을 저장한다. 
  6. 테스트: test set에 대해 feed-forward하여 test set 평균 loss를 구한다. 가장 작은 loss의 값을 가지는 모델을 선택한다. 

2번부터 4번까지의 과정을 한 번 반복하는 것이 한 번의 epoch을 수행한 것과 같고, n번의 epoch 수행 후 가장 작은 loss를 가지는 모델을 선택하면 최적의 모델을 선택할 수 있다.