반응형

[과적합 줄이는 방법] Early Stopping, Dropout, Batch Normalization

 

 

Appendix. 한글 

과적합을 줄이는 방법

1. Early Stopping

Training Data : 학습만을 위하여 사용하는 data
Validation Data : Hyper Parameter를 수정하기 위해 사용하는 data
Test Data : 최종 검증을 위한 데이터

Early stopping을 사용하여 Validation Loss 값이 최소가 되는 지점에서 자동으로 학습을 중단하도록 하는 방법이다.

2. Drop Out
- dropout은 학습 시에 뉴럴 네트워크 간의 연결을 일정 비율만큼 끊은 후, 학습하는 방법이다.
- 일반적으로 0.5 확률로 연결을 끊는다.
- dropout을 사용하면 여러개의 신경망을 합치는 앙상블과 같은 효과를 얻을 수 있다.


3. Batch Normalization
Vanila Gradient Descen는
한번 update를 하기 위하여 모든 데이터를 학습하여 경사하강을 수행함
batch size 개수 만큼 gradient 업데이트를 수행한다.
이것을 미니배치 학습법이라고 한다.

배치 정규화가 필요한 이유는 Internal Covariate Shift를 해결하기 위함이다.
Internal Covariate Shift 란
학습이 진행됨에 따라 입력 데이터의 분포가 달라지게 된다.
이러한 현상을 Internal Covariance Shift라고 한다.
이러한 현상을 해결하기 위하여 Fully Connected Layer와 Relu 사이에 Batch Normalization을 넣으며, 이는 mini batch 학습을 한다는 가정하에 수행된다.
각 배치별로 발생하는 평균과 분산을 이용하여 노말라이제이션을 수행하는 것이다.
학습 단계에서의 batch normalization은 각 층이 동일한 scale로 학습이 되었기 때문에 발산과 수렴이 덜하게 된다.
주로 발산과 수렴은 층의 입력과 출력의 차이가 많이 발생하여 gradient descent 시 발산 혹은 수렴이 되기 때문이다.
또한 정규화 후, 스케일링을 곱하고 편향을 더해준다. 그 이유는 relu를 사용하게 될 경우 0 이하의 값은 모두 사라지기 때문에 의미 있는 정보가 사라지는 것을 막기 위하여 스케일링과 편향 값이 추가되었다.
추론 단계에서의 batch normalization도 비슷하다.
추론 단계에서는 Training 단계에서 이동 평균으로 미리 계산한 평균과 분산 값을 가져와 사용한다. 이 값을 기반으로 Batch Noramlization 하여 추론을 한다.


반응형

+ Recent posts