iMTE

BatchNormalization 본문

Deep learning

BatchNormalization

Wonju Seo 2018. 6. 19. 17:38

BatchNormalization


Neural network의 weight이 학습이 되다보면, each layer의 input의 분포가 앞의 layer의 update된 weight에 의해서 변하게 된다. 이런 distribution은 training의 속도를 늦출 뿐만 아니라 very deep neural network를 학습시키가 매우 어렵다. 예를 들어, 맨 처음 layer의 parameter가 살짝 수정되었다고 했을 때, network는 이를 amplification 하기 때문에, 마지막 layer에 들어오는 입력의 분포가 상당히 달라져있을 수가 있다.


Sigmoid 함수를 바탕으로 보면, Sigmoid 함수는 입력되는 값이 매우 낮거나 매우 높으면 saturation되어 gradient가 0이 된다. 만약 sigmoid function에 들어오는 앞 layer의 출력이 매우큰 값과 작은 값으로 분포되어 있다면, 이는 gradient를 0에 가깝게 만들어 학습속도가 매우 느려지게 만든다. 혹은 학습이 멈춘다.


sigmoid function에 대한 이미지 검색결과


출처: 위키피디아


이 문제를 피하는 방법으로는, Rectified linear unit (ReLU)를 사용하거나, unsaturated zone으로 입력의 distribution을 유지하도록 하는 방법이다. normalization은 다음과 같이 진행된다.



하지만 Normalized된 값이 바로 입력되는 것은 layer가 표현하는 feature들을 변화시키는 것이므로, 적절하지 않은 방법이다. 대신에 linear transformation을 사용해서 network가 normalized value를 학습하도록 하는 것이다. 



Backpropagation을 통해서들이 학습된다.


BatchNormalization의 장점은 다음과 같다.


1. interval covariate shift (입력되는 input들의 distribution의 변화) 가 제거되거나 줄어들어 학습속도가 빨라지며, 적은 training iteration에도 good model의 parameter가 정해진다.

2. BatchNormalization은 regularization을 하며, dropout을 하지 않아도 된다.

3. BatchNormalization은 convolutional neural network에서 잘동작한다.

Comments