이전 강의에서 input을 normalizing 해줌으로써 feature들의 range를 유사하게 만들어 최적화를 좀 더 쉽게 도와주어 학습을 좀 더 빠른 속도로 할 수 있음을 배웠다.
이와 비슷하게 Batch Normalization을 통해서 parameter 학습을 더 efficient하게 만들 수 있다.
1. Implement Batch Norm
: hidden unit value $z^{[l](i)}$ 의 평균 ($\mu$) 과 표준 편차 ($\sigma$)를 구해서 normalized $z^{(i)}_{norm}$를 얻는다.
그 다음 learnable parameter $\gamma$와 $\beta$를 통해 hidden unit values가 서로 다른 mean과 variance를 갖도록 할 수 있다.

우리는 보통 mini-batch를 이용해서 학습을 하기 때문에, mini-batches를 사용할 때 BN를 아래와 같이 사용할 수 있다.

2. Why does Batch Norm work? (BN의 효과)
(1) Batch Norm을 활용해서 data distribution의 변화 (covariate shift)에 대해 NN가 강건해지도록 돕는다.
Hidden unit value $z$의 값이 어느정도 바뀌더라도 BN을 이용해서 평균과 분산을 어느정도 일정하게 만들어주기 때문이다.
(즉, 이전 layer에서 parameter가 update 되면서 다음 layer에 주는 영향의 정도를 제한시켜준다. --> 각 layer가 좀 더 독립적으로 학습 가능하게 한다.)
(2) 다른 부차적인 효과로는 regularization이 있다.
각 mini-batch는 mini-batch 각각의 mean/variance로 scaling 되는데, 이는 $z^{[l]}$에 약간의 noise를 추가해주는 효과를 가진다. (hidden unit에 noise를 더해줌으로써, downstream hidden unit이 특정 hidden unit에 의존하지 않게 함) 따라서 이는 dropout과 유사한 효과를 갖는다. 즉, regularization 효과가 있다.
*참고: mini-batch size가 클 수록, 일반화 효과는 줄어든다. (mini-batch size가 커지면 mini-batch 덩어리의 개수가 줄어들기 때문에 noise를 더해주는 효과가 덜해진다.)
3. Batch Norm at test time
: test time에는 training time에서 추정된 mini-batch 각각의 $\mu$와 $\sigma$를 가지고 exponentially weighted average를 취해서 추정한다.
즉, $\mu^{\{1\}[l]}$, $\mu^{\{2\}[l]}$, ... 를 exponentially weighted average value를 활용한다. (variance도 마찬가지!)
'ML || DL > 이론' 카테고리의 다른 글
| [Coursera] Improving Deep Neural Networks: HyperparameterTuning, Regularization and Optimization 수료증 (0) | 2023.09.20 |
|---|---|
| [Coursera] DLS_C2W3: Multi-class Classification (0) | 2023.09.18 |
| [Coursera] DLS_C2W3: Hyperparameter Tuning (0) | 2023.09.17 |
| [Coursera] DLS_C2W2: Optimization Algorithms (0) | 2023.09.15 |
| [Coursera] DLS_C2W1: Practical Aspects of Deep Learning (0) | 2023.09.09 |