본문 바로가기

Learning/Tuning

Batch Normalization

반응형

Batch Normalization

paper: https://arxiv.org/abs/1502.03167

repo: https://github.com/shuuki4/Batch-Normalization

Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167.

01. Batch Normalization?

  • 배치 정규화.
  • 미니배치 단위로 데이터 분포를 정규화하여 각 층의 활성화를 적당히 퍼트리도록 강제한다.
  • Covariate Shift를 막기 위한 방법

Covariate Shift

스크린샷 2019-09-28 오후 10 13 57
  • 학습하는 도중에 이전 layer의 파라미터 변화로 인해 현재 layer의 입력 분포가 바뀌는 현상.
  • 이를 줄이기 위해서는
    • 각 layer로 들어가는 input을 whitening(input을 평균0, 분산1로 하는 것)해준다.
      • backpropagation과 무관하게 진행되기 때문에 특정 파라미터가 계속 커질 수 있다.
    • Batch Normalization을 사용
      • 별도의 process가 아니라 training 시에 평균, 분산 조정 과정이 같이 조절되므로 whitening과 다르다.

02. 배치 정규화의 장점

  • 학습 속도 개선: 더 적은 epoch로 더 낮은 error rate를 가질 수 있다.
  • 초깃값에 의존하지 않음: 초깃값을 잘 설정하지 않아도 각 층의 활성화값 분포가 고르게 된다
  • 오버피팅 억제: 드롭아웃 등의 필요성 감소

03. 배치 정규화 방법

image

input으로 들어온 각각의 feature에 대하여 Batch Normalization을 수행한다.

image

  1. mini-batch의 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화를 수행한다. (위 식의 normalize 부분)
  2. 데이터의 확대 및 이동을 수행한다. (위 식의 scale and shift 부분)
  • ϵ는 normalize시 devide-by-zero error를 방지하기 위한 작은 값이다.
  • γ는 데이터의 확대를, β는 데이터의 이동을 담당한다.

Batch Normalization을 위한 factor는, γ는 1, β은 0으로 지정한 뒤 아래 알고리즘에 따라 학습한다.

image

학습이 완료되면 학습 셋 전체의 평균과 분산을 기록해 둔다. inference할 때는 mini-batch의 평균과 분산 대신, 이 기록된 평균과 분산을 이용해 normalization을 한다.

CNN의 batch normalization은 convolution의 성질을 유지하기 위해 channel별로 수행한다.

image

  • g(): activation function
  • BN(): Batch Normalization

즉, channel 개수가 n개라면 n개의 독립적인 Batch Normalization을 수행하게 된다.

04. Reference

반응형

'Learning > Tuning' 카테고리의 다른 글

Regularization : L1, L2 regularization  (0) 2020.04.12
Dropout  (0) 2020.04.12
Regularization  (0) 2020.04.12
Hyperparameter  (0) 2020.04.12
Overfitting과 Underfitting 정의 및 해결 방법  (2) 2020.04.12