- 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에 넣어준다.
- ex)
- Advantage
- Internale covativant shift 감소
- Learning rate 를 크게 갈 수 있는 장점이 있다.
- Much smoother loss function
- Disadvantage
- Memory가 많이 들고, 시간이 오래걸린다.
- 배치의 인스턴스를 기억해야되어서 비쌈..
- Batch size 가 적을 경우 적용하기 어려움
- RNN과 구조적으로 맞지 않다.
- 향후 layer normalization에서 문제들이 해결 된다.
- Memory가 많이 들고, 시간이 오래걸린다.
'DataScience > DeepLearning' 카테고리의 다른 글
[딥러닝 필기] week7. CNN Basics: CNN Structure (0) | 2022.04.10 |
---|---|
[딥러닝 필기] week6. CNN Basics: Convolution (0) | 2022.03.27 |
[딥러닝 필기] week6. Deep Learning-Various Technique: Dropout (0) | 2022.03.27 |
[딥러닝 필기] week3. Neural Networks - Learning Algorithm (0) | 2022.03.05 |
[딥러닝 필기] week2. Neural Networks Overview (0) | 2022.03.01 |