본문으로 바로가기

Avoiding Overfitting

1. Dropout

- Training을 진행할 때마다 매 Batch마다 Layer 단위로 일정 비율만큼의 Neuron을 꺼뜨리는 방식

- Test / Inference 단계에서는 Dropout을 걷어내어 전체 Neuron이 살아있는 채로 Inference 진행해야 함

- 랜덤하게 Neuron을 꺼뜨려 학습을 방해함으로써 모델의 학습이 Training data에 편향되는 것 막아줌

- 동일한 데이터에 대해 매번 다른 모델을 학습시키는 것과 마찬가지로 효과를 발생시켜 일종의 Model Ensemble 효과를 얻을 수 있다

- 가중치 값이 큰 특정 Neuron의 영향력이 커져 다른 Neuron들의 학습 속도에 문제를 발생시키는 Co-adaptation 회피할 수 있도록 함

 

 

2. Batch Normalization

- Input data에 대해 Standardization과 같은 Normalization을 적용하면 전반적으로 모델의 성능이 향상됨

- 데이터 내 Column들의 Scale에 model이 민감해지는 것 막음

- 신경망의 경우 Normalization이 적용되지 않으면 최적의 cost 지점으로 가는 길 빠르게 찾지 못함

- Activation function 적용하기 전에 Batch Normalization 먼저 적용

 

https://medium.com/hyunjulie/batch-normalization-simple-summary-d6a873960e5c

 

https://eehoeskrap.tistory.com/430

진행 과정

1) 각 Hidden layer로의 Input data에 대해 평균 0, 분산 1 되도록 Normalization 진행

2) Hidden layer의 출력값(Output)이 비선형성 유지하도록 Normalization 결과에 Scaling & Shifting 적용

3) Scaling & Shifting 적용 결과를 Activation function에 전달한 후 Hidden layer의 최종 output 계산

 

 

- 학습 속도 향상

- 학습 결과 향상, 가중치 초기값에 크게 의존하지 않음 (매 layer마다 정규화 진행하기에 초기화의 중요도 감소), 오버피팅 억제

 

 

 

* 전체적인 진행:

Linear Combination -> Batch Normalization -> Activation Function -> Dropout