Batch Normalization
1) 개요
- vanishing gradient는 layer 수가 많아지면 정도가 커지게 되어 ReLU를 사용하거나 dropout을 하더라도 여전히 발생
- batch normalization을 통해 activation function을 통과하기 전 각 layer별로 정규분포화하는 것이다.
- 일반적으로 activation function을 통과하기 전에 BN layer를 삽입하여 사용
2) Internal covariate shift
- 각각의 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추가
참고
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 |