Deep learning/모델 구현

11. 학습 관련 기술들 (3) - 배치 정규화

jwjwvison 2021. 4. 23. 21:52

이 포스팅은 밑바닥부터 시작하는 딥러닝을 공부하고 정리한것 입니다.


 앞 절에서는 각 층의 활성화값 분포를 관찰해보며, 가중치의 초깃값을 적절히 설정하면 각 층의 활성화값 분포가 적당히 퍼지면서 학습이 원활하게 수행됨을 배웠다. 그렇다면 각 층이 활성화를 적당히 퍼뜨리도록 강제해보면 어떨까? 실은 배치 정규화(Batch Normalization)가 그런 아이디어에서 출발한 방법이다.

 

1. 배치 정규화 알고리즘

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

  1. 학습을 빨리 진행할 수 있다

  2. 초깃값에 크게 의존하지 않는다

  3. 오버피팅을 억제한다

 

 배치 정규화의 기본 아이디어는 앞에서 말했듯이 각 층에서의 활성화값이 적당히 분포되도록 조정하는 것이다. 그래서 다음 그림과 같이 데이터 분포를 정규화하는 '배치 정규화 (batch Norm) 계층'을 신경망에 삽입한다.

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

0으로 나누는 사태를 방지

 식 6.7은 단순히 미니배치 입력 데이터 [x1,x2,...,xm]을 평균 0, 분산 1인 데이터로 변환하는 일을 한다. 이 처리를 활성화 함수의 앞(혹은 뒤)에 삽입함으로써 데이터 분포가 덜 치우치게 할 수 있다.

 

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

r=확대, b=이동

 거의 모든 경우에서 배치 정규화를 사용할 때의 학습 진도가 빠른 것으로 나타난다. 지금까지 살펴본 것처럼 배치 정규화를 사용하면 학습이 빨라지며, 가중치 초깃값에 크게 의존하지 않아도 된다. 배치 정규화는 이처럼 장점이 많으니 앞으로 다양한 분야에서 활약한다.