Overfitting, Strategies to prevent overfitting 과적합과 과적합 문제를 해결하기 위한 방법

모델의 과적합 문제를 파악하는 법 와 이를 해결하기 위한 방법들을 정리합니다.

How to recognize Overfitting

Generalization curve

Generalization curve : Loss on training set and validation set.

Training loss gradually decreases, but validation loss eventually goes up : The model is overfitting to the training set 일반화 커브는 모델의 훈련 세트에 대한 손실은 점차 감소하는 양상을 보이지만, 검증 세트에 대한 손실은 결국 증가하는 양상을 보인다. 이는 모델이 훈련 데이터에 과적합되었음을 의미한다.

Bias & Variance

Train set/Test set error 훈련 세트와 검증 세트에 대한 오차를 통해 알고리즘이 Bias / Variance 편향과 분산 문제를 가지고 있는 지도 파악할 수 있다. (이전에는 _bias-variance trade-off_에 대한 논의가 있었지만, 최근에는 두가지 동시에 줄일 수 있게 되었다.)

  • Train set Error & Bias : High Bias → Underfitting
    • train set error를 통해 알고리즘이 train set에 얼마나 적합한지, bias 문제가 존재하는 지 확인할 수 있다.
  • Train set error ⇒ Test set error의 차이 & Variance : High Variance → Overfitting
    • 오차가 얼마나 커지는 지에 따라 variance 문제가 존재하는 지 확인 할 수 있다.

Example

error 1. 높은 분산 (Overfitting) 2. 높은 편향 (Underfitting) 3. 높은 편향 & 높은 분산 4. 낮은 편향 & 낮은 분산
train set error 1% 15% 15% 0.5%
dev set error 11% 11% 30% 1%
  • 2,3 모두 훈련데이터에서도 성능이 좋지 않음 ⇒ high bias
  • optimal(Bayes) error가 0이라는 가정하, 4 가 최적의 성능이라 판단할 수 있다.

Strategies to prevent overfitting

High Variance, Overfitting 문제가 있으면, 가장 처음 시도해야하는 것은 정규화 Regularization이다. (Andrew ng 👨🏻‍💻 정규화를 제일 많이 사용한다고 한다!)

1. L1/ L2 Regularization 정규화

  • Add weight regularization, placing constraints on the quantity and type of information your model can store. 정규화는 모델이 저장하는 정보의 양과 유형에 제약을 부과함으로써, 모델이 적은 수의 패턴을 기억해 최적화 과정동안 일반화 가능성이 높은 중요한 패턴에 초점 두고 학습하도록 만든다.
    • 모델이 높은 분산을 보이는 경우 $w$가 많은 파라미터를 가진다. 이 경우 높은 차원의 벡터인 $w$항에는 정규화항을 추가하지만, 하나의 숫자인 $b$ 항에 대한 정규화는 보통 생략한다.

어떻게 제약을 부과할까? 비용함수에 Regularization Parameter 정규화 하이퍼파라미터 람다 λ항(regularization term)를 추가한다

비용함수 Cost Function

$J(w, b) =$$1\over m$$\sum^m_{i=1}L($$\hat {y(i)}, y(i))$

L1 Regularization
L2 Regularization

2. Dropout 드롭아웃 정규화

확률적으로 랜덤하게 몇 가지의 뉴럴만 선택하여 정보를 전달하는 과정입니다.