AI/DL

Batch Normalization (배치 정규화) 이해

우준세 2021. 8. 29. 23:04
728x90
반응형

Batch Normalization (배치 정규화)

- 신경망을 훈련할 때 일반적으로 어려운 한 가지는 가중치를 일정한 범위 내에서 유지해야 한다는 것입니다. 

가중치가 커지기 시작하면 gradient exploding 문제가 발생하고 작아지면 gradient vanishing 문제가 발생합니다. 

 

- 신경망의 입력 데이터 스케일을 조정하는 이유 중 하나는 처음 시작되는 훈련을 안정적으로 시작하기 위함입니다. 

처음 네트워크의 가중치가 랜덤 하게 초기화되어 학습되기 때문에 스케일 조정이 되지 않으면 큰 폭으로 출렁이게 됩니다. 그래서 앞서 CNN을 구현했을 때 입력 데이터의 0 ~ 255 사이의 픽셀 값 대신 0 ~ 1 사이의 스케일로 바꿨습니다.

 

- 입력 데이터의 스케일을 조정했기 때문에 모든 layer의 활성화 출력도 비교적 안정될 것이라 기대하고 훈련합니다. 하지만 네트워크의 훈련이 진행되면 초기의 랜덤 한 가중치 값과 점점 멀어지는 가중치 값이 나오기 때문에 안정될 것이라 생각했던 것은 무너집니다. 논문에서는 이것을 convariate shift라고 합니다.


Batch Normalization 알고리즘 

- 그렇다면 각 layer이 활성화를 적당히 퍼트리도록 '강제' 하면 어떨까요? 

Batch Normalization의 아이디어가 여기서부터 출발한 방법입니다!

 

미니배치 B에 적용되는 batch normalization

 

 

- 배치 정규화 식을 보시면 어렵지 않습니다. 

 

- 미니 배치 B = {x1, x2, x3, ~ xm}이라는 m개의 데이터에 대해 평균과 분산을 구합니다.

그리고 입력 데이터를 평균이 0, 분산이 1이 되게(적절한 분포가 되게) 정규화하는 것입니다! 

normalize 식에 있든 입실론은 0으로 나누는 상황을 막기 위해 사용합니다. 

 

- 마지막 scale and shift의 식은 배치 정규화 계층마다 정규화된 데이터에 고유한 scale과 shift 변환을 수행하는 것입니다. gamma가 scale을 beta가 shift를 담당하며 두 값은 처음에는 1과 0부터 시작하며 학습하면서 적합한 값으로 조정해 가는 것입니다. 즉, 학습되는 파라미터인 것이죠.


Batch Normalization 효과

- 이런 batch normalization이 주목받는 이유가 무엇일까요? 배치 정규화는 2015년에 나온 이후로 많은 연구자와 기술자가 즐겨 사용하고 있으며 이 batch normalization을 사용하여 뛰어난 결과를 달성한 예가 많습니다.

 

1. 학습 속도 개선

2. 초깃값에 크게 의존하지 않음 

3. 오버피팅 억제

 

- 이러한 이유로 batch normalization은 나온 이후로 많이 쓰이고 있습니다.


 

여기까지 batch normailzation에 대해 알아보았습니다. 

 

딥러닝을 공부하면서 나오는 용어들에 대해 하나씩 정리해나갈 예정입니다.

틀린 점이나 질문이 있으시면 댓글로 남겨주세요!

 

 

감사합니다 :) 

 

 

728x90
반응형