새소식

Deep Learning

Batch Normalization, 배치 정규화

  • -

Motivation & Problems

  • input을 normalize해도, Layer를 거치는 과정에서 Normalization의 효과가 사라짐
  • intermediate layer에서도 각 input값 (이전 layer로부터 들어오는 값들)을 normalize 하는 것이 목적
  • mini-batch마다 normalization을 진행

internal Covariate Shift

  • 딥러닝 모델이 잘 작동하기 위해서는 train data distribution과 test data distribution이 거의 같아야하지만, overfitting된 모델은 서로 다른 distribution을 가짐
  • train data의 distribution과 test data의 distribution이 달라지는 현상(Covariate Shift)이 내부 레이어에서 발생하는 것

Gradient Vanishing / Exploding

  • hidden layer가 많을 때, layer를 통과할수록 gradient가 너무 작아지거나(Vanishing), 무한히 커져서(Exploding) 가중치를 올바르게 업데이트하지 못하는 현상

Methods of training time

  • 먼저 각 mini-batch의 평균과 분산을 구한다.
  • 각 mini-batch의 평균과 분산값을 이용해 normalize한다.
    • input값에서 평균값을 빼고, 표준 편차로 나눈다. (Z*)
    • 이 때, 표준편차를 구하는 과정에서 분산값에 아주 작은 상수 Epsilon을 더해준다.
      • 0으로 나눠지는 문제를 막기 위해, 수치적 안정성을 보장하는 작은 상수 (1e-5)
  • Z*값에서 Learnable parameter인 gamma를 scale 변수로 곱해주고, beta를 shift 변수로 더해준다.
    • 데이터를 지속적으로 Normalization하게 되면 활성화 함수의 non-linearity 성질을 잃을 수 있는 문제를 완화시켜준다.
    • sigmoid function을 볼 때, -2~2 구간에서는 거의 선형적인 성질을 가지고 있는 상태를 scaling과 shifting을 통해 구간을 변경함으로써 벗어날 수 있음
  • 기존 output이 g(Z)라고 하고, Z=WX+b, g() == activation function일 때
    • output = g(BN(Z)) 으로 변경
    • activation function을 적용하기 이전에 BN을 적용하는 것이 best practice.

Methods of test time (Inference)

  • inference 시에 입력되는 데이터에 대해 정규화하게 되면, 모델이 입력 데이터의 분포를 추정하는 의미가 사라짐
    • 고정된 평균과 분산이 필요
  • test time일 때는, training time에 미리 sample mean과 sample variance를 이용해, 각각의 moving(running) average를 구해두어야 함
    • whole training data(the population)에 대해서 variance와 mean을 구하기보다, 각 mini-batch에 대해서 다시 계산하는 것이 더 smart한 방법
    • mini-batch로 뽑힌 data가 sample일 때, sample mean은 각 mini-batch에 대한 mean값, sample variance는 각 mini-batch에 대한 variance값임
    • sample variance는 true variance(population variance)보다 (n-1)/n만큼 작음
      • non-biased value를 inference하기 위해서는, sample variance를 구할 때 n/n-1으로 나누어야 함

Effects of Batch Normalization

  • 학습 속도가 빨라지고, 성능이 향상된다.
  • 안정화된다.
  • bad initialization에 대해 특히 더 robust하다.
  • Learning Rate를 더 올릴 수 있다.
  • Dropout을 사용하지 않아도 된다. (learnable parameter인 gamma와 beta를 사용하기 때문에)
  • L2 weight regularization을 줄이게 된다.
  • Learning rate decay를 가속화한다.
  • bias를 쓰지 않을 수 있다.
    • BN 사이에 bias를 가지고 있기 때문 (beta)

Batch Normalization for Convolutional layers

  • Fully Connected Layers
    • 각 activation당 BN 실행
  • Convolutional layers
    • 각 Feature map당 BN 실행
      • 각 Featur map당 하나의 mean과 variance, gamma(scale), betta(shift)
      • Feature map은 같은 weight를 공유하기 때문에 가능

'Deep Learning' 카테고리의 다른 글

[Draft] Numerical Instability in Deep Learning  (0) 2021.05.24
[draft] Optimization Variants  (0) 2021.05.17
[draft] Ranking Loss (Pairwise, Triplet)  (0) 2021.05.03
[draft] Forward KL VS Reverse KL  (0) 2021.05.03
[draft] Cross Entropy Loss  (0) 2021.04.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.