본문 바로가기
딥러닝

배치 정규화를 하는 이유

by Data Lib 2024. 2. 5.

딥러닝에서 배치 사이즈만큼 딥러닝 학습을 하다 보면 배치 정규화(Batch Normalization)라는 개념이 나옵니다. 그런데 왜 배치 정규화를 하는지 모른 체 습관적으로 하고 있죠. 배치 정규화는 Sergey Ioffe와 Christian Szegedy가 2015년에 "Batch Normalization: Acceleration Deep Network Training by Reducing Internal Covariate Shift"라는 제목의 논문에서 소개 되었습니다. 이 글에서 배치 정규화는 무엇이고 왜 필요한지에 대해 알아보겠습니다. 

 

 

Batch normalization이란 

배치 정규화는 신경망의 각 계층 입력을 정규화하여 훈련 안정성과 속도를 향상시키는 딥 러닝 기술입니다. 학습 과정에서 각 배치 단위 별로 데이터가 다양한 분포를 가질 수 있습니다. 이를 각 배치 단위별로 평균과 분산을 이용해 정규화하는 작업을 말합니다. 정규화 작업을 해야 하는 이유는 Internal Covariant Shift 때문입니다. 

내부 공변량 이동(Internal Covariant Shift)

Internal Covariant Shift는 신경망 Batch 단위 학습 중에 발생하는 문제로 학습 과정에서 계층 별로 입력의 데이터 입력 분포가 달라지는 현상을 말합니다. 이전 레이어의 매개변수가 변경됨에 따라 다음 레이어에 대한 입력 분포도 변경되어 신경망이 효과적으로 학습하기가 어려워집니다. 그래서 배치 정규화에 대한 아이디어를 생각하게 되었습니다. 

아이디어

  1. 각 층(Layer)에서의 활성화 값이 적당히 분포되도록 강제 조정하자
  2. 데이터 분포를 정규화(정규분포)하는 '배치 정규화 계층(Batch Norm)'을 신경망에 삽입하자

 

배치 정규화 절차 및 구현방법

 

학습을 할 때 미니배치 단위로 정규화를 수행합니다. 아래의 3단계 절차로 진행합니다. 

1. 정규화

학습 중 각 미니 배치에 대해 BatchNorm은 평균을 빼고 표준 편차로 나누어 입력을 정규화합니다. 이는 Internal Covariant Shift를 줄이는 데 도움이 됩니다.

 

배치 정규화
배치 정규화

 

예를 들어, 입력 값의 분포가 모두 다르게 들어와도 정규화를 통하여 분포를 zero mean gaussian 형태(평균은 0, 표준 편차는 1로 분포)로 조정을 해 줍니다. 위치는 일반적으로 활성화 함수 앞에 삽입하여 데이터 분포를 덜 치우치게 합니다. 

2. 크기(Scale) 및 이동(Shift)

그런 다음 정규화된 값은 학습 가능한 매개변수(감마 및 베타)를 사용하여 크기 조정 및 이동됩니다. 이를 통해 모델은 각 기능에 대한 최적의 크기(scale)와 이동(shift)을 조정하고 학습할 수 있습니다.

3. 학습 가능한 매개변수 조정

감마와 베타는 학습 과정 중에 업데이트되는 학습 가능한 매개변수입니다. 이러한 매개변수는 주어진 작업에 대한 최상의 정규화를 학습할 수 있는 유연성을 신경망에 제공합니다.

 

배치 정규화 어떤 이점이 있어 하는걸까?

  • 훈련 안정화 : 배치 정규화는 내부 공변량 이동을 줄여 훈련 프로세스를 안정화하는 데 도움이 됩니다. 이를 통해 더욱 공격적인 학습 속도와 더 빠른 수렴이 가능해집니다. 정확도에 빨리 도달하는 효과가 있습니다. 
  • 기울기 소실 및 폭발 예방 : 기울기 소실과 폭발 문제를 완화할 수 있습니다. 심층 신경망을 더 쉽게 훈련할 수 있도록 도와줍니다.
  • Overfitting 억제 : 데이터 Scale과 분포를 맞춰주기 때문에 이상치나 편향을 줄이는 효과가 있습니다. 또 정규 분포로 조정해서 모델의 복잡도를 줄여주는 효과가 있습니다. 
  • 가중치 초기화 민감도 감소 : 배치 정규화를 사용하는 신경망은 가중치 초기화를 어떤 것을 선택하든 덜 민감하므로 모델을 더 쉽게 훈련할 수 있습니다. 실제 배치 정교화를 사용하지 않을 경우 초기값이 잘 분포되어 있지 않아 학습이 전혀 진행되지 않은 현상을 확인할 수 있습니다. 
  • 정규화 역할 : 약간의 정규화 효과를 도입하여 경우에 따라 드롭아웃(drop-out)과 같은 다른 정규화 기술의 필요성을 줄여 줍니다. 

 

마무리

배치 정규화는 일반적으로 신경망의 완전 연결 계층(Fully Connected Layer) 또는 컨벌루션 계층의 입력에 적용됩니다. 이는 딥러닝 모델에 일반적으로 사용되는 옵션으로 생각해 볼 수 있습니다. 이렇게 배치 정교화는 널리 사용되지만 일부 경우, 특히 소규모 네트워크나 특정 아키텍처에서는 항상 이점이 있지 않는 사례도 있습니다. 또한 일부 최신 아키텍처에서는 앞으로 다룰 레이어 정규화 및 그룹 정규화와 같은 기술이 대안이 될 수 있습니다.