본문 바로가기
Computer Science/AL, ML

Batch Normalization

by Gofo 2022. 4. 21.

Batch Normalization

Input을 normalization을 하는 것이 아닌 중간의 것을 normalization 한다.

 

Normalization Target : a vs. z

a(비선형변환의 결과)를 normalization하지 않고 z(선형변환의 결과)를 normalization 한다.

 

방법

Mini-batch의 z에 대해 normalization을 수행한다.

 

Mini-batch에 m 개의 sample이 존재한다고 하자.(mini-batch size = m)

평균과 분산을 구해서 그것을 이용해서 normalization을 한다.

 

아래를 이용해서 $z^{[l](i)}$ 대신에 $\widetilde{z}^{[l](i)}$을 사용한다.

 

Parameter $\beta$, $\gamma$

$z_{norm}^{(i)}$을 하면 평균은 0, 분산은 1이 된다.(정규분포 형태)

이 평균과 분산이 최적의 값인지는 모르기 때문에 learnable parameter를 두어 최적의 값을 찾도록 한다.

$\beta$와 $\gamma$는 learnable parameter이기 때문에 hyperparameter가 아니다.

 

모델에서 normalization이 필요 없다고 판단하면 $\gamma = \sqrt{\sigma ^2 + \epsilon}$, $\beta = \mu$가 된다.

이 때 $\widetilde{z}^{(i)} = z^{(i)}$가 된다.

 

특징

  • learning speed를 높일 수 있다.
  • input layer의 value를 normalization하는 것이 아니라 hidden unit의 input에 normalization 한다.
  • Mini-batch에 대해 적용한다. (mini-batch의 평균과 분산을 이용해서 normalization 한다.)

 

장점

  • 많은 조합의 hyperparameter가 잘 동작하도록 해준다.
  • Hyperparameter search problem을 쉽게 만들어준다.
  • Neural network가 hyperparameter의 선택에서 좀 더 robust하도록 한다.
  • Deep network가 훈련이 잘 되도록 해준다.

 


Batch Normalization to Network

결과를 내는데 방해가 될 수 있기 때문에 output layer에는 normalization을 적용하지 않는다.

 

 

Parameter $b$의 제거

Batch normalization은 z에 normalization을 하는 것이고 learnable parameter $\gamma$와 $\beta$를 같이 사용한다.

때문에 $z = Wa + b$에서의 b는 batch normalization의 $\beta$와 역할이 같기 때문에 의미가 사라진다.

따라서 계산 cost를 줄이기 위해서 b를 생략한다.

 

이 때의 parameter는 $w$, $\gamma$, $\beta$가 된다.

 


Batch Normlization at Test Time

Training에서 batch normalization을 하였으면 test 시에도 batch normalization을 해야 한다.

 

문제

Test set의 sample은 많지 않다.

이로 인해 mini-batch 안에도 충분한 sample이 존재하지 않는다.

 

따라서 평균과 분산을 구하기 힘들어진다.

 

해결

Training에서 사용된 여러 개의 $\mu$와 $\sigma$를 모아서 그들의 평균된 버전(혹은 exponentially weighted average)을 사용한다. (마지막, 그 앞에 등등)

 

 

'Computer Science > AL, ML' 카테고리의 다른 글

Optimization  (0) 2022.04.21
[Batch Normalization] Covariate Shift Problem  (0) 2022.04.21
Batch, Mini-batch  (0) 2022.04.21
Normalization  (0) 2022.04.20
Weight Initialization - Gradient Problem 방지  (0) 2022.04.20

댓글