Normalization trend

Sungchul Kim·2021년 12월 27일
0
post-thumbnail

오늘은 Batch / Layer / Instance / Group normalization을 정리해 보았습니다.

Summary

기존 연구들은 training time을 줄이는 방법으로 batch normalization을 제안하였습니다.

그러나 batch normalization은 몇 가지 단점을 가지고 있습니다.

  • batch normalization은 mini-batch size에 의존한다.
  • recurrent neural network model인 경우, 어떻게 적용이 되는지 명백하게 설명하기 어렵다.

본 연구에서는 이러한 문제점을 해결하기 위해서 layer normalization을 제안하였습니다.

layer normalization은 batch normalization과 달리 train/test time 일 때, 같은 computation을 수행한다는 점이 큰 특징입니다.


Introduction

일반적으로 deep neural network는 Stochastic Gradient Descent(SGD) 방법을 사용하였습니다. 관련 연구 설명에 앞서 neural network에 normalization을 도입한 계기에 대해 살펴보도록 하겠습니다. notation은 다음과 같습니다.

hlh^l : ll번째 layer, wilw_i^l : ll번째 layer의 ii번째 weight bilb_i^l : bias, f()\mathcal f(\cdot) : activation function

ail=wilThlhii+1=f(ail+bil)a_i^l = {w_i^l}^Th^l \quad h_i^{i+1} = \mathcal f(a_i^l + b_i^l)

hlh^l 안에 각각의 wilw_i^l 들의 gradient들은 hl1h^{l-1} 의 output값들에 dependent하다.

위 그림을 보시게 되면, input이 여러 layer를 거치게 되면서 data의 distribution이 변하게 되고 Internal covariate shift(Ics)를 발생시킨다는 사실을 알 수 있습니다.


Related work

Batch Normalization

Batch Normalization은 internal covariate shift를 줄이기 위해 제안된 방법입니다[2015]. 즉, 학습할 때 각각의 hidden unit에 대하여 aila_i^l을 정규화 하는 방법입니다.

Training Batch-normalized Networks

  • B\mathcal B 는 mini-batch size, mini-batch size가 8이면 B={x1...8}\mathcal B = \left\{x_{1...8}\right\}
  • γ\gamma, β\beta 는 learning parameter
    • (γ\gamma, β\beta : hidden unit마다 독립적으로 가지고 있는 parameter)
  • μB\mu_{\mathcal B}, σB2\sigma_{\mathcal B}^2 를 구해 x^i\hat x_{i}를 구한후 γ\gamma, β\beta 를 통해 transformation
  • Backpropagation을 통해 γ\gamma, β\beta를 update

Inference Batch-normalized Networks

Inference : ( NBNinfNBNtr\mathcal N_{BN}^{inf} ← \mathcal N_{BN}^{tr})

  • E(x)=Eβ(μβ)E(x) = E_{\beta}(\mu_{\beta})
  • Var[x]=mm1Eβ(σβ2)Var[x] = \frac{m}{m-1} \cdot E_{\beta}(\sigma^2_{\beta})

How to calculate yy? \quad (이때 γ\gamma, β\beta는 고정된 parameter)

y=γVar[x]+ϵ(xE(x)) +βy = \frac{\gamma}{\sqrt{Var[x]+\epsilon}} \cdot (x-E(x)) \ + \beta

BN은 internal covariate shift를 줄임으로써 학습이 stable하게 이뤄진다고 주장. [2015]

그러나 추후 연구인 How Does Batch Normalization Help Optimization?[2018] 에선 Batch-normalization이 stable하게 학습되는 이유에 대해 다르게 주장

  • Dataset은 CIFAR-10 사용, model은 vgg-16로 학습을 진행
  • Standard + Noisy BatchNorm : BatchNorm + noise
  • Standard + BatchNorm & Standard + Noisy BatchNorm
    • Standard network보다 convergence speed가 빠름
    • Noisy + BatchNorm의 distribution은 Standard network보다 unstable
  • BatchNorm은 internal covariate shift(Ice)를 해결해준다는 주장을 입증하기 어렵다고 주장

Why does BatchNorm work?

그럼 Batchnorm이 가져오는 effect는 무엇일까요?


Weight Normalization

Weight Normalization은 BN과 다르게 ww를 normalize 해줍니다.

수식은 다음과 같습니다.
weight vector : ww, parameter vector: vv , scalar parameter : gg

w=gvvw = \frac{g}{\lVert v \rVert}v
  • Weight normalization은 vv, gg를 이용하여 ww를 reparameterize하는 방법
    • vvk\mathcal k-dimensional vector이고 v\lVert v \rVertvv의 L2 norm을 의미함
    • v\lVert v \rVert, vv를 분리한후, gg, vv를 update 시켜주는 방식으로 진행됨
      (BN에서 σ\sigma로 나눠주는 것과 같은 효과를 지님)

본 연구에서는 mean-only BN을 주장하면서 앞서 설명한 weight normalization을 결합하였습니다.

  • Mean-only BN → mini-batch들의 평균만 정규화 시킴
y=ϕ(tμ[t]),t=gvvx+b\quad y = \phi(t-\mu[t]), \quad t = \frac{g}{\lVert v \rVert}v \cdot x + b

Instance Normalization

Instance Normalization은 개별 channel에 대해 정규화하는 방법입니다.

다음은 Instance Normalization의 동작과정에 대해 설명하겠습니다.
수식은 아래와 같습니다.

