본문 바로가기

딥러닝 & 머신러닝/딥러닝 지식

오버피팅일 경우 대처 방법? Dropout, Regularization이란?

# 오버피팅일 경우 어떻게 대처해야 할까요? Dropout의 효과는? Regularization이란?

 

- 더 다양하고 많은 훈련 데이터를 모은다. 그러면 자연스럽게 많은 데이터의 feature들을 볼 수 있다. 한 종류의 데이터를 다양하게 불린다는 측면에서 Data Augmentation도 비슷한 방법.

 

- 모델의 크기를 축소한다. 즉 모델에 있는 학습 parameter(즉, 가중치)의 수를 줄이는 것. 너무 많은 parameter가 있으면 훈련 데이터에 대해 너무 잘 학습되어서 오버피팅이 발생하므로. 이때 parameter 수는 layer의 수와 각 layer의 노드 수에 의해 결정됨. 

 

- Dropout을 추가한다. Dropout을 적용하면 훈련하는 동안 무작위로 층의 일부 출력값을 제외시킨다(0으로 만든다). 노이즈를 추가함으로써 훈련 데이터에 대한 너무 좋은 기억을 강제로 삭제시키는 것. 이때 Dropout은 모델 앙상블과 비슷한 효과를 띤다. 모델 앙상블이란 비슷한 모델 여러 개를 한번에 훈련 후 추론해서, 그 결과의 평균값을 최종 정답으로 간주하는 것이다. 이때 Dropout은 훈련 때마다 랜덤하게 노드를 삭제하는 것이므로, 매 훈련마다 조금씩 다른 모델을 훈련하는 것으로 볼 수 있다. 따라서 Dropout은 모델 앙상블과 비슷한 효과를 가진다.

 

- Regularization을 추가한다. Regularization은 가중치의 성장을 제한하는, 즉 가중치를 감소시키는 방향으로 그 효과가 나타난다. 가중치의 성장을 제한한다는 것은 기존 학습에 큰 영향을 끼칠 수 있는 데이터를 '지양'하겠다는 의미. 따라서, 데이터 셋에서 볼 수 있는 일반적인 패턴이 아닌, 몇몇 독특하면서 희소한 패턴을 가지는 데이터에 대한 영향을 덜 받겠다는 것이다. 그러한 데이터의 대표적인 예시로 노이즈와 이상치가 있다. Regularization의 대표적인 예시로 L1 규제와 L2 규제가 있다. 두 Regularization 방법 모두 loss function에 가중치의 크기를 포함시키는 것이다.

 

* L1 규제: 가중치의 크기에 상관없이 대상 가중치에서 상수값을 뺀다. 대체적으로 불필요한 가중치의 값을 0으로 만들게 됨. 즉, 중요한 가중치만을 취하기 때문에 sparse한 모델을 만드는데에 적합하다.

 

* L2 규제(weight decay): 가중치의 값을 고려해서 대상 가중치에서 값을 뺀다. 즉, 어느 정도 튀는 값에 대응할 수 있지만, 그렇다고 가중치의 값을 0으로 만들지는 않는다. 따라서 이상치나 노이즈가 있는 데이터에 대한 학습을 할 때 좋다. 특히 선형 모델의 일반화에도 좋다.