입력 데이터를 정규화하면 더 높은 Learning rate를 사용할 수 있기 때문에 학습 속도를 개선할 수 있다.
초기 input layer의 데이터가 아닌 hidden layer의 입력을 정규화하는 방법이 바로 Batch Normalization이다. Batch Normalization을 적용하면 학습 속도 감소, 가중치 초기화에 대한 민감도 감소, 모델의 일반화 효과 등의 장점이 나타난다고 알려져 있다.
Batch Normalization은 주로 activation function 직전에 사용한다.
주로 activation function 직전에 사용되기 때문에 각 layer를 단순히 N(0, 1)로 정규화하면 비선형 활성화 함수의 영향력이 감소할 수 있다. 따라서 𝛾와 𝛽를 사용하여 다음과 같이 scaling과 shifting을 해주는 것이다!
Batch Normalization을 적용하면 optimization landscape이 부드럽게 형성되기 때문에 local minimum을 빠져나오기 더 쉽다!
PyTorch에서 Batch Normalization을 사용하는 방법은 다음과 같다!
train과 test phase가 다르기 때문에 model.train()
과 model.eval()
을 사용하는 것도 잊지 말자!