본문 바로가기

Data Science/Deep Learning

딥러닝 모델 성능 개선 | 과대적합과 과소적합의 문제 해결하기

모델을 만들기 전 목표 평가 지표를 정한다 → 그 목표의 정확도를 달성하면 모델을 선택

 

1. 어떤 모델을 선택해야하는가? 일반화된 모델

최적화 : trian data에서 최고의 성능을 얻으려고 파라미터들을 조정 = 모델을 학습

일반화된 모델 ⇒ 모델링을 통해 찾아야하는 목표

  • 훈련된 모델이 처음 보는 데이터에 대해서도 잘 추론할 수 있는 특징을 찾음 = 학습을 통해 일반화된 특징 찾음

2. 모델 성능 문제와 개선 방향 Summary

과소적합문제와 과대적합 문제를 해결하여 그 중간의 적절한 정확도를 가지는 ‘일반화된 모델’을 선택해야한다.

2.1 과소적합

  • 검증 결과 학습이 덜되어서(underfitting) Train set과 Validation 모두 성능이 안좋음
  • 모델이 Train dataset 크기에 비해 너무 단순한 경우
  • 개선 방법 ⇒ 학습을 더 많이 해서 모델을 복잡하게 만들자!
    • 모델의 복잡도를 높임
      • 모델 네트워크의 크기를 키운다 = Layer나 Unot 개수를 늘림
    • 데이터셋 종류에 맞는 Feature 추출 Layer를 은닉층에 사용한다
      • ex. Convolution layer, Recurrent layer 등
    • Epoch(또는 Step)의 수를 늘려 더 학습시킨다.
      • Train/Validation의 성능이 계속 좋아지는 상태에서 끝난 경우, 더 학습을 시킨다.

2.2 과대적합

  • 검증 결과 Train data set에 대해 학습을 과하게(overfitting)한 상태→ 필요없는 특징인 이상치(outlier)에 대해서도 학습
  • Train set에 대한 성능은 좋은데 Validation set에 대한 성능이 안좋음 → 처음보는 데이터에 대해서 예측 성능이 떨어짐
  • 모델이 Train dataset의 크기에 비해 너무 복잡한 경우
  • 개선방법 ⇒ 모델을 더 단순하게 만들자!!
    • 더 많은 data를 수집
      • 데이터를 추가 수집(시간/비용 증가)하거나 데이터 증강 upsampling 기법을 사용해 데이터 증식
    • 모델의 복잡도를 낮추고 단순한 모델을 만듦
      • 네트워크 모델의 크기 자체를 작게 만들거나
      • 모델의 학습을 규제하는 기법 사용
    • Epoch(또는 Step)의 수를 늘려 더 학습시킨다.
      • Validation의 성능 지표가 가장 좋았던 Epoch 까지만 학습시킨다.

3. 모델의 복잡도에 영향을 끼치는 요인

모델의 복잡도를 조절하여 과소적합과 과대적합을 해결하는 방법을 자세히 알아보자.
모델의 성능을 loss가 개선되는 추이를 보고 확인한다.

  1. Epoch 수와 과적합
  2. DNN 모델 크기 변경
  3. Dropout Layer 추가를 통한 Overfitting 규제
  4. Batch Normalization (배치정규화)
  5. Optimizer의 Learning rate(학습율) 조정을 통한 성능 향상
  6. Hyper parameter tuning

이후 게시글에서 자세한 내용과 예제를 알아보자