딥러닝에서 Normalization(정규화)와 Standardization(표준화)는 데이터 전처리의 핵심적인 두 가지 방법으로, 각기 다른 방식으로 데이터를 변환하여 학습 과정을 돕는다.
Normalization (정규화)
목적
데이터를 특정 범위(주로 [0, 1] 또는 [-1, 1])로 스케일링함.
방법
데이터의 최소값과 최대값을 이용하여 값을 변환.
xnormalized=xmax−xminx−xmin
특징
입력 값의 범위를 좁혀서 모델이 각 입력의 중요도를 쉽게 비교할 수 있도록 함.
Min-Max Scaling으로 가장 흔히 사용되는 정규화 방식.
정규화는 데이터의 분포를 유지하지만, 특정 범위로 축소함.
비선형 모델(예: 신경망, k-NN)에서 더 자주 사용됨.
이상치(outliers)에 민감하다.
Standardization (표준화)
목적
데이터를 평균 0, 표준편차 1을 가지는 정규분포 형태로 변환함.
방법
평균과 표준편차를 사용하여 데이터를 변환.
xstandardized=σx−μ
μ: 데이터의 평균
σ: 데이터의 표준편차
(각 데이터에 평균을 빼면 평균이 0이 됨 → 그 값들에 표준편차를 나누면 분산/표준편차가 1이됨)
특징
데이터의 분포를 정규분포(가우시안 분포)에 가까운 형태로 만든다.
평균이 0이고, 분산이 1인 데이터를 생성함.
선형 모델(예: 선형 회귀, 로지스틱 회귀, SVM)에서 효과적.
이상치(outliers)에 덜 민감하다(평균과 표준편차를 계산하기 때문).
Normalization vs. Standardization
주요 차이점
특징
Normalization
Standardization
변환 방법
최소값-최대값 사용
평균과 표준편차 사용
결과 범위
주로 [0, 1] (또는 [-1, 1])로 제한
평균 0, 표준편차 1
적용 대상
비선형 모델에 적합
선형 모델에 적합
이상치 민감도
민감
덜 민감
데이터 분포 유지
유지
정규분포에 가까운 형태로 변경
선택 방법
데이터의 범위가 중요한 경우: Normalization 사용.
데이터의 분포가 중요한 경우: Standardization 사용.
딥러닝에서는 정규화와 표준화를 모두 사용할 수 있지만, 모델과 데이터의 특성에 따라 적절한 방법을 선택해야 한다. 예를 들어, CNN이나 RNN 같은 딥러닝 모델에서는 정규화(Min-Max Scaling)가 더 일반적이다. > 모델의 백본이나 활성화 함수등을 고려해 적합한 방법을 사용해야함.
예시
원본 데이터 X={10,20,30,40,100} 으로 구성되어 있을 때, 각 방법의 결과는 아래와 같다.
원본 데이터 (X)
Normalization
Standardization
10 (최솟값)
0.00
-0.95
20
0.11
-0.63
30
0.22
-0.32
40
0.33
0.00 (평균과 일치)
100 (최댓값/이상치)
1.00
+1.90
정규화(Normalization) 결과를 보면, 최솟값인 10은 0이 되었고 최댓값인 100은 1이 되었다. 하지만 이상치(100) 때문에 나머지 20, 30, 40 데이터가 0.1 ~ 0.3이라는 매우 좁은 구간에 빽빽하게 모이게 되었다.
고정된 절대 범위(0~1) 사이에 위치하며, 그 범위에서 각 값의 위치는 이상치에 영향을 받는다.
만약 대부분의 데이터가 1020 사이에 모여있는데, 1000이라는 이상치가 하나 있다면 이것을 정규화하면 1020사이의 수많은 데이터들이 0.0001과 같은 매우 작은 값에 조밀하게 위치하게되어 정상 데이터들의 변별력이 상실된다.
표준화(Standardization) 결과를 보면, 원본 데이터의 평균이었던 40이 정확히 0으로 변환되었다. 평균보다 작은 값들은 음수(-), 큰 값은 양수(+)를 가지며 이상치가 있어도 비교적 데이터가 고르게 퍼진다.
데이터의 평균을 기준으로 좌우로 흩어진 정도를 표현하기 때문에, 정상 데이터들이 이상치에 영향을 덜 받는다.
정상 데이터들이 이상치에 비해 많을수록 평균이 정상 데이터들에 가까워 지기 때문.
딥러닝에서는 주로?
용어의 혼동
딥러닝 학습 관점에서 특수한 상황이 아니면 Standardization도 Normalization으로 통일하여 부르는 모습을 보임.
특히 딥러닝에서, 데이터를 사전 처리하여 특정 범위로 변환한다는 개념이 강조되다 보니, “Normalization” 이라는 용어가 Standardization을 포함하는 포괄적인 의미로 사용함.
또한, 딥러닝 라이브러리(PyTorch, TensorFlow 등)에서 Standardization 수식을 사용하는 함수가 Normalization이라 표현되어 있음.
ex) PyTorch의 transforms.Normalize(mean, std) 함수는 Standradization 수식을 수행함.
모델에 맞는 정규화
특히, ImageNet 데이터셋으로 학습된 백본(ResNet 등)을 사용하는 백본에 맞게 사전 가중치를 최대한 활용할 수 있도록 Standardization을 사용하여 입력데이터를 전처리함.
주로 ImageNet 평균, 표준편차 사용 ([123.675, 116.28, 103.53], [58.395, 57.12, 57.375])
따라서, Normalization 식을 사용하지 않고, Standardization 식으로만 입력 데이터의 스케일링이 구현되어 있으며 이는 평균(μ)과 표준편차(σ)를 이용하여 계산함.
Standardization 식을 이용해 이미지 데이터의 범위를 [0-255] > [0-1.0] 으로 만들어 Normalization과 같은 결과를 도출하려면 평균을 0, 표준편차를 255로 설정하면 된다. 아래의 식과 같음.