앞서 기울기 소실과 폭주 문제에서 배치정규화를 다뤘었는데, 이해가 부족한 것 같아 배치정규화에 대해서 다시 공부해보는 포스팅을 작성하게 되었습니다.

 

배치정규화란?

배치 정규화(batch normalization, BN)는 층으로 들어가는 입력값이 한쪽으로 쏠리거나 너무 퍼지거나 너무 좁아지지 않게 해주는 인공신경망 기법이다. 여러 입력값을 모은 배치에 대해, 각 층의 입력값의 평균 표준편차를 다시 맞추어 주어, 입력값이 쏠리는 것을 막는다. (위키백과)

입력에서 출발해서 네트워크를 통과하다가 Σ(weights)해서 활성화함수를 통과하기 전에 그 입력값에 대해서 배치정규화를 하게 됩니다.

각 노드들에 전달되는 이 입력값들(빨간점)은 일정한 값을 갖고 있지 않습니다. batch에 대해서 랜덤한 값을 가지고 있다할 수 있는데, batch가 n일 때, n개에 대해서 다음 노드로 전달되는 입력값(빨간점)이 달라진다는 것입니다. 이 값들은 어떠한 분포를 따르고 있습니다

[ 배치정규화 동작 ]

  1. 미니배치 하나에 대한 평균
  2. 미니배치 하나에 대한 분산
  3. 정규화 (평균0, 분산1)
  4. 정규화된 값에 γ를 곱하고 β를 더해줌 (배치정규화의 결과) 

γ와 β는 어떻게 결정 할까요?

γ와 β를 weight를 학습하듯 학습파라미터로 두어 학습시킵니다. 그러면 노드 당 2개씩 학습할 파라미터들이 추가가 되게 됩니다. 

β가 더해지는 것은?

신경망에서 다음 노드로 전달되는 입력값은 weight와 입력벡터을 곱하고 bias를 더해 구해집니다.(wx+b) 여기에서 bias도 학습되는 파라미터입니다. 그리고나서 활성화함수를 거치게 됩니다 그래서 일반적으로는 g(wx+b)의 값을 가지게 됩니다. 하지만 배치정규화를 하면 β가 더해지니까 wx+b에서 bias를 학습시킬 필요가 없게 됩니다. bias 학습을 β가 해주는 것입니다. 그래서 활성화함수 통과하기전에 wx에 대해 배치정규화를 하게됩니다.  g(BN(wx))

[ test시의 배치정규화 ]

테스트시에는 배치에 대해서 구한 평균들의 평균, 분산들의 평균을 합니다.

분산 평균 구할 때, m / (m-1)을 해주는 이유?

샘플 분산을 구할때는 보통 위와 같은 식으로 계산합니다. 하지만 이는 실제 모분산 값과 다릅니다.

실제로 E[샘플분산] 하면 위와 같이 실제 모분산과  (m-1)/m배 만큼의 차이가 있다는 것입니다. 이를 보정해주기 위해 m/(m-1)을 곱해주는 것입니다.

 

 

+)

실제 논문에서는 정규화 할때 분모에 ε을 더해주고 루트를 씌워주는데, 이는 분모가 0이되는 것을 방지하기 위한 작은 양수 값입니다.

'AI > Deep Learning' 카테고리의 다른 글

Regularization (규제화)  (0) 2022.11.07
CNN (Convolution Neural Network, 합성곱 신경망)  (0) 2022.11.03
loss function (손실함수)  (0) 2022.10.20
optimizer (옵티마이저)  (0) 2022.10.20
activation function (활성화함수)  (0) 2022.10.20

+ Recent posts