안녕하세요, 이번 포스팅에서는 Batch Normalization에 대해서 배워보도록 하겠습니다.
Batch Normalization은 우리가 일반적으로 머신러닝을 할 때 사용하던 Feature Normalization과는 차이가 있습니다.
Feature Normalization는 Input 변수에 적용되며, Input 변수간의 상관관계를 없애거나, 모든 변수간에 일정한 평균과 분산을 가지도록 정규화시키는 용도로 사용됩니다.
신경망에서의 Feature Normalization의 용도는 0으로 수렴하는 문제를 없애고, learning 속도를 높이는 데에 있습니다.
하지만 Feature Normalization은 Input 변수에만 정규화를 하므로, 신경망이 깊어질수록 효과는 사라지게 됩니다.
이를 극복하기 위해 나온것이 Batch Normalization입니다.
Batch Normalization은 아래의 그림처럼 하나는 Layer를 지날 때마다 정규화를 시켜줍니다.
Batch Normalization을 적용한 결과, 기존에 발생하던 신경망이 깊어질수록 특정 값으로 수렴하는 문제가 완화됩니다.
그렇다면 이제 Batch normalization의 과정에 대해서 설명드리도록 하겠습니다.
실제로 전체 데이터를 사용하여 Normalization 하는 것이 가장 성공적인 결과를 가져올 수 있겠지만, 시간적, 경제적 모든 요소를 고려하면 mini-batch를 이용한 Normalization이 가장 효율적이라고 할 수 있다. 이 때, mini-batch의 선정은 전체 데이터셋은 대표할 수 있도록 설정해주어야 좋은 결과를 얻을 수 있다.
우선 mini-batch를 이용하여 데이터를 정규화 시켜줍니다. 그리고 정규화로 끝나는 것이 아니라, 정규화 된 값을 원래대로 되돌릴 수 있는 gamma와 beta값 또한 얻을 수 있습니다.
우리는 나중에 학습을 할 때, gamma와 beta값을 BP를 통해 보다 최적의 값으로 업데이트 할 수 있게됩니다.
즉 모델의 성능을 향상 시키는 방법으로 정규화 시키는 평균과 표준편차 또한 학습을 시키는 것입니다.
BN층은 또 하나의 Layer로 볼 수 있습니다.
'데이터 다루기 > 신경망' 카테고리의 다른 글
[신경망] 14. Convolution Neural Network (0) | 2019.06.04 |
---|---|
[신경망] 13. Regularization (0) | 2019.06.04 |
[신경망] 11. Weight Initialization (0) | 2019.06.04 |
[신경망] 10. Parameter Search Method (0) | 2019.06.04 |
[신경망] 9. Deep Learning (0) | 2019.06.03 |