Summary

Abstract

딥러닝을 훈련하는 과정에서 각 레이어들의 인풋의 분포가 다르게 입력되는 것은 뒤에 따라오는 레이어들의 훈련을 복잡하게 만드는 경향이 있습니다. 이러한 결과는 결국 적은 Learning Rate(LR ), 조심스러운 하이퍼 파라미터 조정, 포화적인 비선형 함수에서의 딥러닝 훈련을 힘들게 만듭니다.

( Saturated nonlinearity : Sigmoid와 같은 한계가 정해져 있는 비선형 함수들. tanh 도 포함. )

( Non Saturated Nonlinearity : ReLU, ELu 와 같은 한계가 정해져 있지 않은 비선형 함수. )

이러한 현상을 ICS ( Internal Covariate Shift ) 라고 부르는데, 이러한 문제를 Normalization을 각 레이어에 존재하는 mini-batch에 적용함으로써 해결할 수 있다고 합니다.

이러한 Batch Normalization(BN)은 딥러닝을 훈련함에 있어서 빠르게 좋은 결과에 수렴하도록 만들어주고, LR에 크게 영향을 받지 않으며 또한 하이퍼 파라미터의 신중함도 덜어준다고 합니다. 추가로 Regularization 역할도 하면서 Dropout의 역할을 대신할 수도 있습니다. 이러한 결과는 실제로 같은 훈련을 진행했을 때 BN이 없는 모델에 비해 14배 정도 빠르게 훈련하여 같은 결과를 얻는 것을 실험을 통해 증명되었다고 합니다.

Introduction

SGD 방법은 딥러닝 네트워크를 훈련하는데 탁월하다고 알려져 있습니다. 추가로 Momentum 과 같은 SGD variants 도 존재합니다. 이러한 SGD 알고리즘은 Mini-batch를 기준으로 진행되게 됩니다. SGD는 mini-batch를 사용해 전체 훈련데이터의 Gradient를 계산하고 동시에 현재에는 발전된 Computing flatform 을 사용하여 병렬적으로 계산을 수행할 수 있습니다. 그러나 이런 SGD에도 문제가 있었는데 하이퍼 파라미터에 매우 민감하여 조심스럽게 조절하여야 하고, 모델 파라미터의 초기값에 따라도 결과가 달라지는 경우가 많았습니다. 이러한 악영향 결과들은 모델을 거치면서 점점 더 증폭되어 질수 있습니다.

특히 Hidden Layer로 훈련이 진행하면서 계속해서 입력 분포가 변경되는 문제는 이어지는 레이어들의 훈련이 이상한 방향으로 진행되도록 만들었습니다. 이를 ICS라고 합니다.

Untitled