본문으로 바로가기

Batch Normalization

category AI/Deep Learning 2021. 3. 5. 16:09

Batch Normalization

1) 개요

    - vanishing gradient는 layer 수가 많아지면 정도가 커지게 되어 ReLU를 사용하거나 dropout을 하더라도 여전히 발생

    - batch normalization을 통해 activation function을 통과하기 전 각 layer별로 정규분포화하는 것이다.

    - 일반적으로 activation function을 통과하기 전에 BN layer를 삽입하여 사용

 

2) Internal covariate shift

출처 : https://www.slideshare.net/xavigiro/optimizing-deep-networks-d1l6-insightdcu-machine-learning-workshop-2017

    - 각각의 layer들의 input data들의 분포가 training과정에서 일정하지 않아 올바른 학습이 되지 않는다.

    - 층이 깊은 모델에서 layer가 output에 가까워질수록 이전 layer의 parameter에 크게 예민

 

3) Whitening

    - internal covariate shift를 줄이는 기존의 방법 중 하나로 계산식은 아래와 같다.

    - 간단하게 평균을 0, 분산을 1로 바꿔준다는 개념이다.

$$\hat{X} = Cov(X)^{-\frac{1}{2}}X, \; Cov(X) = E[(X-E[X])(X-E[X])^{T}]$$

    - 단점으로 계산량이 많이 필요한 것과 동시에 whitening과 backpropagation이 무관하게 진행되기 때문에

       특정 파라미터가 계속 커지는 상태로 whitening이 진행될 수 있다.

 

4) 수학적 이해

    - optimizer로 mini-batch SGD를 사용하는데 mini-batch단위로 BN 실시하고 test할 때만 전체 평균/분산을 구한다.

    - 각 batch별 데이터는 서로 independent라고 가정 -> whitening에 비해 속도 개선

    - 선형변환도 함께 학습 -> independent라고 가정한 경우 변수 간의 관계가 중요한 경우를 놓칠 수 있어 방지하기 위함

                                            (representation power 유지)

    - scale and shift에서 layer의 입력차원의 개수와 같다.

    - BN은 신경망에 포함되기 때문에 backpropagation을 통한 학습이 가능 (chain rule 적용)

 

5) Train/Inference with BN network

    - train 시 각 mini-batch마다 구해진 gamma와 beta값을 저장해 놓고 test 시 gamma와 beta의 평균을 사용

 

6) 장점

    - 큰 learning_rate를 사용할 수 있어 학습 속도가 빠르다.

    - weight initialization에 대한 민감도가 낮다

    - regularization 효과가 있어 dropout, L1, L2같은 다른 regularizer에 대한 의존도가 낮다.

 

7) 사용법

    - learning rate 값을 키운다.

    - dropout과 같이 사용하지 않는다.

    - 기타 regularization의 값을 낮춘다.

    - learning rate decay를 accelerate한다.

    - local response normalization 제거

    - train시 batch에 shuffling추가

 

 

 


참고

sanghyukchun.github.io/88/

m.blog.naver.com/laonple/220808903260

 

'AI > Deep Learning' 카테고리의 다른 글

CNN(Convolutional Neural Network); 합성곱 신경망  (0) 2021.03.15
Softmax Classifier  (0) 2021.03.09
Dropout  (0) 2021.03.04
Weight Initialization  (0) 2021.03.04
SGD (Stochastic Gradient Descent)  (0) 2021.03.04