원문링크: https://arxiv.org/abs/1502.03167
요약
DNN을 훈련시키는 것은 각 레이어의 input의 분포가 이전 레이어의 파라미터에 따라 바뀐다는 점 때문에 매우 복잡했다. 이것은 낮은 learning rate와 섬세한 파라미터 초기화를 요구하게 함으로써 훈련을 느리게 만든다. 그리고 모델을 비선형 근사를 시키는 것을 어렵게 만든다. 우리는 이 현상을 _internal covariate shift_라고 부른다.
이 문제를 레이어의 input을 정규화함으로써 해결하고자 한다. 우리의 방법은 정규화를 모델의 한 부분으로 만들고 매 트레이닝 mini batch마다 작동하게함으로써 힘을 보여준다. batch normalization은 우리에게 더 높은 learning rate를 쓸 수 있게하고 파라미터 초기화에 덜 신경쓰도록 해준다. 이것은 또한 규제화처럼 작동한다. 때때로 dropout을 안써도 될 정도이다.
Batch normalization을 최신 이미지 분류 모델에 적용하니 14 step 덜 학습하고도 원래와 똑같은 정확도를 보였다. 그리고 원본 모델을 큰 차이로 이겼다. batch normalization network의 앙상블을 이용함으로써 우리는 imageNet 분류 문제에서 성적을 경신했다. 인간의 분류 정확도를 넘어 4.9%의 top-5 validation error와 4.8%의 테스트 에러를 보였다.
본문
- covariate shift: 데이터 추출에 bias가 있거나 결측치로 인해 input data의 분포가 모집단에 비해 바뀌는 것, domain adaptation으로 해결될 수 있다.
- domain adaptation: 한 도메인(분포가 다른)의 데이터를 학습해 다양한 도메인(분포가 일반화)들에 적용할 수 있는 예측 모델을 만드는 것
- internal covariate shift?: covariate shift의 개념을 learning system 전반으로 확장, DNN 내부에서 이전 레이어의 파라미터로 인해 sub network의 input data의 distribution이 바뀌는 것
- internal covariate shift가 일어나면 데이터 전체의 분포를 옮겨져서 gradient discent를 유발할 가능성이 있다. (활성화함수가 sigmoid인데 데이터 전체의 분포가 전체적으로 증가하거나 감소할 경우, 미분계수가 0에 가까워지기 때문에 gradient discent가 일어난다.)
- 일반적으로 이 현상은 relu를 사용하거나 파라미터 초기화 방법, 낮은 learning rate들을 통해 해결해 왔다
- batch normalization은 layer input의 평균과 분산을 고정함으로써 이 문제들을 해결하고 모델의 훈련을 촉진한다. learning rate를 높일 수 있고 모델에서 규제로서 작용할 수 있다.
처음엔 whitening을 위해 activation을 수정하여 매 training step마다 input data에서 input data들의 평균을 빼는 실험을 했지만, 그 결과 input data 전체적으로 더해지는 bias가 평균이 빼지는 것 때문에 gradient에 영향을 미치지 않아서 bias가 'blows up'해버리는 결과를 낳았다.
- whitening: data간의 상관관계를 없애고 0과 1사이의 값으로 정규화하는 것
이를 보완하기 위해 input data의 정규화를 해당 input data 이외의 모든 example data에 대하여 각각 데이터별로 평균과 분산을 구한다음 정규화를 진행하여 gradient에 정규화가 반영되도록 했다.
batch normalization은 효율성을 높이기 위해 두가지 조건을 가진다.
- 화이트닝을 하는 대신, input별로 독립적으로 정규화한다.
- ex) input data = [x1, x2, x3...]일 때, x1은 x1을 기준으로 정규화, x2는 x2를 기준으로 정규화
- training set 전체 대신, mini batch의 평균과 분산을 이용한다.
- 화이트닝을 하는 대신, input별로 독립적으로 정규화한다.
그러나 단순히 데이터를 정규화하는 것은 각 레이어의 표현을 해칠 수 있으므로 batch normalization에 감마와 베타를 추가하여 transformation을 하는 과정을 추가한다.
최종적으로 batch normalization의 과정은 다음과 같다.
결론
Batch normalization의 효과
높은 learning rate 가능: 높은 learning rate는 gradient vanishing이나 gradient exploding을 유발하고 local minima에 빠지게 만들기도 하지만, Batch normalizaton은 이러한 문제를 해결해준다.
모델 규제: model의 generalization 능력을 향상시킨다. Dropout의 의존도를 낮춘다.
'Data Science' 카테고리의 다른 글
빈도주의 vs 베이지안 (0) | 2022.02.06 |
---|---|
[딥러닝/머신러닝] 모델 하이퍼파라미터 튜닝 라이브러리 정리 (0) | 2022.01.28 |
Keras에서 드롭아웃 레이어가 작동하는 방법 (0) | 2022.01.02 |
딥러닝에서의 '차원' 이라는 용어에 대한 고찰 (0) | 2022.01.02 |
[딥러닝 기본] RNN (0) | 2021.11.08 |