[NIPS 2018] How Does Batch Normalization help Optimization?

Before Review

첫번째 논문 review 입니다. 주제는 BatchNormalization으로 준비를 했고 BatchNormalization이 왜 잘 작동하는 지 기존의 견해 말고 새로운 주장을 펼치는 논문입니다.

BatchNorm을 아예 모르신다면 “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift(2015 , Sergey Ioffe , Christian Szegedy)” 논문을 가볍게 읽어보시는 것을 추천합니다.

BatchNorm이 2015년에 등장을 하고 많은 관심을 받으며 deep learning model에 널리 사용되었는데 , 본 paper에서는 2015년에 발표된 Batch Norm의 설명이 아닌 새로운 관점에서 BatchNorm의 근원을 설명하고 있습니다.

기존의 주장이 반박되는 전개과정 속에서 나름 흥미진진하게 읽었고 , 이러한 경험을 통해 논문에 주장되는 설명들이 절대적 사실이 아닐 수도 있다는 것을 깨닫게 해준 논문이었습니다.

아직은 기본기가 많이 부족하기 때문에 논문들을 읽을 때 비판적인 분석을 하는 것은 힘들 수도 있겠지만 , 최대한 비판적인 사고를 할 수 있는 그런 사람이 되도록 노력하겠습니다.

첫번째 논문 Review 시작해보겠습니다.

Introduction and Motivation

  • 지난 십년동안 deep learning 분야에서는 수 많은 발전들이 있었으며 그 중 BatchNorm 또한 분명한 예시가 될만한 성능을 보여주며 자리 잡았습니다.
  • 현재 deep learning model에서는 거의 대부분 BatchNorm을 적용하고 있지만 , BatchNorm의 성능이 어디서 부터 나타나는 것인지에 대한 이해는 사실 상 부족했습니다.
  • 대부분 알고 있던 이유는 BatchNorm이 각 layer들에 전달되는(Hidden Layer) Input-data 들의 distribution이 달라지는 Internal Covariate shift 라는 현상을 줄여줌으로써 잘 작동한다고 설명하고 있었습니다.
  • 하지만 논문의 저자는 이것 또한 확실한 근거가 되지 못한다고 말하고 있습니다.

본 논문의 저자가 밝히는 본 paper의 Contribution은 다음과 같습니다.

  1. 사실 , BatchNorm과 Internal Covariate shift는 관계가 별로 없다
  2. 애초에 BatchNorm이 Internal Covariate shift를 감소시키는 지도 불명확하다.
  3. 우리는 BatchNorm의 좀 더 근본적인 이유를 밝혀냈다.

Batch normalization and internal covariate shift

저자는 BathcNorm과 ICS와의 관계중의 다음과 같은 질문을 품게 됩니다.

  1. Is the effectiveness of BatchNorm indeed related to internal covariate shift?
  2. Is BatchNorm’s stabilization of layer input distributions even effective in reducing ICS?

다음과 같은 의문을 해결하기 위해 몇가지 실험을 진행합니다.

첫번째 실험은 Batch Norm을 적용한 이후 random noise를 첨가해 distribution을 흐트러 놓는 실험입니다. 

이러한 noise가 covariate shift를 야기시키고 , distribution의 skewness를 증가 시킴으로써 결국 Internal Covariate shift를 증가시키게 됩니다.

case1 : Standard 

case2 : BatchNorm + Standard

case3 : BatchNorm + Noise

본래 주장으로는 Random-Noise를 추가해 ICS가 증가했으니 case1 이 case3 보다 더 좋은 성능을 보여야 맞는데 예상치 못한 결과가 등장합니다.

결과를 설명하자면 분홍색으로 표시된 ICS가 증가한 case이지만(그림을 보면 분포가 제각각임) BatchNorm이 적용된 모델이 기존 Standard 모델보다 더 좋은 성능을 보이고 있습니다.  이러한 결과는 다음과 같은 의심을 만들어 냅니다.

“BatchNorm의 성능이 ICS를 줄임으로써 기인하는 것이 아니구나.” 

이제 저자는 다음의 실험 또한 진행합니다. “BatchNorm을 통해 ICS가 정말로 감소하는 걸까” 를 알아보기 위해 gradient를 확인합니다.

  1. 우선 원래대로 Forward 과정에서 k 번째 Layer가 있다고 할 때 K 번째 Layer의 gradient를 계산합니다.
  2. 그 다음 BackPropagation 과정에서 K 번째 Layer 이후의 Layer들은 update를 시키지 않고 K 번째 이전의 Layer (1 , 2 ,  …  , K-1)들만 update 한후 다시 Foward를 진행해서 K번째 Layer의 gradient를 계산합니다.

