Layer Normalization
04 Jul 2017 | ml normalizationLayer Normalization
Introduction
- Batch Normalization
- input statistics의 running average를 필요로함
- RNN의 경우 time-step마다 다른 statistics를 적용해야함
- distributed training에서는 minibatch가 너무 작아서 적용이 힘듬
Background
- $a_i^l$: l번째 layer의 i번째 hidden unit
- $w_i^l$: parameter
- $b_i^l$: bias parameter
라고 하면
다음과 같이 수식화할 수 있다.
문제점: 한 layer의 weight들에 대한 gradient는 전 layer의 output에 높게 관여된다.
internal covariate shift
: 그런데 전 layer의 output이 계속 distribution이 바뀌니까 트레이닝이 느리다. BN 설명 블로그
그래서 Batch-normalization에서는 위에서 말한 internal covariate shift를 줄이기 위해
- batch에 대해서 각 dimension마다 mean, variance를 구하여 normalization하고 (각 dim은 independent하다고 가정)
- linear transform을한다. (실제 independent하진 않을테니..)
- 그리고 linear transform도 같이 트레이닝
근데 위에서 $\sigma$와 $\mu$는 batch의 distribution으로 근사시켜서 구하는데, 이는 실제 distribution과 다르다. 그래서 작은 batch보다는 큰 batch가 좋다.
Layer Normalization
- hidden unit들에 대해서 mean과 variance를 구함
- batch size에 관계없으므로
- training, test시에도 따로 구할 것이 없음
- RNN에도 좋음