Broccoli's House

#5-(4) 학습 관련 기술 : 오버피팅 억제 본문

공부/딥러닝

#5-(4) 학습 관련 기술 : 오버피팅 억제

김콜리 2018. 3. 16. 17:11

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




학습 관련 기술 : 오버피팅 억제



  • 오버피팅
 - 오버피팅(과대적합, Overfitting) : 머신러닝에서 과대적합(Overfitting)은 큰 문제 중에 하나이다. 과대적합이란 머신러닝(여기서는 신경망) 모델이 너무 과한 학습으로 인해 훈련 데이터에만 지나치게 적응되어 그 이외의 시험 데이터에 대해서는 제대로 대응하지 못하는 것을 말한다. 

 - 머신러닝에서는 다양한 상태에 대하여 일반적인 성능을 내는 모델을 지향하므로, 훈련 데이터에 없는 상황이 주어지더라도 올바른 결과를 내는 모델이 더 좋은 모델이다. 따라서 복잡하고 표현력이 좋은 모델을 만들면서도, 과대적합을 억제하는 기술이 중요해지는 것이다.



 - 위와 같은 모델이 과대적합된 모델이다. 훈련 데이터 세트에는 거의 100%에 가까운 정확도를 보여주지만, 시험 데이터 세트에서는 그렇지 못하다. 이러한 과대적합은 매개변수가 많고 표현력이 높은 모델(층이 깊은 신경망)이거나, 훈련 데이터가 적을 때 발생한다.  



  • 가중치 감소

 - 가중치 감소(Weight Decay) : 훈련 데이터가 매우 많다면 과대적합을 줄일 수 있지만, 현실적인 이유로 그러지 못하는 경우가 있다. 이런 상황에서 과대적합을 줄이도록 하는 여러 기법 중 하나가 바로 가중치 감소이다. 이것은 학습 과정에서 큰 가중치에 대해서 그에 상응하는 큰 패널티를 부과하여 과대적합을 억제하는 방법이다. 과대적합은 가중치 매개변수의 값이 커서 발생하는 경우가 많기 때문이다.


 - 가중치 감소에는 규제(Regularization)가 이용된다. 규제란 가중치의 절댓값을 가능한 작게 만드는 것으로, 가중치의 모든 원소를 0에 가깝게 하여 모든 특성이 출력에 주는 영향을 최소한으로 만드는 것(기울기를 작게 만드는 것)을 의미한다. 즉, 규제란 과대적합이 되지 않도록 모델을 강제로 제한한다는 의미이다. 규제에는 L1, L2규제가 있다.


 - L2 규제 : 각 가중치 제곱의 합에 규제 강도(Regularization Strength) λ를 곱한다. 그 값을 손실함수에 더한다. λ를 크게 하면 가중치가 더 많이 감소되고(규제를 중요시함), λ를 작게 하면 가중치가 증가한다(규제를 중요시하지 않음). 가중치를 갱신할 때, 손실함수의 미분값을 이전 가중치에서 빼서 다음 가중치를 계산한다. 따라서 가중치가 크면 손실 함수가 커지고, 다음 가중치가 크게 감소된다. 


 - L1 규제 : L1 규제는 가중치의 제곱의 합이 아닌 가중치의 합을 더한 값에 규제 강도(Regularization Strength) λ를 곱하여 오차에 더한다. 이렇게 하면 L2 규제와는 달리 어떤 가중치는 실제로 0이 된다. 즉, 모델에서 완전히 제외되는 특성이 생기는 것이다. 일부 계수를 0으로 만듦으로써 모델을 이해하기 쉬워지고, 모델의 가장 중요한 특성이 무엇인지 드러나는 것이다. 그러나 L2 규제가 L1 규제에 비해 더 안정적이라 일반적으로는 L2규제가 더 많이 사용된다.




 - 위의 그래프는 가중치 감소 기법을 적용한 모델의 훈련 데이터 세트와 시험 데이터 세트 성능을 비교한 것이다. 과대적합된 모델의 그래프와는 다르게, 훈련 데이터에 대한 성능이 감소하여 시험 데이터와 훈련 데이터 세트에 대한 차이가 줄어든 것을 볼 수 있다. 과대적합이 억제된 것이다.




  • 드롭아웃


 - 드롭아웃(Dropout) : 위에서 설명한 가중치 감소 기법은 간단하게 구현할 수 있고, 어느 정도 지나친 학습을 억제할 수 있다. 그러나 신경망 모델이 복잡해지면 가중치 감소만으로는 대응하기 어려워진다. 이럴 때 사용하는 것이 드롭아웃(Dropout)이라는 기법이다. 


 - 드롭아웃 기법은 신경망 모델에서 뉴런을 임의로 삭제하면서 학습하는 방법이다. 학습 시에 은닉층(Hidden Layer)의 뉴런을 무작위로 골라 삭제한다. 삭제된 뉴런은 위의 그림과 같이 신호를 전달하지 않는다. 훈련 때에는 데이터를 흘릴 때마다 삭제할 뉴런을 무작위로 선택하고, 시험 때는 모든 뉴런에 신호를 전달한다. 단, 시험 때는 각 뉴런의 출력에 훈련 때 삭제한 비율을 곱하여 출력한다.


 - 즉, 뉴런을 임의로 삭제하여 적은 수의 뉴런만으로 지정된 레이블을 맞추도록 훈련하는 것이다. 이렇게 훈련된 뉴런들은 테스트 시에 전체 뉴런이 활성화되면, 일반적으로 드롭아웃 없이 학습된 뉴런에 비해 더 정답을 잘 찾는다는 것이 드롭아웃의 아이디어이다. 다만, 적은 수의 뉴런만으로 학습을 해야하므로 학습 시간이 오래걸린다는 단점이 존재한다.




 - 좌측 그래프는 드롭아웃없이 학습한 모델의 성능을, 오른쪽 그래프는 드롭아웃을 적용한 모델의 성능을 나타낸다. 그림과 같이 드롭아웃을 적용하니 훈련 데이터와 시험 데이터에 대한 정확도 차이가 준 것을 볼 수 있다. 이처럼 드롭아웃을 적용하면 오버피팅을 억제할 수 있다.

Comments