-
Batch Normalization논문 Review 2020. 8. 16. 20:12
˙첫번째 논문 Review이다. 그 동안 읽어 온 논문을 정리해서 올릴 예정이다.
먼저 Batch Normalization이다. 간단한 개념은 알고 있었는데 공부할 수록 조금 더 자세히 알고 싶어서 시간을 내어 논문을 읽어 보았다. youtube에 딥러닝 논문 읽기 모임의 내용과 책, 자료 등을 참고해 정리해보았다.
논문의 제목은
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 이다.
2015년 arXiv에 발표된 후 ICML(In International Conference on Machine Learning) 2015에 publish된 논문이다.
내용은 간단하게 요약하고 정리해보자.
Paper
Learning Problem in Deep Neural Networks
Training DNN 은 복잡하고 어렵다.
파라미터가 많아 학습이 어렵고 작은 weight 값의 변화에도 기존의 값과 다른 hidden layer의 값이 바뀐다.
hidden layer의 node의 변동이 심한게 문제이다. Network의 각 층이나 Activation 마다 input distribution이 달라지는 현상이 일어난다. 이러한 것들을 논문에서 Internal Covariate Shift라고 정의 한다.
처음에 학습했던 node 의 distribution와 그 다음에 학습한 distribution가 너무 다르면 학습의 문제가 생긴다.
The distribution of each layer`s input changes during training
train이 상단으로 갈수록, hidden layer가 깊어질수록 node의 distribution의 변화가 심해진다.
Gradient Vanishing / Gradient Exploding 이 일어나는 문제를 지금까지는 Activation 함수의 변화 ( ReLU 사용) 이나
Careful initialization 이나 Small learning rate를 이용하여 문제를 해결하곤 했다.
이런 Internal Covariate Shift 문제를 간접적인 방법보다 training하는 과정 자체를 안정화하여 학습 속도를 향상시키기 위해 Batch Norm이 제안된다.
Batch Normalization
if the change of dist. is not large, training weight parameter is easy
먼저 간단하게 각 층의 input distribution을 평균 0 , 표준편차 1로 normalize(정규화) 시키는 방법을 제안한다. 이는 whitening이라는 방법으로 해결한다.
whitening transformation 은 random variable의 벡터를 covariance matric(공분산 행렬)가 identiy matrix인 variable들로 변형하는 linear transformation이다. 즉 모든 변수가 uncorrelated 이고 1의 분산을 갖는다. 이러한 transformation은 input vector를 white noise vector로 바꾸기 때문에 whitening이라고 부른다.
차원감소에 활용되는 pca와 밀접하게 연관된 전처리 과정이다.
여기서 문제는 whitening을 하기 위해서는 공분산 행렬의 계산과 inverse의 계산이 필요하기 때문에 계산량이 많고 whitening을 통해 loss(cost function)이 변하지 않게 되면, 최적화 과정을 거치면서 특정 변수 (논문에 예를 든 과정에서는 bias b를 의미한다)가 계속 커지는 현상이 발생한다.
이러한 문제를 해결하기 위해 논문에서 제시한 것이 Batch Normalization, BN이다.
BN은 평균과 분산을 조정하는 과정을 별도의 process가 아닌 신경망 학습안에 포함을 시켜 training 한다. 여기서는 activation 전에 넣어준다.
각각의 feature들이 이미 uncorrelated 되어있다고 가정하고, 각각에서만 scale 형태로 mean 과 varice를 구하고 nomarlize한다.
단순히 layer의 각 input을 normalizing 하면 내용이 변경 될 수 있다. 예를 들어sigmoid의 입력이 평균 0, 분산1이라면 출력부분은 곡선보다는 직선형태에 가까울 것이다.
위의 식은 통계학에서 나오는 평균과 분산을 구하는 기본 방식이기 때문에 자세한 설명은 생략한다.
평균과 분산을 구하고 정규화시킨다. 정규화 과정에서 평균을 빼주고 그것을 분산으로 나눠주면 -1 ~ 1의 범위로 나타난다.
whitening과 다른 점은 정규화시키고 scale과 shift 연산을 해준다. 이로써 정규화 시켰던 부분을 원래대로 돌리는 identiy mapping도 가능하고, 학습을 통해 scale factor (gamma)와 shift factor (beta)를 정할 수 있기 때문에 더 좋은 기능을 보인다.
Normalization은 원래 training 전체 집합이 아닌 mini-batch 단위로 mean과 variance를 구하고 BN을 진행한다.
mini-batch 집합의 선정은 가급적이면 correlation이 적어 mini-batch가 전체 집합을 대표하는것과 유사하게 설정해야 한다.
BN은 보통 non-linear 활성 함수 앞에 배치가 되고 backpropagation을 통해 학습이 가능한다.
backpropagation 시에는 위와 같이 chain rule이 적용 된다.
Training과 Test 시 차이
Training : mini-batch의 mean과 variace로 normalize를 한다.
Test : 계산해 놓은 input들의 이동평균 (moving average) 및 unbiased variance estimate의 이동평균을 계산하여 저장해놓은 뒤 이 값으로 normalize를 한다.
정규화 후에 scale factor와 shift factor를 이용하여 새로운 값을 만든다.
두 factor 는 weight를 학습 하듯이 backpropagation을 통해 학습하면 된다.
Algorithm 2: Training a Batch-Normalized Network
Advantage of Batch Norm
˙ Higher learning rate is possible
˙ Less careful initialization
˙ Regularization Effect (So, Dropout is not necessary)
기존의 DNN에서는 learning rate를 높게 잡을 경우 gradient가 vanish/explode되거나 local minima에 빠지는 문제가 잇다. BN을 사용할 경우 back-propagation 할 때 parameter의 scale에 영향을 받지 않으므로 빠른 학습이 가능하다.
BN자체에 regularization 효과가 있어 기존에 사용하던 weight regularization term 등을 제외 할 수 있고, Dropout이 필수가 아니다.
Experiment
논문에서 Test accuracy of the MNIST를 보여주고 있다. (a)는 BN을 통해 네트워크 훈련 속도가 더 빨라지고 정확도가 높아짐을 알 수 있다. (b),(c)는 15,50,80 percent 분위수를 나타내는데 distribution이 더 안정적이고 internal covariate shift가 감소 함을 알 수 있다.
Closing
Batch Normalization을 공부했다. 기존의 코드를 짜면서 단순히 keras에서 구현해 놓은 라이브러리를 가져다 쓰기만 했는데 이번 기회에 자세한 알고리즘과 개념을 공부하게 된 것 같다. 각 layer 당 normalize를 한다는 간단한 아이디어가 네트워크의 학습을 성능을 얼마나 향상 시킬 수 있는지 알게 되었다. Deep Learning에서 무언가를 학습하는 네트워크, 모델을 만들때 대부분 사용되는 Batch normalization에 대해 자세히 공부 할 수 있는 기회였다.
'논문 Review' 카테고리의 다른 글
Knowledge Distillation for Multi-task Learning (0) 2022.02.06 Generative Adversarial NetS (GAN) (0) 2020.11.23 CutMix: Regularization Strategy to Train Strong Classifierswith Localizable Features (0) 2020.10.23 Image Super-Resolution Using Deep Convolutional Networks (0) 2020.10.18 Bag of Tricks for Image Classification with Convolutional Neural Networks (0) 2020.10.02