ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NLP] 활성화값 분포를 고르게 하는 배치 정규화 Batch Normalization
    ML/NLP 2020. 4. 24. 03:52

     

    이전 포스팅에서는 각 층의 활성화값 분포를 관찰해보며,

     

    가중치의 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행됨을 봤다.

     

    이번 포스팅에서는 각 층이 활성화를 적당히 퍼뜨리도록 '강제'하는 아이디어에서 시작한 배치 정규화(Batch Normalization)를 봐보자.

     

     

     

     

     

    배치 정규화 알고리즘


    배치 정규화가 주목받는 이유는 다음과 같다.

     

    1. 학습 속도가 개선된다.
    2. 초깃값에 크게 의존하지 않는다.
    3. 오버피팅을 억제하여 드롭아웃 등의 필요성이 감소한다.

     

     

    배치 정규화의 기본 아이디어는 앞서 말했듯 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것이다.

     

    그래서 [그림 1]과 같이 데이터 분포를 정규화하는 '배치 정규화(Batch Norm) 계층'을 신경망에 삽입한다.

     

     

    그림 1

     

    배치 정규화는 그 이름과 같이 학습 시 미니배치를 단위로 정규화한다.

     

    구체적으로는 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화한다.

     

    수식은 다음과 같다.

     

    그림 2

     

     

    [그림 2]는 미니배치 입력 데이터 {x1, x2, ..., xm}을 평균 0, 분산 1인 데이터로 정규화하는 일을 한다.

     

    이 처리를 활성화 함수의 앞(혹은 뒤)에 삽입함으로써 데이터 분포가 덜 치우치게 할 수 있다.

     

     

    배치 정규화 계층마다 이 정규화된 데이터에 고유한 확대(scale)와 이동(shift) 변환을 수행한다.

     

    수식은 다음과 같다.

     

    그림 3

     

    이 식에서 γ가 확대를, β가 이동을 담당한다.

     

    두 값은 γ=1, β=0부터 시작하고, 학습하면서 적합한 값으로 조정해간다.

     

     

     

    배치 정규화 알고리즘은 신경망에서 순전파 때 적용되고, 이를 계산 그래프로 [그림 4]와 같이 그릴 수 있다.

     

    그림 4 

     

     

     

     

     

    배치 정규화의 효과


    배치 정규화 계층을 사용한 실험을 해보자.

     

    MNIST 데이터셋을 사용하여 배치 정규화 계층을 사용할 때와 사용하지 않을 때의 학습 진도가 어떻게 달라지는지 결과만 확인해보겠다.

     

     

    그림 5

     

    [그림 5]와 같이 배치 정규화가 학습을 빨리 진전시키고 있다. 

     

     

     

    [그림 6]은 가중치 초깃값의 표준편차를 다양하게 바꿔가며 학습 경과를 관찰한 그래프이다.

     

    실선이 배치 정규화를 사용한 경우이고, 점선이 사용하지 않은 경우이다. 

     

    가중치 초깃값의 표준편차는 각 그래프 위에 표기했다.

     

    그림 6

     

    거의 모든 경우에서 배치 정규화를 사용할 때의 학습 진도가 빠른 것으로 나타난다.

     

     

    지금까지 살펴본 것처럼 배치 정규화를 사용하면 학습이 빨라지며, 가중치 초깃값에 크게 의존하지 않아도 된다.

     

    배치 정규화는 이처럼 장점이 많으니 앞으로 다양한 분야에서 활약할 것이다.

     

    댓글

dokylee's Tech Blog