ref
[Deep Learning] Batch Normalization (배치 정규화)
app_deep_learning/t81_558_class_04_4_batch_norm.ipynb at main · jeffheaton/app_deep_learning
◾배경지식
🔸SGD
🔸Interval Covariance Shift
🔸Whitening
◾BatchNormalization
🔻개요
🔸등장
- 기존 Gradient Descending 방식은 Gradient Vanishing 또는 Exploding 문제가 있다. 즉, 미분값이 너무 작으면 국소 최적화(local minimum), 미분값이 너무 크면 학습이 이루어지지 않는 문제점이 있다.
- 이러한 문제점들을 해결하기 위해 다양한 활성화함수(sigmoid, ReLU, tanh,…)를 사용하는 방법, 가중치 초기화를 신중하게 하는 방법, learning rate를 작게하는 방법 등이 고안되었다.
🔸BatchNormalization의 필요성
- Local Optimum 문제를 해결, 네트워크 안정화를 위한 feature scaling을 위해 정규화 작업이 필요하다.
- 신경망(network)의 각 레이어마다 activation에 의해 입력값의 분산이 달라지는 Internal Covariance Shift 문제(논문 참고)를 해결하기 위해 필요하다.
- Covariate Shift : 이전 레이어의 파라미터 변화로 인하여 현재 레이어의 입력 분포가 바뀌는 현상
- Internal Covariate Shift : 레이어를 통과할 때마다 Covariate Shift가 발생하면서 입력의 분포가 계속해서 바뀌는 현상
- Internal Covariance Shift 문제를 해결하기 위해 일반적인 표준 정규화(평균0, 표준편차1인 분포로 정규화)인 Whitening 을 떠올릴 수 있으나 이는 또다른 문제를 야기
- 모든 입력값을 표준 정규화시키면 편향(bias)과 같은 일부 변수들의 학습이 이루어지지 않는다. 참고한 블로그의 예를 빌리면, Y=WX+b 를 변형시켜 Z=Y-E(Y) 처럼 변형시키면 b(편향)의 영향은 없어진다. 이런 whitening은 loss 값을 변화시키지 않고 특정 변수가 계속 커지는 문제를 야기한다.
🔻Algorithm