[NIPS 2018]How does batch normalization help optimization

안녕하세요 정의철입니다. 제가 이번에 리뷰할 논문은 ‘How does batch normalization help optimization’입니다. Batch Normalization(BatchNorm)은 신경망 학습에 있어서 더 빠르고 안정적인 훈련이 가능하게 만들어주었습니다. 하지만 BatchNorm이 왜 효과가 있는지에 대한 이유는 명확하지 않았습니다. 당시 통념으로는 “internal covariate shift(ICS)” 즉 layer를 통과할 때마다 출력되는 layer의 분산이 어긋나는 문제를 BatchNorm이 완화시킨다고 생각했습니다. 하지만 이번 논문에서는 BatchNorm의 더 근본적인(구체적인) 효과를 찾아냈습니다. 그 효과로인해 optimization landscape가 조금 더 smooth해지는데 이로인해 gradients를 더 예측가능하고 안정적으로 만들어 빠른 학습을 가능하게 합니다.

1. Introduction

딥러닝의 발전에 있어 중요한 기여를 한 것들 중 하나가 Batch normalization입니다. Batch normalization은 신경망 학습에 있어서 레이어의 입력을 mini-batch내에서 평균을 빼고 표준편차로 나누어 정규화합니다. 이렇게 함으로써 특정 레이어의 입력이 표준화된 분포를 가지도록 합니다. BatchNorm의 성공은 논쟁의 여지가 없지만 BatchNorm의 효과에 대한 실질적인 이해는 부족합니다.

따라서 저자는 이 논문에서 Batch normalization의 성능 향상과 internal covariate shift 감소 간에 연관성이 없는 것을 입증하고 Batch normalization의 성능 향상의 근본적인 원인을 찾아 실험적인 입증 및 이론적 근거를 제시합니다.

2. Batch normalization and internal covariate shift

저자는 먼저 BatchNorm이 ICS 문제를 줄여주지 않는다고 가정합니다. 저자는 BatchNorm의 근본적인 이유는 optimization landscape을 더 smooth하게 만들어주기 때문이라고 합니다.

이를 증명하기 위해 저자는 먼저 ICS와 BatchNorm 간의 관련성을 조사하는 것으로 시작합니다. 구체적으로 CIFAR-10에서 VGG 모델을 BatchNorm을 사용하거나 사용하지 않고 훈련시켰을 때의 성능을 비교합니다. 예상대로 결과는 Fig1 (a),(b)에 나와있는 것처럼 BatchNorm을 사용한 네트워크의 최적화 및 일반화 성능이 향상된 것을 보여줍니다.

Fig1

그러나 Fig1 (c)의 그림을 보면 예상과는 다른 결과를 보여줍니다. 이 그림은 훈련 중에 random input의 배치에 대한 분포를 시각화하여 BatchNorm이 레이어 입력의 분포를 어느 정도 안정화시키는지를 나타내는 그림입니다. 이 그림을 통해서 BatchNorm 레이어가 있는 네트워크와 없는 네트워크 간의 분포 안정성(평균 및 분산의 변화) 차이는 미미한 것으로 보입니다. 이러한 관찰 결과로 인해 저자는 2가지 질문을 제기합니다.

1.BatchNorm의 효과는 실제로 내부 공변량 이동(ICS)과 관련이 있는가?

2.BatchNorm의 레이어 입력 분포 안정화가 ICS 감소에도 효과적인가?

이 질문에 대한 실험과 증명에 대해 살펴보겠습니다.

2.1 Does BatchNorm’s performance stem from controlling internal covariate shift?

저자는 BatchNorm을 거친 분산에 노이즈를 추가하여 학습은 진행해보았습니다. 결과는 fig2의 3번째 결과와 같았는데 이는 그저 standard를 적용시킨모델보다 분산의 안전성은 낮았지만 오히려 성능은 더 높게 나온것을 확인합니다. 이러한 결과는 BatchNorm으로 인한 성능 향상이 stability of layer의 증가에서 비롯된다는 주장ㄹ으로 귀결되기는 어려울 것 입니다.

Fig2

2.2 Is BatchNorm reducing internal covariate shift?

딥러닝의 훈련은 주어진 입력 대해 어떤 loss function을 최소화 시키는 과정으로 볼 수 있습니다. 이전 레이어의 매개변수 업데이트는 이러한 입력을 변경하게 되므로 이 최소화 문제가 변경됩니다. 이러한 현상이 Ioffe와 Szegedy [10]가 제시한 내부 공변량 변화(ICS)의 핵심입니다. 섹션 2.1애 따르면 ICS의 변화가 성능 향상과 연관성이 없다는 것을 밝혔습니다. 그렇기 때문에 훈련 성능과 관련이 있는, ICS보다 넓은 개념이 있는지 확인을 해야합니다.

이를 확인하기위해 저자는 loss의 기울기를 활용합니다.

각 레이어의 매개변수가 이전 레이어의 매개변수 업데이트에 적응하는 정도를 측정하기 위해 각 레이어의 기울기를 모두 이전 레이어의 업데이트 후와 업데이트 전에 측정합니다.

Definition 2.1

