본문 바로가기
컴퓨터비전/CNN

[딥러닝] 배치 정규화(Batch Normalization)

by PIAI 2022. 3. 13.

정규화

일반적인 2가지 정규화 표현 방법이다.

기본적으로 정규화를 하는 이유는 학습을 더 빨리하고, Local optimum 문제에 빠지는 가능성을 줄이기 위해서이다.

아래의 그림을 보면 최저점을 찾을 때 정규화를 하지 않으면 global optimum지점을 찾지 못하고, local에 머물러 있게 되는 문제가 발생한다. 이러한 문제점은 정규화로 local optimum에 빠질 수 있는 가능성을 낮춰주게 된다.

https://eehoeskrap.tistory.com/430

 

Internal Convariate Shift

 

https://gaussian37.github.io/dl-concept-batchnorm/

 

  • Convariate Shift: 이전 레이어의 파라미터 변화가 현재 레이어의 입력 분포에 영향을 끼치는 현상
  • Internal Convariate Shift: 레이어를 통과할 때 마다 Convariate Shift 가 일어나면서 입력의 분포가 약간씩 변하는 현상

 

위 그림을 보면 젤 왼쪽의 원본 이미지 부터 Activation을 통과할때마다 약간씩 분포가 변하고 있다. 이와 같이 Batch 단위로 학습을 할때 발생하는 문제이다. 이 문제를 개선하기 위한 방법이 Batch Normalization 이다.

 

Batch Normalization

위의 논문을 보면, 미니배치로 정규화를 한뒤, scale과 shift를 감마(γ) 값, 베타(β)값을 통해 실행한다. 위의 식을 처음부터 보면 

  • mini-batch mean: 평균을 구한다.
  • mini-batch variance: 분산을 구한다.
  • normalize: 표준편차를 구한다. (ε은 분모가 0이 되지 않게하기 위함)
  • 학습시킬 scale 과 shift의 식을 구한다

왼쪽은 정규화가 적용된 것이고, 오른쪽은 안된 것이다.

 

Batch Normalization을 사용하지 않으면 오른쪽 그림처럼 변화값들이 점점 더 가중되면서 기존에 학습한 것과 다른 분포를 가지게 된다.

댓글