# 배치 정규화 (Batch Normalization)

배치 정규화(Batch Normalization)는 딥러닝 모델의 훈련 과정에서 각 층의 입력 분포를 정규화(normalization)하여 훈련을 가속화하고 안정화하기 위해 제안된 기술이다. 딥러닝 모델에서는 매개변수의 초기화, 학습 속도, 그리고 입력 데이터의 분포 변화가 모델의 학습 성능에 큰 영향을 미친다. 배치 정규화는 이러한 문제를 완화시키고자 하는 방법으로, 네트워크의 각 층에서 미니배치(mini-batch) 단위로 데이터를 정규화함으로써 안정적인 학습을 도모한다.

#### 배치 정규화의 원리

배치 정규화의 핵심 아이디어는 각 층의 입력을 정규화하여 평균이 0이고, 분산이 1인 표준 정규 분포로 변환하는 것이다. 구체적으로, 각 층의 입력으로 들어오는 미니배치에 대해 평균(mean)과 분산(variance)을 계산한 후, 다음과 같이 정규화를 수행한다:

1. **평균 계산**: 미니배치 $ B $에서 각 특징 $ x\_i $의 평균 $ \mu\_B $를 계산한다.

$$
\mu\_B = \frac{1}{m} \sum\_{i=1}^{m} x\_i
$$

여기서 $ m $은 미니배치의 크기이다.

2. **분산 계산**: 각 특징의 분산 $ \sigma\_B^2 $를 계산한다.

$$
\sigma\_B^2 = \frac{1}{m} \sum\_{i=1}^{m} (x\_i - \mu\_B)^2
$$

3. **정규화**: 입력 $ x\_i $를 정규화하여 표준 정규 분포를 따르도록 한다.

$$
\hat{x\_i} = \frac{x\_i - \mu\_B}{\sqrt{\sigma\_B^2 + \epsilon}}
$$

여기서 $ \epsilon $은 분모가 0이 되는 것을 방지하기 위한 작은 양의 값이다.

4. **스케일링 및 이동**: 마지막으로, 정규화된 입력 $ \hat{x\_i} $에 학습 가능한 매개변수 $ \gamma $와 $ \beta $를 적용하여 스케일링 및 이동을 수행한다.

$$
y\_i = \gamma \hat{x\_i} + \beta
$$

여기서 $ \gamma $는 스케일 파라미터, $ \beta $는 이동 파라미터이다. 이 파라미터들은 학습 과정에서 최적화된다.

#### 배치 정규화의 효과

배치 정규화는 여러 가지 중요한 효과를 갖는다.

1. **훈련 속도 향상**: 배치 정규화는 신경망의 학습 속도를 크게 향상시킨다. 입력 데이터의 분포를 정규화함으로써, 네트워크가 더 큰 학습률(learning rate)을 사용할 수 있게 하여 수렴 속도를 높인다.
2. **기울기 소실 및 폭주 방지**: 기울기 소실(vanishing gradient) 및 폭주(exploding gradient)는 깊은 신경망에서 자주 발생하는 문제이다. 배치 정규화는 이 문제를 완화시켜 신경망이 깊어지더라도 안정적으로 학습할 수 있게 한다.
3. **초기화에 덜 민감**: 배치 정규화는 모델의 가중치 초기화에 대한 민감도를 줄인다. 이는 네트워크가 더 다양한 초기 조건에서 잘 작동할 수 있도록 돕는다.
4. **정규화 효과**: 배치 정규화는 일종의 정규화 효과를 제공하여 오버피팅을 줄이는 데 도움을 줄 수 있다. 이는 드롭아웃(dropout)과 같은 다른 정규화 기법과 함께 사용될 수 있다.

#### 배치 정규화의 한계 및 고려사항

배치 정규화에도 한계가 존재한다.

1. **미니배치 크기의 의존성**: 배치 정규화는 미니배치 크기에 의존적이다. 작은 미니배치를 사용할 경우, 평균과 분산의 추정이 불안정해질 수 있으며, 이는 훈련 성능에 부정적인 영향을 미칠 수 있다.
2. **순환 신경망(RNN)과의 호환성**: RNN과 같은 구조에서는 배치 정규화가 잘 작동하지 않을 수 있다. 이는 RNN이 시간에 따라 상태를 유지해야 하기 때문에, 각 타임스텝에서 정규화를 적용하는 것이 자연스럽지 않기 때문이다. 이러한 문제를 해결하기 위해 레이어 정규화(layer normalization)나 그룹 정규화(group normalization)와 같은 대안이 제안되었다.
3. **추론 단계에서의 처리**: 훈련 과정에서는 미니배치 단위로 평균과 분산을 계산하지만, 추론(inference) 단계에서는 전체 훈련 데이터에 대한 평균과 분산을 사용해야 한다. 이 과정에서 불일치가 발생할 수 있어, 사전 훈련된 모델을 사용하는 경우 주의가 필요하다.

***

관련 자료:

* Ioffe, S., & Szegedy, C. (2015). Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift. *arXiv preprint arXiv:1502.03167*.
* Santurkar, S., Tsipras, D., Ilyas, A., & Madry, A. (2018). How Does Batch Normalization Help Optimization?. *Advances in Neural Information Processing Systems (NeurIPS)*.
