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 먼저 적용
진행 과정
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
'멋쟁이 사자처럼 AI SCHOOL 5기 > Today I Learned' 카테고리의 다른 글
[7주차 총정리] 케라스 콜백 함수, Callbacks API (ModelCheckpoint, EarlyStopping) (0) | 2022.04.29 |
---|---|
[7주차 총정리] TF2 Classification (tensorflow.keras) (0) | 2022.04.29 |
[7주차 총정리] Gradient Descent 활용한 신경망 학습 과정 (Neural Network Optimization) (0) | 2022.04.28 |
[7주차 총정리] 딥러닝, 활성화 함수 (Activation function) 기초 총정리 (0) | 2022.04.27 |
[7주차 총정리] 정형데이터를 위한 인공신경망 모델, TabNet 기초 정리 (0) | 2022.04.27 |