AI/DL

Normalizing Inputs (C2W1L09)

hu6r1s 2025. 1. 30. 09:59

신경망을 훈련할 때 학습 속도를 높이는 방법 중 하나는 입력 데이터를 정규화(Normalization)하는 것다. 이번 글에서는 입력 정규화의 개념과 이를 통해 얻을 수 있는 이점에 대해 살펴보자.

Normalization

Normalization은 훈련 데이터를 특정한 분포로 변환하는 과정이다. 일반적으로 평균을 0으로 설정하고, 분산을 1로 맞추는 방식을 사용한다. 이를 통해 데이터가 일관된 범위를 갖도록 조정할 수 있다.

정규화 과정

입력 정규화, 즉 Normalization은 일반적으로 두 단계를 거쳐 이루어진다.

  1. 평균 제거
    훈련 데이터셋의 각 특성별 평균을 계산하고, 각 데이터 포인트에서 해당 평균값을 빼준다. 이를 통해 모든 특성의 평균을 0으로 맞춘다.
    $$ \mu = \frac{1}{m} \sum_{i=1}^{m} x^{(i)} $$
    $$ x := x - \mu $$
  2. 분산 정규화
    각 특성별 분산을 계산하고, 각 데이터 포인트를 해당 분산값으로 나눠준다. 이를 통해 모든 특성의 분산을 1로 맞춘다.
    $$ \sigma^2 = \frac{1}{m} \sum_{i=1}^{m} (x^{(i)})^2 $$
    $$ x = \frac{x}{\sigma} $$

Normalization의 필요성

입력 정규화를 수행하는 이유는 경사 하강법(Gradient Descent)의 최적화 과정을 개선하기 위해서이다.

    1. 비용함수의 모양 개선
      특성이 서로 다른 범위를 가지면, 비용 함수가 아래 그림처럼 길쭉한 타원형(elliptical shape)이 된다. 이런 경우, 경사 하강법이 최솟값을 찾는 데 시간이 오래 걸린다.
      하지만 입력을 정규화하면 비용 함수의 등고선(contour)이 원형에 가까운 형태로 바뀌어 최적화가 쉬워진다.
    2.  학습 속도 향상
      정규화된 데이터를 사용하면 경사 하강법이 더 빠르게 수렴(convergence)할 수 있다.
      만약 특성(feature) 간의 범위가 크게 다르면, 학습 과정에서 한 방향으로는 빠르게 수렴하고, 다른 방향으로는 느리게 움직이는 문제가 발생한다. 하지만 정규화를 수행하면 경사 하강법이 최적의 학습률을 유지할 수 있다.

테스트 데이터(Test Data) 정규화 시 주의사항

테스트 데이터를 정규화할 때는 훈련 데이터셋에서 계산된 평균(\( \mu \))과 분산(\( \sigma^2  \)) 값을 그대로 사용해야 한다. 테스트 데이터는 모델의 성능을 평가하는 데 사용되는 데이터이므로, 훈련 데이터와 동일한 기준으로 정규화해야 한다.

마무리

Normalization은 언제 사용하는 것이 좋을까?

 

  • 입력 특성들의 크기가 현저히 다른 경우: 예를 들어, 어떤 특성은 0부터 1 사이의 값을 갖고, 다른 특성은 1부터 1000 사이의 값을 갖는 경우 입력 정규화를 사용하는 것이 좋다.
  • 신경망 모델 학습 시: 입력 정규화는 대부분의 신경망 모델 학습에서 효과적이다.
  • 데이터의 분포가 불균형할 때: 특정 특성의 값들이 한쪽에 몰려 있는 경우 입력 정규화를 통해 학습 효과를 개선할 수 있다.

References

https://www.youtube.com/watch?v=FDCfw-YqWTE&list=PLkDaE6sCZn6Hn0vK8co82zjQtt3T2Nkqc&index=9&t=1s