xRN×C×W×Hx \in R^{N\times C\times W\times H}

NN : a batch of images CC : channels WW,HH : height, width를 의미합니다.

μni=1WHΣWj=1ΣHk=1xnijk,σni2=1WHΣWj=1ΣHk=1(xnijkμni)2,ynijk=xnijkμniσni2+ϵ\mu_{ni} = \frac{1}{WH}\underset {j=1}{\overset{W}\Sigma} \underset {k=1}{\overset{H}\Sigma}\mathcal x_{nijk},\quad \sigma^2_{ni} = \frac{1}{WH}\underset {j=1}{\overset{W}\Sigma} \underset {k=1}{\overset{H}\Sigma}(\mathcal x_{nijk}-\mu_{ni})^2, \quad y_{nijk} = \frac{x_{nijk}-\mu_{ni}}{\sqrt{\sigma^2_{ni}+\epsilon}}

kk,jj : spatial dimensions, ii : featue channel(input image가 RGB → color channel), nn: index image

  • Instance Normalization은 mini-batch image각각에 대하여 normalize시켜주는 방식
  • Instance Normalization은 BN을 대체함으로써 image generation 영역에서 좋은 성능을 보이는 것으로 알려져 있음
    • style transfer, GAN에서 많이 사용되는 방법

Group Normalization

Group Normalization은 각 channel을 group지어 normalize하는 방법입니다.

Si={kkN=iN,kCC/G=iCC/G}\mathcal S_{i} = \left\{ k|k_{N} = i_{N} ,\lfloor \frac{k_{C}}{C/G} \rfloor= \lfloor \frac{i_{C}}{C/G}\rfloor \right\}

GG : group의 수, C/GC/G : 각 group의 channel수, \lfloor \cdot \rfloor: floor operation, ii,kk : index image

  • 전체 channel을 group지어 normalize한다면 group normalization은 layer normalization과 동일(G=1G=1)
  • 각각의 channel을 개별적으로 group짓는다면 Instance normalization과 동일(G=CG=C)

정리하자면 Batch normalization과 비롯해 다른 normalization은 다음과 같이 표현할수 있습니다.


Method

Layer Normalization

본 연구에서는 batch normalization의 결점을 극복하는 방법으로 layer normalization을 제안하였습니다.

ul=1HΣHi=1ail,σl=1HΣHi=1(ailul)2u^l = \frac{1}{H} \underset {i=1}{\overset{H}\Sigma}a_i^l, \quad \sigma^l = \sqrt{\frac{1}{H}\underset {i=1}{\overset{H}\Sigma} (a_i^l-u^l)^2}

HH : 특정 layer가 가지고 있는 hidden unit 개수

  • layer normalization은 특정 layer가 가지고 있는 hidden unit에 대해 μ\mu , σ\sigma를 공유함
  • BN과 다르게 mini-batch-size에 제약이 없음
  • RNN model에선 각각의 time-step마다 다른 BN이 학습됨
    • LN은 layer의 output을 normalize함으로써 RNN계열 모델에서 좋은 성능을 보임

Example

  • Batch Normalization, Layer Normalization에서 μ\mu, σ2\sigma^2 에 대해 계산되는 과정을 나타냄

  • Batch size : 3 , Hidden unit : 5개

  • Batch Normalization

    • μ=1+2+33=2σ20.667\mu = \frac{1+2+3}{3} = 2 \quad \sigma^2 \approx 0.667
  • Layer Normalization

    • μ=1+3+7+10+135=6.8σ219.36\mu = \frac{1+3+7+10+13}{5} = 6.8 \quad \sigma^2 \approx 19.36
  • Batch Normalization은 batch size에 dependent하다는 사실을 알 수 있습니다.

    • Batch size를 1이라고 가정한다면 BN인 경우 학습하기 어려움

Invariance under weights and data transformations

앞서 설명드렸던 BN, WN, LN, GN의 normalize하는 방법은 모두 다릅니다.

그러나 μ\mu , σ\sigma를 이용하여 normalize한다는 점, backpropagation 과정에서 γ\gamma , β\beta 를 update해준다는 점은 동일합니다.


Experiments

  • Dataset은 question-answering data를 사용하였고 attentive reader model로 학습을 진행
  • LSTM에 LN을 적용했을 때, 수렴속도가 빨라졌고, baseline, BN을 적용했을 때보다 좋은 성능을 보임

  • Dataset은 BookCorpus dataset을 사용하였고, Skip-Thoughts 모델을 사용하여 학습을 진행
  • 학습 이후 5개의 task로 evaluation [semantic-relatedness, movie review sentiment, customer product reviews, subjectivity/objectivity classfication, opinion polarity ]
  • 50000 iteration마다 evaluate했을 때의 결과를 의미함

  • Dataset은 permutation MNIST를 사용하였고 RNN 모델을 사용하여 학습을 진행
  • BN과 다르게 LN은 batch size와 상관없이 좋은 성능을 보임

Conclusions

  • Layer Normalization은 BN과 달리 mini-batch size에 의존하지 않는다는 점을 알 수 있었습니다.
  • RNN에서 Layer normalization은 좋은 성능을 보였습니다.
  • 여러 Normalization 기법들을 다루면서 각 normalization이 어떻게 동작하는지 확인할 수 있었습니다.

Reference

profile
김성철

0개의 댓글