Batch Normalization
배치 정규화
각 층이 활성화를 적당히 퍼뜨리도록 ‘강제’하는 것을 배치 정규화Batch Normalization라고 한다. 배치 정규화는 2015년에 제안되어 세상에 알려진지 얼마 되지 않았지만 많은 연구자와 기술자들이 즐겨 사용하는데, 배치 정규화가 주목받는 이유는 다음과 같다.
- 학습 속도 개선
- 초깃값에 의존하지 않는다
- 오버피팅을 억제한다(드롭아웃 등의 필요성 감소).
배치 정규화는 활성화값이 적당히 분포되도록 조정하는 것이기에 활성화 함수의 앞 또는 뒤에 배치 정규화 계층을 삽입하여 작동한다. 배치 정규화는 학습 시 미니배치를 단위로 정규화 하는데, 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화한다.
\[\mu_B \leftarrow \frac{1}{m} \sum_{i=1}^{m}x_i \\ \sigma_B^2 \leftarrow \frac{1}{m} \sum_{i=1}^m(x_i - \mu_B)^2 \\ \hat{x_i} \leftarrow \frac{x_i - \mu_B}{\sqrt{\sigma^2_B+\epsilon}}\]미니배치 $B = (x_1,x_2,…,x_m)$이라는 m개의 입력 데이터의 집합에 대해 평균 $\mu_B$와 분산 $\sigma_B^2$을 구한다. 그리고 입력 데이터를 평균이 0, 분산이 1이 되게 정규화하고, 이 과정에서 $\epsilon$은 아주 작은 값으로, 0으로 나누는 상황을 예방하는 역할이다 또 배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대와 이동 변환을 수행한다.
\[y_i \leftarrow \gamma\hat{x_i} + \beta\]$\gamma$가 확대를 $\beta$가 이동을 담당하며, 두 값은 처음에는 각각 1, 0부터 시작하고 학습하면서 적합한 값으로 조정해간다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: