딥러닝에서 입력데이터를 스케일링을 통해 전처리하는 방법에 대한 설명

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

주요 차이점

특징NormalizationStandardization
변환 방법최소값-최대값 사용평균과 표준편차 사용
결과 범위주로 [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 수식을 수행함.

모델에 맞는 정규화

  • 특히, ImageNet 데이터셋으로 학습된 백본(ResNet 등)을 사용하는 백본에 맞게 사전 가중치를 최대한 활용할 수 있도록 Standardization을 사용하여 입력데이터를 전처리함.
  • 따라서, Normalization 식을 사용하지 않고, Standardization 식으로만 입력 데이터의 스케일링이 구현되어 있으며 이는 평균()과 표준편차()를 이용하여 계산함.
  • Standardization 식을 이용해 이미지데이터의 범위를 [0-255] > [0-1.0] 으로 만들어 Normalization과 같은 결과를 도출하려면 평균을 0, 표준편차를 255로 설정하면 된다. 아래의 식과 같음.