이를 정의한게 Definition 2.1인데, L은 손실 W(k)는 k 레이어에서의 매개변수 , x(t),y(t)는 t에서 input-label으로 정의되고 t에서 activation i 번째 ICS 변화를 ||Gt,i – G₀t,i||₂로 정의합니다.

Fig3

위의 정의대로 BatchNorm을 적용한 경우와 그렇지 않은 경우를 비교하였을 때의 결과는 Fig3과 같습니다. 이전 주장에서는 BatchNorm을 적용한 경우 ICS를 감소시킨다고 주장하였으나 실험 결과를 보면 ICS가 증가시키기도 합니다. 오히려 Standard한 것이 ICS가 적게 나타나는 경향을 보입니다. 결국 BatchNorm은 ICS를 감소시키지 않는다는 것을 증명합니다.

3 Why does BatchNorm work?

그렇다면 왜 BatchNorm은 효과적으로 작동하는걸까요?

지금까지 저자는 실험을 통해 일반적으로 주장되는 내부 공변량 이동(ICS)과 최적화 성능 사이의 연관성이 기껏해야 미미하다는 것을 보여주었습니다

2015년 발표된 논문에 따르면 BatchNorm은 추가적으로 기울기가 exploding하거나 vanishing하는 것을 방지하고 학습 속도 및 초기화와 같은 하이퍼파라미터의 다양한 설정에 대한 robustness 등을 포함합니다. 하지만 이러한 속성들이 BatchNorm이 성능을 향상 시키는 본질적인 이유라고 할 수 없습니다. 따라서 저자는 BatchNorm의smoothing effect에 주목합니다.

3.1 The smoothing effect of BatchNorm

BatchNorm은 최적화 문제를 재정의 하는데 문제를 재정의 함으로써 landscape를 더 smooth하게 만들어주게 됩니다. 최적화 문제에서 landscape가 부드럽다는 것은 손실함수의 기울기가 global minima나 saddle point로부터 멀어질때 급격한 변화가 작다는 것을 의미합니다. 이러한 효과를 가진다는 것은 loss 함수의 Lipschitzness 향상으로 증명이 가능합니다. Lipschitzness이 무엇이냐하면 f 함수가 있을때 부등식 |f (x1) − f (x2)| ≤ L‖x1 − x2‖를 만족하는 상수 L이 있다는 것이고 이때 x1와x2 모든 실수 범위입니다. 즉, 함수가 얼마나 급격하게 변하는지를 측정하는 것으로 상수 L이 작을수록 함수가 부드럽다는 것을 의미합니다. 그리고 추가로 더 영향력을 주는 것은 loss의 기울기 또한 Lipschitzness가 적용가능하다는 것입니다. 이로 인해 손실이 더 효과적인 β-smoothness를 나타내게 됩니다. β-smoothness 는 Lipschitz와 마찬가지로 함수의 변화에 대한 특성을 나타내는 개념인데 간단하게 β-smoothness가 클수록 함수의 변화가 부드럽다고 볼 수 있습니다. 결론적으로 BatchNorm은 기울기의 Lipschitz를 개선시켜 손실함수가 높은 β-smoothness를 가지게 하고 이로인해 learning rates를 크게 설정해도 급격한 변화가 적기 때문에 local minima에서 빠질 가능성을 줄여주고 학습을 안정적으로 진행할 수 있게됩니다. 또한 다른 하이퍼파라미터에도 민감성이 줄어든다고 볼 수 있습니다.

이는 실험 결과로도 확인을 할 수 있습니다. Fig4의 (a)를 보면 BatchNorm을 적용시켰을때 Loss의 변화폭이 크지 않다는 것을 확일할 수 있습니다. (b)의 실험 결과는 한 점에서 기울기 값과 그 기울기 방향으로 이동했을 때의 점에서의 차이(L2 distance)를 구해 비교한 실험인데 기울기가 안정한 상태로 학습됨을 알 수 있습니다. (c)의 실험 결과는 (b)와 마찬 가지로 한 점에서 기울기 값과 그 기울기 방향으로 이동했을 때의 점에서의 기울기의 변화를 측정하여 β-smoothness를 측정했을때도 BatchNorm을 적용시키지 않았을 때보다 더 안정적임을 확인할 수 있습니다.

Fig4

4. Conclusions

이 논문은 BatchNorm의 근본적인 효과를 연구한 논문입니다. 이를 정리하면

  • BatchNorm은 ICS와 크게 관계 없다는 것을 입증한다.
  • 하지만 BatchNorm은 loss의 관점에서 안정적이고 smooth 하게 optimization을 한다.
  • BatchNorm은 learning rate나 초기화 방식과 같은 하이퍼파라미터의 선택에 상대적으로 덜 민감해지도록 도와준다.
  • 이로인해 신경망이 빠르고 안정적으로 수렴할 수 있게 도와준다.

Author: 정 의철

