batch normalization 개념 간단하게
internal covariate shift 현상을 해결하기 위해 등장
layer를 지날수록 layer의 parameter의 변화에 따라 dataset의 분포가 변화한다고 생각한 것이다.
위와 같이 data가 layer를 지나가면서 분포가 변화한다고 생각한 것이 covariate shift
그런데 진짜있는 것인지는 논란이 많다
batch normalization은 각 layer마다 batch set을 normalization하여 분포의 변형을 막겠다는 것이다.
batch의 평균과 분산을 구해서 각 입력값을 normalize 시킨다
마지막 $\gamma , \beta$는 normalize하면 activation의 nonlinearity를 잃어버리기 때문에 이를 조정하기 위함이고
학습해야하는 parameter라고 한다.
보통 batch normalization은 활성화함수(그림에서 ReLU) 앞에 배치를 함
위와 같이 신경망에 포함되기때문에 backpropagation으로 $\gamma, \beta$는 학습이 가능함.
test할 때는 batch normalization을 사용하는 방법이 다르다.
train 할 때 batch마다 평균과 분산이 다르기 때문에
각 batch마다 평균과 분산을 구한 것을 sample mean, sample variance이라 하고 이것을 따로 저장해놓고
나중에 evaluation 할 때는 저장해놓은 sample mean, sample variance의 각각 평균을 구하여 <이것을 learning mean, learning variance라고 함>이것을 normalization 용으로 사용한다.
covariate shift에서는 논란이 많다지만, batch normalization을 활용하면 신경망 학습에 효과적이라는 것은 분명한 사실이다
https://m.blog.naver.com/laonple/220808903260
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
딥러닝 시대의 parameter search (0) | 2024.05.30 |
---|---|
결정을 기계에 맡기는 시대(deductive, inductive) (0) | 2024.05.09 |
hyperparameter 개념 간단하게 (0) | 2024.04.02 |
라그랑주 승수법 간단하게 (0) | 2024.03.01 |
gradient descent를 위한 gradient vector의 이론적 설명 간단하게 (0) | 2024.03.01 |