본문 바로가기
Learning-driven Methodology/DL (Deep Learning)

[Deep Learning] 배치 정규화 (Batch Normalization)

by goatlab 2022. 1. 3.
728x90
반응형
SMALL

배치 정규화 (Batch Normalization)

 

학습의 효율을 높이기 위해 도입되었다. batch normalization은 학습률을 높게 설정할 수 있기 때문에 학습 속도가 개선된다. 그리고 학습을 할 때마다 출력값을 정규화하기 때문에 weight 초기값 선택의 의존성이 적어진다. 마지막으로 overfitting 위험을 줄일 수 있고 gradient vanishing 문제도 해결 가능하다.

 

 

batch normalization는 activation function의 활성화 값 또는 출력값을 정규화 (정규분포)하는 작업을 말한다. 다시 말해, 신경망의 각 layer에서 데이터 (배치)의 분포를 normalization하는 작업이다. 일종의 noise를 추가하는 방법으로 (bias와 유사) 이는 batch마다 normalization를 함으로써 전체 데이터에 대한 평균의 분산과 값이 달라질 수 있다. 학습을 할 때마다 활성화 값과 출력값을 normalization하기 때문에 weight 초기화 문제에서 비교적 자유로워진다.

 

각 hidden layer에서 normalization를 하면서 입력 분포가 일정하게 되고, 이에 따라 learning rate을 크게 설정해도 결과적으로 학습속도가 빨라지게 된다. 

 

입력 분포의 균일화

 

학습을 할 때 hidden layer의 중간에서 입력 분포가 학습할 때마다 변화하면서 가중치가 엉뚱한 방향으로 갱신될 문제가 발생할 수 있다. 신경망의 층이 깊어질수록 학습 시에 가정했던 입력 분포가 변화하여 엉뚱한 학습이 될 수 있다.

 

batch normalization algorithm

 

batch normalization는 학습 시의 mini batch를 한 단위로 normalization를 하는 것으로 분포의 평균이 0, 분산이 1이 되도록 normalization하는 것을 말한다.

 

input으로 사용된 mini batch의 평균과 분산을 계산하고 hidden layer의 활성화 값과 출력값에 대해서 평균이 0, 분산이 1이 되도록 normalization을 (변환)한다. 이로써 데이터 분포가 덜 치우치게 되고 batch normalization 단계마다 확대 (scale), 이동 (shift)과 변환 (transform)을 수행한다. 

 

또한, batch normalization는 weight의 scale을 normalization하여 gradient exploding을 방지한다.

 

https://www.analyticsvidhya.com/blog/2021/03/introduction-to-batch-normalization/

 

Batch Normalization | What is Batch Normalization in Deep Learning

Batch normalization is the process to make neural networks faster and more stable through adding extra layers in a deep neural network.

www.analyticsvidhya.com

 

 

728x90
반응형
LIST