Batch normalization

강민수·2022년 10월 6일
0

Reference:
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
Rethinking "Batch" in BatchNorm
How Does Batch Normalization Help Optimization?

Internal covairate shift

Model에서 각 layer의 parameter가 변한다는 것은 결국 layer의 output distribution의 변화로 이끌 것 이다. 그렇다면 우리의 모델은 학습 하는 동안 계속해서 변하는 input distribution에 적응해야 하는 문제가 생긴다.

Learning system에서 input distribution이 바뀌는 문제를 experiece covariate shift라고 부른다.

이런 covariate shift가 train과 test set 에서의 input distribution차이 뿐만 아니라 모델 내부적으로도 layer의 input 에서도 발생 할 수 있다라고 생각하고 이를 intrernal Covariate shift라고 부른다.
그리고 이를 해결할 방안 중 하나로 Batch Normalization을 제안한다.

Batch norm은 다음과 같은 장점을 갖는다.
1. paremeter의 초기값이나, scale에 영향을 덜 받는다.
2. high learning rate를 사용해도 발산할 확률이 적어진다.
3. Dropout의 필요성을 줄인다.

각 layer의 input을 whitening 하여 fixed-distribution을 갖게 만든다면 internal covariate shift의 영향이 줄어 들 것이다.

하지만 layers에 대하여 full withening을 하는 것은 효과적이지 않거나, cost가 많이드는 문제가 생겼고, 각 input scalar feature을 독립적으로 정규화 하는 방법을 채택한다.(mean=0 variance=1)

Batch Normalization


하지만 이런식의 정규화 방식은 Sigmoid 함수에서 [-1,1] 구간을 linear하게 만들어버린다는 단점이 있다.

이 논문은 이런 단점을 해결하기 위해 정규화값 x에 대해 transformation 하는 방식을 소개한다.

γ,β\gamma, \beta는 학습되는 parameter이다

minibatch size m에 대하여 batch normalization은 다음과 같이 정의된다.

Batch Norm and ICS

그렇다면 batch norm 은 정말로 ICS를 해결하는데 어떤 역할을 하는 것일까?

batch norm 을 적용한 model 에서 랜덤한 noise를 bath norm 이후에 적용하는 방식의 실험에서 noisy batch norm model이 ics가 더 높게 관측 됨에도 standard model 보다 성능이 좋음을 알 수 있다.
-> batch norm이 ics를 줄여서 성공적이었다고 말할 수 있는가?

ICS측정 기준

ICS의 변화를 보기 위해선 그 기준이 필요하다. 해당 논문은 다음과 같은 기준을 제시한다

Gt,iG\prime_{t,i}는 i-1번째 까지 가중치를 update 한후 t번째에서 사용 했던 데이터셋을 그대로 사용하여 i번째 까지 convolution 결과로 나온 output의 loss에 대한 gradient를 말하는 것이라고 해석해 봤다.

즉 가중치를 업데이트 한다면 i-1번째 layer까지 ICS가 발생 할 것이고
그에 따라 i번째 layer의 output이 변경된다면 해당하는 gradient도 같이 변할 것이다. 즉 input의 변화가 얼마나 gradient에 영향을 미쳤는지 말해주는 것이다. 그렇다면 위 두 값의 차이는 ICS의 변화량을 말해 줄 것이다.


cos similarity는 두 값이 비슷할 수록 1에 가까운 값을 보여 줄 것이고 L2-norm은 0에 가까운 값을 보여 줄 것이다.
->즉 Batch normalization을 적용하였을 때 오히려 ICS가 늘어나는 모습을 보여준다.

그렇다면 왜 Batch normalization이 효과적인가?
->optimization 과정을 smooth하게 만들기 때문이다.

0개의 댓글