DataScience/DeepLearning

[딥러닝 필기] week6. Deep Learning-Various Technique: Batch Normalization

neopin 2022. 3. 27. 16:56
  • internal covariate shift 문제를 해결하기 위해 Batch Noramlization이 나왔다.

Covariate Shift

  • 입력 도메인이 변경되는 현상 (입력의 분포가 변경되는 현상)
  • 입력 되는 샘플의 도메인의 범위나 시점, 모수 등이 변경되는 현상이다.

Internal Covariate Shift

  • 각 net 값들의 분포들이 학습 될 때마다 바뀐다.
  • 이전 net들의 값의 분포들은 다음 net값의 인풋이 될 것 인데,
    분포가 계속 바뀌게 되면 학습이 오래걸리게 된다.
  •  EX)
    • Training Data = { d1, d2, d3, d4}
    • net              = { 0 , 1   , 0 , 1  } <- distribution
    • mini 배치마다 net값을 출력해서 distribution을 보면 달라질 것이다.

Batch Normalization

  • Internal Covatiate Shift문제를 해결하기 위해서 Distored된 Distribution을 Normalization 한다.
  • 입력값이 완전히 바뀌는 것이 아니고, 입력값의 분포를 linear transformation으로 바꾸는 것이다.
    • ex)
      • net1 을 net1_1 = (net1 - mu)/sigma로 변경해서 activation function에 넣으려했는데,
      • net1 = xw+b 가 net1_1이 될때 bias가 사라졌다.
      • 사라진 bias를 살려주기 위해서
      • net1_2 = {gamma}net1_1 + {beta} 로 linear transform을 해주게 된다.
      • 그 후에 activation function에 넣어준다.

  • Advantage
    • Internale covativant shift 감소 
    • Learning rate 를 크게 갈 수 있는 장점이 있다.
      • Much smoother loss function
  • Disadvantage
    • Memory가 많이 들고, 시간이 오래걸린다.
      • 배치의 인스턴스를 기억해야되어서 비쌈..
    • Batch size 가 적을 경우 적용하기 어려움
    • RNN과 구조적으로 맞지 않다.
      • 향후 layer normalization에서 문제들이 해결 된다.