BatchNormalization의 이해
- BatchNormalization의 사용 목적과 연산 방식에 대해 알아보자.
Index
- Batch Normalization이란 무엇인가?
- 수식으로 이해하는 Batch Normalization
- Batch Normalization의 Gamma, Beta의 의미
- Test 단계에서의 Batch Normalization 계산
BatchNormalization이란 무엇인가?
- Layer로 들어가는 입력값이 너무 퍼지거나 너무 좁아지지 않게 해주는 인공 신경망 기법
- Batch Normalization 다음 시점에서 주로 적용된다.
- mini-batch가 layer를 통과하여 획득한 weighted sum값이 activativation function에 들어가기 전 시점
수식으로 이해하는 Batch Normalization
수식을 적용해보자
다음과 같이 5000개의 Data Set을 50개의 mini batch로 분리해서 어떠한 Neural Network Layer를 통과하고 BatchNormalization Layer로 들어간다고 해보자.
그러면 mini-batch가 다음과 같이 Batch Normalization Layer로 들어가게 될 것이다.
Batch Normalization 내부에서는 위에서 보았던 수식을 통해 입력값들을 정규화(Normalization)한다. 이때 Gamma, Beta는 딥러닝 네트워크를 트레이닝하는 과정에서 채워진다. 즉, Convolution layer에서의 weight, bias와 같은 역할을 하게 된다.
Batch Normalization의 Gamma, Beta의 의미
Test 단계에서의 Batch Normalization 계산
Training 단계에서는 mini-batch별 평균값과 분산값을 구할 수 있었다. 하지만 Test단계에서는 단일 입력값이 들어올 경우도 있을 텐데 이때 Gamma와 Beta값은 어떻게 구할까?
이는 간단하게 구할 수 있다. 바로 Training 단계에서 구한 mini-batch별 평균값들의 평균, 분산값들의 분산을 가져다가 쓰면 된다.
위 내용은 2D Tensor같이 단일 채널인 경우에만 가능한 연산인데, 이를 3D Tensor로 확장하면 어떻게 될까? 이는 간단하게 확장된다. Gamma와 Beta, 평균, 분산값을 채널별로 들고 있으면 된다.