프로필사진

IT Anthology/encyclopedia

[밑러닝] 배치 정규화(Batch Normalization)

다각 2020. 4. 15. 20:12

* 이 글은 <밑바닥부터 시작하는 딥러닝2 (저자: 사이토 고키)> 책을 읽으며 정리한 글입니다.
* 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌,
필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다.


목차

  1. 배치 정규화(Batch Normalization)
  2. 배치 정규화의 효과
  3. NLP에서의 배치 정규화는?

1. 배치 정규화(Batch Normalization)

배치 정규화에 대해 정식으로 소개하기 전에, 이 방식이 왜 그렇게 열광받는지 소개하겠다.
배치 정규화에는 다음과 같은 장점이 있다.

 

  1. 학습을 빨리 진행할 수 있다.
  2. 초깃값에 크게 의존하지 않는다.
  3. 오버피팅을 억제한다.

배치 정규화는 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것이다. 조금 더 자세히 얘기를 해보자면, 학습 시에 평균이 0, 분산이 1이 되도록 미니배치 단위로 데이터를 정규화한다.
미니배치 $B = {x_1, x_2, ..., x_m}$에서 $m$개의 입력 데이터가 있을 때, 평균 $\mu_B$와 분산 $\sigma^2_B$이 있을 때, 다음과 같이 표준화(normalization)가 이루어진다.
$$
\begin{aligned}
&\mu_B \gets \frac {1}{m} \sum^m_{i=1}{x_i} \\[3mm]
&\sigma_B^2 \gets \frac {1}{m} \sum^m_{i=1}{{(x_i - \mu_B)}^2} \\[3mm]
&\hat {x_i} \gets \frac {x_i - \mu_B}{\sqrt{\sigma_B^2+\epsilon}}
\end{aligned}
$$
이때 $\epsilon$은 0으로 나눠지는 것을 방지하기 위해 넣어준다.
위의 식을 거쳐 $B = {x_1, x_2, ..., x_m}$은 $B = {\hat{x_1}, \hat{x_2}, ..., \hat{x_m}}$으로 변환된다.

이렇게 모든 배치마다 평균 0, 분산 1로 고정하여 표준화시키는 것은 각 배치끼리 서로 독립적이라고 가정했기 때문에 가능했다. 따라서 이렇게 표준화를 할 경우 배치끼리 상호독립적이지 않은 상황일 때는 제대로 학습을 하지 못한다. 이를 방지하기 위해 각 배치마다 확대(scaling)와 이동(shifting) 변환을 수행한다.
$$
y_i \gets \gamma \hat{x_i} + \beta
$$
$\gamma$와 $\beta$는 처음에 아무런 선형 변환이 없는 상태($\gamma = 1$, $\beta = 0$)에서 시작하여 역전파를 통해 업데이트된다.

 

2. 배치 정규화의 성능 개선

사실 배치 정규화만 추가했다고 해서 뒤집어질만한 성능 개선이 일어나는 것은 아니다. 다음과 같은 파라미터 튜닝이 있을 때 배치 정규화는 더욱 시너지를 얻는다.

 

  1. 학습률 값을 키운다.
  2. drop out을 제거한다.
  3. L2 규제를 줄인다.
  4. 학습률 decay를 빠르게 한다.
  5. local response normalization을 제거한다.
  6. training example의 per-batch shuffling을 추가한다.
  7. photometric distortion을 줄인다.

(출처: README - SanghyukChun's Blog)

 

3. NLP에서의 배치 정규화는?

사실 위(2번)에서 언급한 것은 ImageNet에서 좋은 성능을 내는 신경망을 구성하기 위해 하는 일들이다.
하지만 NLP(자연어처리)에서는 배치 정규화가 크게 효과가 없다고 한다.
실제로 넷상에는 다음과 같은 질문이 올라와 있기도 하다 (질문 출처: 링크).

 

 

NLP는 이미지보다는 층이 얕은 모델을 주로 사용하기 때문에, 깊은 층에서 눈부신 활약을 하는 배치 정규화가 상대적으로 활약을 잘 못한다고 한다.

 


 

정리
배치 정규화는 기울기 소실(gradient vanishing)이나 기울기 폭발(gradient exploding)을 효과적으로 방지하는 도구이다.

또한 과적합(오버 피팅, over-fitting)을 방지하는 역할을 하는데, 다음 포스트에서는 배치 정규화 이외에 과적합을 방지하는 다양한 방법들을 탐구해 보도록 하자.