이렇게 얻은 두 Gradient를 비교함으로써 ICS의 척도를 확인할 수 있습니다.(두 Gradient가 비슷하다면  ICS가 감소 됐다고 받아들일 수 있고 , 두 Gradient가 다른 방향성을 가진다면 ICS가 증가했다고 받아들일 수 있습니다.)

(a) VGG network에서는 사실상 비슷하다고 볼 수 있고 , (b) DLN에서는 오히려 더 안좋아 진것을 확인할 수 있습니다. (Cos Angle , 두 Gradient의 사잇각이 클 수록 0에 가까워지고 이는 두 벡터가 비슷하지 않다는 것을 의미합니다.) 이는 BatchNorm과 ICS가 상관이 없다는 사실을 의미합니다.

저자가 실행한 두 실험은 결국 이러한 사실을 의미합니다. “BatchNorm의 성능은 ICS에 기인한 것이 아닐 뿐더러 BatchNorm은 ICS를 줄여주지 않는다.”

Why does BatchNorm work?

BatchNorm이 ICS와 관계가 없다는 사실은 확인 했으나 , BatchNorm은 여전히 좋은 Performance를 보여주고 있습니다. 그렇다면 정말 근본적인 이유는 무엇일까 저자는 고민했고 “Smoothing Effect”를 주장합니다.

저자가 주장하는 BatchNorm이 잘 작동하는 이유는 “ Batch Norm이 optimization landscape를 smooth 하게 만들어준다. 따라서 gradient들이 predictive 해지며 결국 learning rate를 크게 잡아도 안정적으로 학습을 할 수 있다” 이렇게 말하고 있습니다.

이게 무슨 말이냐면 , Landscape가 smooth 해진다는 말은 Loss 함수의 Lipschitzness(함수의 어느 두점을 잡아도 기울기의 상한이 존재함) 성질이 좋아진다는 의미입니다.

Loss함수가 립시츠하다면 gradient의 upper-bound가 존재하므로 gradient들이 전반적으로 비슷하게 , 예측 가능하게 존재하게됩니다. 이는 결국 학습의 step을 크게 크게 잡아도 무리가 되지 않는다는 뜻입니다. 

HyperParameter 설정에 robust 해지며 , train-speed가 빨라지게 됩니다.

다음의 주장을 뒷받침하기 위해 저자는 몇가지 지표를 제시합니다.

여기서 step은 epoch가 아니라 특정 시점에서 gradient 방향으로 얼마나 나아갈 것인지에 대한 지표입니다.

step을 많이 밟을 수록(gradient 방향으로 멀리 나아가는 것) 변동성이 커지는 것이 자연스러운데 BatchNorm을 적용하면 Loss , gradient의 변동성이 크게 줄어들게 되는 것을 확인할 수 있습니다.

즉 , 크게 step을 밟아도 변동성이 적으므로 우리에게 confidence를 주게 되며 학습이 전반적으로 안정성을 갖게 됩니다. 

다음으로 저자는 BatchNorm 뿐만 아니라 Smoothing 효과를 줄 수 있는 다른 task 들 또한 비슷한 개선을 이룰 수 있다고 보여 줍니다.

BatchNorm 뿐 아니라 L-normalization 또한 비슷한 Performance를 보여주는 것을 보여주고 있습니다.

Conclusion

본 paper의 contribution은 기존에 설명되었던 BatchNorm과 ICS와의 관계를 실험을 통해 반박을 하였으며 BatchNorm에 대한 원인을 새로운 시각으로 접근하는 데에 있습니다.

부록 부분에 Lipschitzness 와 optimzation 관련된 수학적인 증명들이 나와있는데 보다 더 엄밀하게 확인하고 싶으신 분들은 찾아보는 것도 좋을 것 같습니다.

Author: 임 근택

