batch normalization 개념 간단하게

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

 

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

 

 

 

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

 

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

 

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

 

 

 

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

 

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

 

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

 

 

 

 

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

 

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

 

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

 

TAGS.

Comments