딥러닝에서 입력데이터를 스케일링을 통해 전처리하는 방법에 대한 설명
Input Data 전처리
- 딥러닝에서 Normalization(정규화)와 Standardization(표준화)는 데이터 전처리의 핵심적인 두 가지 방법으로, 각기 다른 방식으로 데이터를 변환하여 학습 과정을 돕는다.
Normalization (정규화)
목적
- 데이터를 특정 범위(주로 [0, 1] 또는 [-1, 1])로 스케일링함.
방법
- 데이터의 최소값과 최대값을 이용하여 값을 변환.
특징
- 입력 값의 범위를 좁혀서 모델이 각 입력의 중요도를 쉽게 비교할 수 있도록 함.
- Min-Max Scaling으로 가장 흔히 사용되는 정규화 방식.
- 정규화는 데이터의 분포를 유지하지만, 특정 범위로 축소함.
- 비선형 모델(예: 신경망, k-NN)에서 더 자주 사용됨.
- 이상치(outliers)에 민감하다.
Standardization (표준화)
목적
- 데이터를 평균 0, 표준편차 1을 가지는 정규분포 형태로 변환함.
방법
- 평균과 표준편차를 사용하여 데이터를 변환.
- : 데이터의 평균
- : 데이터의 표준편차
특징
- 데이터의 분포를 정규분포(가우시안 분포)에 가까운 형태로 만든다.
- 평균이 0이고, 분산이 1인 데이터를 생성함.
- 선형 모델(예: 선형 회귀, 로지스틱 회귀, SVM)에서 효과적.
- 이상치(outliers)에 덜 민감하다(평균과 표준편차를 계산하기 때문).
Normalization vs. Standardization
주요 차이점
특징 | Normalization | Standardization |
---|---|---|
변환 방법 | 최소값-최대값 사용 | 평균과 표준편차 사용 |
결과 범위 | 주로 [0, 1] (또는 [-1, 1])로 제한 | 평균 0, 표준편차 1 |
적용 대상 | 비선형 모델에 적합 | 선형 모델에 적합 |
이상치 민감도 | 민감 | 덜 민감 |
데이터 분포 유지 | 유지 | 정규분포에 가까운 형태로 변경 |
선택 방법
- 데이터의 범위가 중요한 경우: Normalization 사용.
- 데이터의 분포가 중요한 경우: Standardization 사용.
- 딥러닝에서는 정규화와 표준화를 모두 사용할 수 있지만, 모델과 데이터의 특성에 따라 적절한 방법을 선택해야 합니다.
예를 들어, CNN이나 RNN 같은 딥러닝 모델에서는 정규화(Min-Max Scaling)가 더 일반적이다. > 모델의 백본이나 활성화 함수등을 고려해 적합한 방법을 사용해야함.
딥러닝에서는 주로?
용어의 혼동
- 딥러닝 학습 관점에서 특수한 상황이 아니면 Standardization도 Normalization으로 통일하여 부르는 모습을 보임.
- 특히 딥러닝에서, 데이터를 사전 처리하여 특정 범위로 변환한다는 개념이 강조되다 보니, “Normalization” 이라는 용어가 Standardization을 포함하는 포괄적인 의미로 사용함.
- 또한, 딥러닝 라이브러리(PyTorch, TensorFlow 등)에서 Standardization 수식을 사용하는 함수가 Normalization이라 표현되어 있음.
- ex) PyTorch의
transforms.Normalize(mean, std)
함수는 Standradization 수식을 수행함.
- ex) PyTorch의
모델에 맞는 정규화
- 특히, ImageNet 데이터셋으로 학습된 백본(ResNet 등)을 사용하는 백본에 맞게 사전 가중치를 최대한 활용할 수 있도록 Standardization을 사용하여 입력데이터를 전처리함.
- 따라서, Normalization 식을 사용하지 않고, Standardization 식으로만 입력 데이터의 스케일링이 구현되어 있으며 이는 평균()과 표준편차()를 이용하여 계산함.
- Standardization 식을 이용해 이미지데이터의 범위를 [0-255] > [0-1.0] 으로 만들어 Normalization과 같은 결과를 도출하려면 평균을 0, 표준편차를 255로 설정하면 된다. 아래의 식과 같음.