Data Preprocessing에서 우린 항상 normalization을 진행한다.
즉, 데이터의 평균을 0으로 만들어주고 (zero-centering) 표준편차로 normalize한다.
이미지를 다룰 때는 기본적으로 zero-mean 전처리를 진행해준다. 평균값은 보통 전체 train 데이터에서 계산하고 test 때는 해당 평균값을 사용해준다. 이미지에서는 픽셀값이 0~255 안에 있기 때문에 normalization은 필수는 아니다. 평균은 채널을 다 합쳐서 구하기도 하고 채널 각각에 대해서 구하기도 하는데 예를 들어 VGG에서는 R, G, B 채널 각각에 대해 독립적으로 평균을 구해서 빼주기도 한다.
Zero-centering (평균을 0으로 맞추기)
zero-centering은 데이터에서 평균값을 빼서 분포의 중심을 원점으로 옮기는 과정을 의미한다. 직관적으로는 데이터가 원점 주변에 대칭적으로 분포하게 된다.
Normalization (정규화)
데이터의 분산이나 범위를 일정하게 맞추는 과정으로 모든 특징(feature)이 비슷한 스케일을 갖도록 한다.

Zero-centering + Normalization을 하면 평균이 0, 분산이 1인 표준 정규 분포 형태로 데이터를 맞추게 된다.
왜 이렇게 해야 할까?
sigmoid의 단점을 생각해봤을 때 zero-centered가 아니라 입력이 모두 양수 혹은 음수가 되어 문제가 된다는 것을 기억하면 좀 더 쉽게 이해할 수 있다.

입력값이 만약 모두 양수라면 최적의 가중치 업데이트를 할 수 없는 문제가 발생하게 된다.

위 그림을 자세히 보면 기울기의 부호는 입력값의 부호에 따라 달라진다.
때문에 입력이 항상 양수면 각 가중치의 기울기 부호가 같아져 업데이트 방향이 제한된다. 즉, 기울기의 부호가 같아져서 가중치 벡터 공간에서 이동할 수 있는 방향이 제한되고 원하는 최적점이 다른 사분면에 있더라도 바로 접근하지 못하는 것이다 그렇게 되면 최적화가 느려지고 경로가 사진과 같이 지그재그가 된다.
이를 완화하려면 zero-centered 데이터로 만들어 입력에 양수와 음수가 섞이게 하고 기울기들이 서로 다른 부호를 가질 수 있게 해야 한다.
결론적으로
- Zero-centering은 gradient 방향 제한 문제를 해결 → 지그재그 대신 빠른 수렴
- Normalization은 feature 스케일을 맞춰 최적화 효율을 높임
이렇게 Zero-centering + Normalization을 해주면 데이터가 가중치의 작은 변화에 덜 민감해지고 optimize하기가 쉬워진다.

'헷개정 - 헷갈리는 개념 정리' 카테고리의 다른 글
| ViT는 왜 큰 데이터셋에서만 잘 작동할까? (feat. inductive bias) (0) | 2025.09.26 |
|---|---|
| RNN, LSTM, GRU (0) | 2025.09.26 |
| 두 Vector 사이의 각도, 내적, 유사도? (0) | 2025.09.16 |
| dtype? type? (0) | 2025.09.16 |
| 1000개의 데이터를 이용하여 모델 학습을 1 에폭 수행할 때 경사하강법과 확률적 경사하강법의 계산 시행 횟수(iteration)는 각각 몇 회가 되는가? (0) | 2025.09.03 |