Broccoli's House

#5-(3) 학습 관련 기술 : 배치 정규화 본문

공부/딥러닝

#5-(3) 학습 관련 기술 : 배치 정규화

김콜리 2018. 3. 16. 02:51

※ 이 글의 내용은 O'REILLY의 <밑바닥부터 시작하는 딥러닝> 책을 기반으로 한다.




학습 관련 기술 : 배치 정규화



  • 배치 정규화
 - 배치 정규화(Batch Normalization) : 신경망의 골치 아픈 점은 바로 기울기 소실 문제(Gradient Vanishing Problem)이 발생한다는 것이다. 이 문제를 해결하기 위하여 시그모이드(sigmoid)나 하이퍼탄젠트(tanh) 함수에서 렐루(ReLU)로의 활성화 함수 변화, 가중치의 초기값 설정 등의 방식을 채용하였다. 가중치의 초기값을 적절히 설정하면 각 층의 활성화 값 분포가 적당히 퍼지면서 학습이 원활하게 수행된다. 이러한 점에 착안하여 각 층의 활성화 값을 강제로 퍼뜨리는 것이 바로 배치 정규화이다. 

 - 보통의 경우 신경망 모델에 데이터를 입력하기 전에 전체 데이터 세트를 정규화하는 것이 일반적이지만, 배치 정규화는 그 이름처럼 미니-배치(mini-batch) 별로 학습 바로 전(후)에 데이터를 정규화하는 방식이다. 

 - 배치 정규화의 장점에는 학습 속도를 빠르게할 수 있다는 점, 매개변수(가중치)의 초기값에 크게 의존하지 않는다는 점 그리고 과대적합(Overfitting)을 억제한다는 점이다. 배치 정규화는 알고리즘 자체에 규제(Regularization) 효과가 있어서 가중치를 작게하여 과대적합이 생기지 않도록 해준다. 또한 배치 정규화를 적용함으로써 또 다른 가중치 규제 항이 필요가 없어지며, 드롭아웃(Dropout)을 적용할 필요가 없어 학습 속도가 빨라진다.



 - 각 층에서의 활성화 값이 적당히 분포되도록 조정하는 것이 배치 정규화(Batch Normalization)이고, 이 배치 정규화 계층을 신경망에 적절히 삽입하여주면 된다. 배치 정규화는 활성화 함수의 앞이나 뒤쪽에 삽입할 수 있지만, 대게는 활성화 함수의 바로 앞에 삽입한다.



 - 배치 정규화는 기본적으로 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화한다. 알고리즘의 수식적인 표현은 위와 같다. 사이즈가 m인 미니-배치 데이터에 대하여 평균과 분산을 구한다. 그리고 이 입력 데이터를 평균이 0, 분산이 1이 되도록(적절한 분포가 되도록) 정규화한다. 



 - 신경망은 비선형성을 가지고 있어야 표현력이 커져 복잡한 함수를 표현할 수 있는데, 위와 같이 평균이 0, 분산이 1로 고정시키는 것은, 활성화 함수의 비선형성을 없애버릴 수 있다. 예를 들어, 활성화 함수가 시그모이드 함수일 때 평균이 0, 분산이 1로 데이터를 고정시키면 활성화 함수를 통과한 값들은 거의 대부분 시그모이드 함수의 직선(선형) 부분에 머물게 된다. 비선형성이 거의 사라진 것이다. 이런 문제를 없애기 위하여 정규화된 데이터에 위와 같이 고유한 확대(scale, γ)와 이동(shift, β) 변환을 수행한다. 확대 인자(γ)와 이동 인자(β)는 역전파에 의해 학습된다. 이렇게 하면 활성화 함수에 비선형성이 부여될 수 있다.



 - 위의 그래프는 손글씨 인식 데이터 세트 MNIST에 배치 정규화 계층을 사용한 신경망 학습과 사용하지 않은 신경망 학습을 비교한 것이다. 배치 정규화 계층을 사용한 신경망 학습이 그렇지 않은 것보다 훨씬 더 학습 속도가 빠른 것을 볼 수 있다. 



Comments