신경망을 훈련할 때 학습 속도를 높이는 방법 중 하나는 입력 데이터를 정규화(Normalization)하는 것이다. 이번 글에서는 입력 정규화의 개념과 이를 통해 얻을 수 있는 이점에 대해 살펴보자.
Normalization
Normalization은 훈련 데이터를 특정한 분포로 변환하는 과정이다. 일반적으로 평균을 0으로 설정하고, 분산을 1로 맞추는 방식을 사용한다. 이를 통해 데이터가 일관된 범위를 갖도록 조정할 수 있다.
정규화 과정
입력 정규화, 즉 Normalization은 일반적으로 두 단계를 거쳐 이루어진다.
- 평균 제거
훈련 데이터셋의 각 특성별 평균을 계산하고, 각 데이터 포인트에서 해당 평균값을 빼준다. 이를 통해 모든 특성의 평균을 0으로 맞춘다.
$$ \mu = \frac{1}{m} \sum_{i=1}^{m} x^{(i)} $$
$$ x := x - \mu $$ - 분산 정규화
각 특성별 분산을 계산하고, 각 데이터 포인트를 해당 분산값으로 나눠준다. 이를 통해 모든 특성의 분산을 1로 맞춘다.
$$ \sigma^2 = \frac{1}{m} \sum_{i=1}^{m} (x^{(i)})^2 $$
$$ x = \frac{x}{\sigma} $$
Normalization의 필요성
입력 정규화를 수행하는 이유는 경사 하강법(Gradient Descent)의 최적화 과정을 개선하기 위해서이다.
- 비용함수의 모양 개선
특성이 서로 다른 범위를 가지면, 비용 함수가 아래 그림처럼 길쭉한 타원형(elliptical shape)이 된다. 이런 경우, 경사 하강법이 최솟값을 찾는 데 시간이 오래 걸린다.
하지만 입력을 정규화하면 비용 함수의 등고선(contour)이 원형에 가까운 형태로 바뀌어 최적화가 쉬워진다. - 학습 속도 향상
정규화된 데이터를 사용하면 경사 하강법이 더 빠르게 수렴(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
'AI > DL' 카테고리의 다른 글
2nd course: Optimization algorithms (C2W2L01 ~ C2W2L09) (0) | 2025.01.30 |
---|---|
2nd course: Practiccal aspectes of Deep Learning (C2W1L10 ~ C2W1L14) (1) | 2025.01.30 |
Other Regularization Methods (C2W1L08) (0) | 2025.01.28 |
Understanding Dropout (C2W1L07) (0) | 2025.01.28 |
Dropout Regularization (C2W1L06) (0) | 2025.01.28 |