반응형
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
- 학습하는 도중에 이전 layer의 파라미터 변화로 인해 현재 layer의 입력 분포가 바뀌는 현상.
- 이를 줄이기 위해서는
- 각 layer로 들어가는 input을 whitening(input을 평균0, 분산1로 하는 것)해준다.
- backpropagation과 무관하게 진행되기 때문에 특정 파라미터가 계속 커질 수 있다.
- Batch Normalization을 사용
- 별도의 process가 아니라 training 시에 평균, 분산 조정 과정이 같이 조절되므로 whitening과 다르다.
- 각 layer로 들어가는 input을 whitening(input을 평균0, 분산1로 하는 것)해준다.
02. 배치 정규화의 장점
- 학습 속도 개선: 더 적은 epoch로 더 낮은 error rate를 가질 수 있다.
- 초깃값에 의존하지 않음: 초깃값을 잘 설정하지 않아도 각 층의 활성화값 분포가 고르게 된다
- 오버피팅 억제: 드롭아웃 등의 필요성 감소
03. 배치 정규화 방법
input으로 들어온 각각의 feature에 대하여 Batch Normalization을 수행한다.
- mini-batch의 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화를 수행한다. (위 식의 normalize 부분)
- 데이터의 확대 및 이동을 수행한다. (위 식의 scale and shift 부분)
- ϵ는 normalize시 devide-by-zero error를 방지하기 위한 작은 값이다.
- γ는 데이터의 확대를, β는 데이터의 이동을 담당한다.
Batch Normalization을 위한 factor는, γ는 1, β은 0으로 지정한 뒤 아래 알고리즘에 따라 학습한다.
학습이 완료되면 학습 셋 전체의 평균과 분산을 기록해 둔다. inference할 때는 mini-batch의 평균과 분산 대신, 이 기록된 평균과 분산을 이용해 normalization을 한다.
CNN의 batch normalization은 convolution의 성질을 유지하기 위해 channel별로 수행한다.
- 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 |