Loading [MathJax]/jax/output/CommonHTML/jax.js
 

batch normalization 개념 간단하게

internal covariate shift 현상을 해결하기 위해 등장

 

layer를 지날수록 layer의 parameter의 변화에 따라 dataset의 분포가 변화한다고 생각한 것이다.

 

etc-image-0

 

 

위와 같이 data가 layer를 지나가면서 분포가 변화한다고 생각한 것이 covariate shift

 

그런데 진짜있는 것인지는 논란이 많다

 

batch normalization은 각 layer마다 batch set을 normalization하여 분포의 변형을 막겠다는 것이다.

 

etc-image-1

 

 

batch의 평균과 분산을 구해서 각 입력값을 normalize 시킨다

 

마지막 γ,β는 normalize하면 activation의 nonlinearity를 잃어버리기 때문에 이를 조정하기 위함이고

 

학습해야하는 parameter라고 한다.

 

etc-image-2

 

 

 

보통 batch normalization은 활성화함수(그림에서 ReLU) 앞에 배치를 함

 

위와 같이 신경망에 포함되기때문에 backpropagation으로 γ,β는 학습이 가능함.

 

etc-image-3
backpropagation을 통한 ,학습하는 방법

 

 

 

test할 때는 batch normalization을 사용하는 방법이 다르다.

 

train 할 때 batch마다 평균과 분산이 다르기 때문에

 

각 batch마다 평균과 분산을 구한 것을 sample mean, sample variance이라 하고 이것을 따로 저장해놓고

 

나중에 evaluation 할 때는 저장해놓은 sample mean, sample variance의 각각 평균을 구하여 <이것을 learning mean, learning variance라고 함>이것을 normalization 용으로 사용한다.

 

covariate shift에서는 논란이 많다지만, batch normalization을 활용하면 신경망 학습에 효과적이라는 것은 분명한 사실이다

 

 

 

 

https://m.blog.naver.com/laonple/220808903260

 

[Part Ⅵ. CNN 핵심 요소 기술] 1. Batch Normalization [1] - 라온피플 머신러닝 아카데미 -

     Part I. Machine Learning  Part V. Best CNN Architecture  P...

blog.naver.com

 

728x90