About me
home
Portfolio
home
🐥

Batch Normalization 정리

정의 :미니배치별로 사전 정규화 처리를 수행하는 기법이다. 데이터셋 전체를 정규화하는 것보다 학습에 사용하는 미니배치별로 정규화하기 때문에 학습하는 과정 전체에서 효과가 나타난다.
등장배경 : Plain Network(단순히 layer을 깊게 쌓음)에서 발생하는 Vanishing Gradient(기울기 소실), Overfitting(과적합) 등의 문제를 해결하기 위해 Batch Normalization 기법을 사용한다.
사용방법 : 미니배치에 있는 값에서 평균을 빼고 variance로 나눠준다. (정말 중요하며 웬만하면 사용하는 게 좋다. 모든 논문에서 사용한다!)
효과 : BN는 optimization landscape를 부드럽게 만드는(Smoothing) 효과가 있다. 초기에는 BN을 통해 ICS(internal covariate shift)를 줄일 수 있었기 때문에 성능이 좋아진것인 줄 알았지만, 후속 연구에 의하면 BN의 효과와 ICS의 감소는 큰 상관이 없다는 주장이 제기됨.
Batch1Batch_1 ~ BatchNBatch_N 를 다 돌면 1 epoch 이다.
Transformer에서는 BN 대신 Layer Normalization이 쓰인다

Internal Covariant Shift

Feature의 scale이 다르면 gradient descent를 했을 때, learning rate에 대해 weight 마다 반응하는 정도가 달라지게 된다.
정규화를 해주면 feature들이 동일한 scale이 되어 learning rate 결정에 유리해진다.
γ는 스케일링 역할,  β는 bias 이다. 둘다 backpropagation을 통해 학습하게 되는 파라미터이다.
γ,β을 해주는 이유는 정규화하고 바로 ReLu를 쓰면 음수 부분이 다 0이 되어버리는 문제가 생긴다.
그래서 γ,β를 계산해줘서 ReLU가 적용되더라도 음수 부분이 0으로 되는 것을 방지해준다.
또한 활성화 함수가 Sigmoid 경우에는 큰 양수나 음수가 되면 1 또는 0으로 수렴해 버리기 때문에 의미가 없어져 버려 Vanishing Gradient 문제가 발생한다. → 0 근처에서 의미가 있다.
그러나 추론과정에서는 고정값인 평균과 분산(μ, σ)을 사용한다.(안 바뀜)