4 thoughts on “[NIPS 2018] How Does Batch Normalization help Optimization?

  1. 좋은 리뷰 감사합니다. 그럼 결국 Batch Norm은 ICS를 줄이는게 아니고 글에 나타나듯 ‘optimization landscape를 smooth 하게 만들어준다.’라고 나타나있는데, Internal Covariate Shift를 줄이면 성능이 좋아진다는 기본 가설에 대해서는 추가적인 언급이 없나요? 즉 다시 설명하면 Batch Norm이 Internal Covariate Shift와 연관이 없고 다른 영향으로 성능향상을 이뤄냈다는 내용은 충분히 설명하고 있는데, 결론적으로 Internal Covariate Shift로 인한 효과의 유/무 그리고 실제 Internal Covariate Shift를 없애는 다른 방법론들에 대한 언급이 있는지 궁금합니다. 아마 이러한 내용이 가장 초반에 있는 케이스를 설명한 그림(빨간색이 Internal Covariate Shift가 증가했다고 설명하신)으로 설명되야할 것 같은데 잘 이해가 안되서 질문드립니다.

    1. 우선 , 본 paper에서 ICS에 대한 내용은 BatchNorm과 ICS와의 관계를 반박하는 것이 main이라 ICS를 줄여주는 다른 방법론 , ICS에 대한 자세한 설명, 추가적인 언급은 다루지 않았습니다. (기존의 ICS 가설이 불충분했고 이를 반박하는 흐름이 주된 흐름이었습니다.)

      Internal Covariate Shift로 인한 효과는 2015년도에 발표된 BatchNormalization 에서 다뤘던 것 같은데 gradient vanishing과 관련지어 설명을 했었습니다. 분포가 비슷해지면 sigmoid에서 한쪽으로 치우쳐질 위험이 줄어들기 때문에 gradient vanishing이 줄어든다. 학습이 안정화 되면서 parameter setting에 robust 해지고 train이 빨라진다 이런 주장이 담겨 있었는데 사실 이는 관측된 결과들이고 실제로 ICS와 성능 개선이 관련이 있다라고 주장하기엔 실험들도(성능 reporting이 대부분) 불충분 했다고 생각이 듭니다.

      말씀해주신 것 처럼 이런 기존의 ICS가설을 언급하고 실험의 내용을 적었으면 훨씬 가독성이 좋았을 것이라고 생각이 드네요.

  2. 안녕하세요 임근택 연구원님, 좋은 리뷰 감사드립니다.
    상당히 예전 리뷰이긴 하지만, 딥러닝의 기초에 관한 글을 찾아보다 해당 리뷰를 읽게 되었습니다.

    우선 전 막연히 ‘batch normalization은 internal Covariant Shift로 인한 문제를 완화시켜 딥러닝 모델의 성능을 향상시킨다’ 라고 알고 있었는데, 사실 그렇지 않을 수 있다는 부분에서 신선했습니다. 지금 저희가 당연하게 쓰고 있는 딥러닝 방법론들이나 원리들이 10년후에는 쓰레기통으로 사라질수도 있겠네요. 빠르게 발전하고 있는 분야이니 어쩔 수 없는 것 같습니다. 딥러닝은 블랙박스에 많이 비유되며 내부의 정확한 동작과정을 일일히 추적하기 어렵다고 알고 있습니다. 하지만 이 리뷰를 읽고나서 내부 원리에 대한 탐구 없이 원인과 결과만 공부하는것에 대한 경계가 필요하다는것을 느꼈습니다. 추가적으로 딥러닝 알고리즘에 대한 깊은 이해를 위해서는 최적화 이론에 대한 배경지식이 필요하다는 말을 들은 적이 있었는데 그 이유를 이 리뷰를 보면서 크게 느꼈습니다.

    해당 논문이 발표된지 4년이 지났는데, 혹시 그동안 batch normalization의 근본적인 이유에 대해 더 알려진 것이 있을까요? 결국 batch norm의 성능향상이 ICS와 관련이 없었던 것인지, 아니면 다른 이유가 있었던 것인지, 이후 학계에 정석으로 정립된 내용이 있는지 궁금합니다.

    1. 저의 관심 연구분야가 core-ML 분야는 아니다 보니 본 논문 이후로 follow-up은 저도 되어있지 않아 후속연구가 어떻게 진행되고 있는지는 잘 모르겠습니다.

      https://scholar.google.co.kr/scholar?cites=9444562420324395093&as_sdt=2005&sciodt=0,5&hl=ko

      본 논문을 citation 단 논문들에 대해서 “batch”라는 keyword로 검색하면 NIPS, ICML, ICLR 등 core-ML 관련 우수학회의 관련 후속연구를 확인할 수 있습니다.

답글 남기기

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