[Andrew Ng] 6-1. Normalizing Activations in a Network
Batch Nomalization
Batch size가 5라고 하고 Relu에 모든 값이 양수로 들어가거나 음수로 들어간다면?
- 모든 값이 양수로 들어가면 Vanishing gradient는 해결되지만, 비선형성을 확보 못 함.
- 모든 값이 음수로 들어가면 Vanishing gradient
Batch Normalization은 activation에 입력되는 값을 Normalization하는 것이다.
μ=m1i∑z(i)
σ2=m1i∑(z(i)−μ)2
znorm(i)=σ2+ϵz(i)−μ
z^(i)=γznorm(i)+β
Batch Nomalization의 효과
Vanishing gradient를 예방하면서 비선형성을 확보할 수 있다.
- 들어오는 입력값에 대해 어디로 얼만큼 세게 뿌릴지를 학습 시키는 것
- 해당 node에 대해 nonlinearity를 얼마나 살리면서 vanishing gradient를 얼마나 해결할지, AI가 알아내는 것.
- W, b를 사용하여 선형결합인 z를 계산하고 z를 Batch normailzation을 함.
Internal Covariance shift에 대해 강력해진다.
- Covariance shift란?
- 학습할 때와 테스트할 때, 입력 데이터의 분포(P(x))는 변하지만, 목표 함수(P(y|x))는 변하지 않는 경우.
- 학습 때는 밝은 낮 사진만 보고 고양이를 분류하는 모델을 학습시켰는데, 테스트 때는 어두운 밤 사진이 들어온다면 입력 분포는 바뀐 것이다. 이런 상황이 covariate shift이다.
- Internal Covariate Shift란?
- 딥러닝 내부에서 일어나는 covariate shift이다. 네트워크가 깊어질수록, 앞쪽 레이어가 바뀌면, 그 영향을 뒤쪽 레이어가 받게 되며 입력 분포가 계속 변하게 됨. 즉, 각 레이어의 입력 분포가 학습 도중 계속 바뀌는 현상.
- Batch Normalization은 각 층에 전달되는 입력값의 분포를 정규화하여, 층 간에 전달되는 데이터의 분포 변화가 네트워크 학습에 미치는 영향을 줄여준다.
Overfitting 안되도록 도와준다.
- Batch Normalization은 Mini batch의 평균과 분산을 계산하여 입력값을 정규화 함.
- Mini batch에서 계산된 평균관 분산은 전체 데이터의 일부만을 기반으로 추정된 값이기 때문에 잡읍을 포함할 수 있다. 이러한 잡음은 모델이 과도하게 특정 패턴에 의존하지 않도록 도와준다.
- Batch size가 큰 경우에는 이 효과가 상대적으로 약해진다.
출처 및 참고 자료