6 thoughts on “[NIPS 2018]How does batch normalization help optimization

  1. 안녕하세요, 좋은 리뷰 감사합니다.

    BN을 사용하여 딥러닝 아키텍처를 구성하는 것은 최근에는 일반적인 행동으로 보듯이 어떤 효과가 있기 때문에 사용하겠다는 깊은 생각은 하지 않은 것 같습니다.

    해당 논문 같은 경우 BN이 최적화 과정에 어떤 좋은 영향을 주는지에 대해 전반적인 내용을 다루네요. 하지만 BN을 사용하면 무조건 좋다라는 보장을 할 수 있는지가 궁금하네요. 좋은 기법을 적용하더라도 항상 좋은 결과를 초래하지 못 하는 경우, 즉 한계라는 것도 있지않을까 합니다. 해당 논문에는 관련된 내용이 없는지 궁금합니다.

    감사합니다.

    1. 안녕하세요 희진님 좋은 질문 감사합니다.
      이번 논문은 BatchNormalization의 이해, 학습 과정에서 어떤 영향을 주는지에 focus를 맞춰서 작성되었습니다. 따라서 BatchNormalization이 좋다 나쁘다가 아닌 적용시 어떤 효과가 나타나는지를 조사한 논문이기에 한계에 대한 언급은 없는듯 합니다. 또한 BatchNormalization은 normalization기법 중 하나이기에 normalization이 가지고 있는 한계를 똑같이 BatchNormalization도 가지고 있다고 생각하면 될 것 같습니다.
      감사합니다.

  2. 안녕하세요 Batchnorm의 고정관념을 뒤집은 논문을 리뷰 하셨군요. NIPS 논문이 아직 읽기 어려울텐데 리뷰 하시느라 고생하셨습니다.

    Is BatchNorm reducing internal covariate shift?

    와 관련된 실험에서

    리뷰에서는 “각 레이어의 매개변수가 이전 레이어의 매개변수 업데이트에 적응하는 정도를 측정하기 위해 각 레이어의 기울기를 모두 이전 레이어의 업데이트 후와 업데이트 전에 측정합니다.”

    라고 서술되어 있는데

    Fig3의 오른쪽 그래프들을 보면 y축이 cosine angle, l2 diff 이렇게 서술되어 있습니다.

    그런데 해당 지표에 대한 서술이 리뷰에는 적혀 있지 않는 거 같습니다.

    리뷰에서는 “이전 주장에서는 BatchNorm을 적용한 경우 ICS를 감소시킨다고 주장하였으나 실험 결과를 보면 ICS가 증가시키기도 합니다.”

    이렇게 서술되어 있는데 서술 과정에서 그래프에 대한 설명이 따로 들어가 있지는 않는 거 같습니다.

    해당 부분 실험에 대한 자세한 설명 부탁드리겠습니다.

    감사합니다.

    1. 안녕하세요 근택님 좋은 질문 감사합니다.
      논문에서 ICS를 측정하기 위해서 앞쪽 레이어의 가중치만 업데이트 한 다음 현재 레이어의 기울기 값의 변화를 계산합니다. 만약 ICS의 변화가 있다면 입력 데이터의 분포가 변화할 것이므로 계산되는 기울기 값이 이전과 비교했을때 차이가 생길 것 입니다. 따라서 기울기 변화를 계산하기 위해 cosine angle, l2 diff을 사용합니다. 만약 BatchNormalization에 의해 기울기 변화 값이 작다면 cosine angle은 1에 가까워지고 l2 diff는 0에 가까워질것이기에 이를 y축으로 설정하여 그래프를 그립니다. DLN의 결과를 보면 기울기 변화 값이 작아지지 않고 오히려 커지는 경우를 확인할 수 있기에 BatchNormalization이 ICS를 줄여준다고 할 수 없습니다.
      감사합니다.

  3. 안녕하세요. 좋은 리뷰 감사합니다.

    batch normalization에 대해서 다시금 생각해보는 리뷰였습니다. 궁금한 부분이 있습니다. Fig1의 c를 통해서 BatchNorm이 레이어의 입력의 분포를 어느 정도 안정화 시키는지 확인할 수 있다고 하셨는데, 제 생각에는 빨간색 그림과 파란색 그림이 꽤 차이가 난다고 생각하는데요. 논문에서는 어떻게 이 figure를 보았길래 BatchNorm 레이어가 있는 네트워크와 없는 네트워크 간의 분포 안정성(평균 및 분산의 변화) 차이가 미미한 것으로 본 것일까요??

    감사합니다.

  4. 안녕하세요 주연님 좋은 질문 감사합니다.
    Internal Covariate Shift(ICS)는 훈련 중에 네트워크의 각 층에서 활성화의 분포가 얼마나 변하는지를 나타내는 개념입니다. 빨간색 그림과 파란색 그림이 차이가 난다고 하셨는데 아시다시피 Batch normalization은 정규화 기법입니다. 그래서 적용을 시키면 형태는 당연히 차이가 날 수 밖에 없습니다. 하지만 여기서의 핵심은 Batch normalization을 적용시켜도 internal covariate shift(ICS)를 해결해준다는게 아닙니다. Fig1의 그림은 하나의 분포에서 layer가 뒤로 갈수록 어떻게 변화하는지로 해석해야합니다. 따라서 빨간색 그림과 파란색 그림이 차이는 미미하다고 볼 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다