zlzon

[논문리뷰][Batch Normalization] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 본문

Paper Review

[논문리뷰][Batch Normalization] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

zlzon 2021. 8. 4. 10:26

이 글은 'Batch Normalization: Accelerating Deep Network Training by ReducingInternal Covariate Shift'

논문리뷰 입니다. 아직 공부하는 학생이라 부족한 부분이 많을수 있다는 점 유의하여 읽어주시면 감사하겠습니다.

피드백은 언제나 환영입니다. 

 

Abstracct

Deep Neural Networks이 학습되는 동안 각 layer의 input값 변화는 학습을 복잡하게 한다. 이러한 문제점은 

Learning rate감소, careful parameter initialization, saturating nonlinearities를 야기한다.

이러한 현상을 'internal covariate shift' 라고 부르며, layer input을 normalizing하여 문제를 해결한다.

아울러 batch norm은 normalization을 model architecture의 일부로 만들고,  각 training mini-batch에 대한 normalization에 대해 강점을 보인다.

 

1 Introduction

SGD(Stochastic gradient descent)는 training deep networks 효율을 높여주었다. SGD는 심플하면서도 효과적이지만, 세심한 hyper-parameter 튜닝을 필요로한다. 학습시 parameter의 작은 변화들은 모델을 더 깊게 만든다.

 

각 layer는 새로운 input 분포에 적응해야해서 input분포의 변화는 'covariate shift'라는 문제를 야기한다. 

이러한 문제는 'domain adaptation'로 해결하려는 시도는 있었지만, covariate shift는 전체 네트워크를 넘어 layer의 관점으로 확장한다.

 

이전까지는 Gradient Vanishing, saturation problem 해결방안으로 ReLu와 small Learning Rate를 사용하는 방법이 제안되어왔다. 이 논문에서는 이러한 문제 해결방안으로 'Batch Normalization'을 제안한다. 

batch norm은 layer input 데이터의 평균과 분산을 고정시켜 데이터가 일정한 분포를 가지게 한다.

아울러 parameter의 초기값과 크기에 대한 gradient의 의존도를 줄여 gradient flow에 좋은 영향을 준다. 이로 인해 학습시 더 높은 Learning rate 사용이 가능해지고, Dropout의 필요성을 줄여준다.

 

2 Towards Reducing Internal Covariate Shift

학습성능을 높이기위해서는 internal covariate shift를 줄일 방법을 찾아야한다. layer의 input의 분포가 고정된다면 더 높은 학습속도를 얻을수 있다. 모델 학습시 input이 whitening되면, 더 빨리 수렴된다는 것은 오래 전부터 알려져 왔다. 각 layer input을 whining 시킨다면, input의 분포가 고정되므로 internal covariate shift를 줄일 수 있다.

(Whitening : input의 feature들을 uncorrelated하게 만들어주고, 평균0, 분산1 로 만들어주는 작업)

 

우리는 모든 step 혹은 일정간격 interval마다, 네트워크를 수정 혹은 optimization parameter를 수정하는 방법을 고려해볼 수 있다. 하지만 이런 수정이 최적화 단계 사이에 있다면, gradient descent step은 정규화가 업데이트되어야하는 방식으로 parameter를 업데이트하려고 할 수 있는데, 이는 gradient step의 효과를 감소시킨다. 

예를 들어, layer의 input: u , 편향 : b , x = u + b 라고 할때 단순하게 whitening을 하면, b는 무한히 커지고 loss값은 고정되는 문제점이 발생한다. 또한 연산량도 많아진다.

 

3 Normalization via Mini-Batch Statistics

 

Batch Normalization 과정은 위의 그림과같다.

batch-size에 맞게 평균, 분산을 구해 정규화시켜준후 마지막 줄과 같은 형태로 나타낸다.

여기서, ε 은 연산수행시 안전성을 위해 추가해주는 작은크기의 상수이며 감마는 scaling, 베타는 shift의 역할을 한다.

 

입력 데이터가 N(0, 1)로 정규화될시 대부분의 입력에 대하여 매우 선형적으로 동작한다. 따라서 non-linearity를 유지하기 위해서 감마, 베타를 이용해 scaling, shift를 한다.

 

3.1 Training and Inference with Batch-Normalized Networks

Test를 진행할때는 Train때 mini-batch마다 구했던 평균과 분산의 평균을 구해서 사용한다. 

분산의 경우, 분산의 평균을 구한후 m / (m-1) 을 곱해주는데 통계학적으로 unbiased variance estimate를 보정하기 위함이라고 한다.

 

참고사이트

https://goodjian.tistory.com/entry/%EB%B0%B0%EC%B9%98-%EC%A0%95%EA%B7%9C%ED%99%94-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-Batch-normalization

https://eehoeskrap.tistory.com/430

https://blog.naver.com/PostView.nhn?blogId=laonple&logNo=220808903260