머신러닝/Vision

Batch Normalization?

망나 2018. 10. 23. 16:07

Batch Normalization : Accelerating Deep Network Training by Reducing Internal Covariance Shift

Batch Normalization은 ICML 2015에 publish된 논문에 소개된 방법으로 쉽게 말하면 전체적인 모델의 학습 과정을 안정화시켜 학습 속도를 향상시키는 방법입니다.


모델을 학습하다보면 Gradient Vanishing / Exploding 같은 문제들이 발생하는데 이러한 원인으로 'Internal Covariance Shift'를 들 수 있습니다. Internal Covariance Shift는 Network가 깊어지면서 값들의 변화 폭이 커지는, 그래서 각 층의 input들의 distribution이 달라지는 현상이라고 말 할 수 있습니다. 



이러한 Internal Covariance Shift를 해결하기 위해서 각 층의 input을 평균 0, 표준편차 1로 맞춰주는 whitening이라는 방법이 있습니다. 하지만 단순한 whitening을 하게 되면 whitening 과정과 backpropagation 과정이 독립적으로 이루어지기 때문에 특정 parameter의 영향이 무시되어 제대로된 학습이 진행되지 않는 문제점이 있습니다. 이러한 문제점을 해결할 수 있는 방법이 바로 Batch Normalization 입니다.


기본적인 Batch Normalization의 방법은 아래와 같습니다.



mini-batch 단위로 평균과 분산을 계산하여 입력을 nomalize 하게 됩니다. 여기서 whitening과 다른 점은 마지막 단계에서 scale factor (gamma)와 shift factor (beta)를 추가했다는 점 입니다. gamma와 beta는 backpropagation 과정에서 함께 학습됩니다.


Batch Normalization은 Activation 이전에 위치해서 각 층의 input값을 nomalize 시켜주게 됩니다. 아래 그림을 보면 Batch Normalization을 적용한 모습(외쪽)과 적용하지 않은 모습(오른쪽)을 구분하여 쉽게 이해할 수 있습니다.



그림 설명을 직관적으로 봤을 때, BN(Batch Normalization)이 각 층마다 input을 nomalize 시켜주고 있기 때문에 더 안정적인 학습이 될 것이라는 것을 알 수 있습니다. 

 

Batch Normalization을 사용할 때, Training과 Test를 진행함에 있어서 차이점이 있는데, Test시에는 Training에서 계산한 input들의 이동평균으로 normalize하게 됩니다.



마지막으로 Batch Normalization의 효과로는 다음과 같은 점들을 생각할 수 있습니다.


  • 학습 속도가 향상됩니다. (parameter들의 scale에 영향을 받지 않기 때문에, learning rate를 높게 잡아도 안정적인 학습이 가능합니다.)
  • Regularization의 효과가 있습니다. (Dropout과 같은 효과를 같기 때문에 Dropout을 제외할 수 있습니다.)



참고

 - https://m.blog.naver.com/PostView.nhn?blogId=laonple&logNo=220808903260&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

 - https://shuuki4.wordpress.com/2016/01/13/batch-normalization-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EA%B5%AC%ED%98%84/

'머신러닝 > Vision' 카테고리의 다른 글

ResNet 이해하기  (0) 2019.06.04
Generative Adversarial Networks (GANs)  (0) 2019.02.27
Recurrent Neural Networks ?  (0) 2018.09.30
Convolutional Neural Networks ? [2]  (0) 2018.09.06
Convolutional Neural Networks ?  (0) 2018.09.05