본문 바로가기
딥러닝관련/기초 이론

Batch Normalization

by 머리올리자 2020. 7. 6.

문제점 : Internal Covariate Shift

 

학습 시 현재 layer의 입력은 모든 이전 layer의 파라미터의 영향을 받게 되며,

망이 깊어짐에 따라 이전 layer에서의 작은 파라미터 변화가 증폭되어 뒷단에 큰 영향을 끼침

 

Covariate shift : 학습하는 도중에 이전 layer의 파라미터 변화로 인해 현재 layer의 입력의 분포가 바뀌는 현상 

 

Covariate의 해결책으로 제시된 것

 

Whitening

- Layer로 들어가는 입력을 whitening(평균 0, 분산 1로 바꿔준다)

- 하지만 단순하게 whitening만 한다면, whitening 과정과 parameter를 계산하기 위한 최적화 과정(backpropagation)과 무관하게 진행되기 때문에 특정 파라미터가 계속 커지는 상태로 whitening이 진행될 수 있음

 

이런 whitening의 문제를 해결하기 위해 Batch norm이 나옴

 

Batch normalization 

=> 평균과 분산을 조정하는 과정이 별도의 process로 있는 것이 아닌 신경망에 포함되어 있음.

=> training 시에 평균과 분산을 조정하는 과정 역시 같이 조절된다.

 

Normalization은 원래 training 전체 집합에 대하여 실시하는 것이 최고의 효과지만, mini-batch SGD를 사용하면, updatemini-batch 단위로 일어나기 때문에, mini-batch 단위로 BN을 실행

 

출처 : https://arxiv.org/pdf/1502.03167.pdf

 

1. 평균과 분산은 보통의 통계학에서 평균 분산 구하는 과정

2. 평균과 분산으로 normalize => -1~1 분포로 바뀜

3. GammaBeta가 있으며 이는 scaleshift 연산을 위해 있음(whitening과의 차이) => 정규화 시켰던 부분을 원래대로 돌리는 identity mapping도 가능하고, 학습을 통해 gammabeta를 정할 수 있다.

 

BN은 보통 non-linear activation function 함수 앞쪽에 배치된다.

 

Back propagation을 통해 학습 가능

출처 : https://arxiv.org/pdf/1502.03167.pdf

학습 시: mini-batch마다 gammabeta를 구하고 그 값을 저장

테스트 시: mini-batch마다 구했던 gammabeta의 평균을 사용

 

 

 

출처 : https://arxiv.org/pdf/1502.03167.pdf

 

10에서 m/(m-1)을 곱해주는 이유: 통계학적으로 unbiased variance에는 “Bessel’s correction”을 통해 보정

 

학습 전체에 대한 분산이 아니고, mini-batch들의 분산을 통해 전체 분산을 추정할 때 통계학적인 보정을 위해

 

Scale(gamma) , shift(beta)

신경망에 적용

 

Z = activation(Wx + b) => 기본 신경망

Z = activation(BN(Wx)) => BN 적용시

 

Wx+bBN을 적용하면 정규화 후 scaleshift항을 학습을 통해 결정, bshift항으로 대체할 수 있기 때문에 b는 무시 가능

 

Convolution에 적용할 때

Convolutional layer에서는 shared weightsliding window 방식을 적용하여 출력 feature-map의 모든 픽셀에 대하여 동일한 연산을 수행

 

=> BN도 마찬가지, fully connected처럼 activation마다 붙는 것이 아니라, feature-map(W x H)에 대하여 gammabeta쌍이 학습을 통해 결정

 

Reference

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

https://blog.naver.com/laonple/220811172205

'딥러닝관련 > 기초 이론' 카테고리의 다른 글

Orthogonal (직교) vector  (0) 2021.02.07
Norm  (0) 2021.02.06
Representation  (0) 2020.07.07
왜 딥러닝(deep learning) 이라고 하는가  (0) 2020.07.01
Sensitivity(민감도) & Specificity(특이도)  (0) 2020.07.01