Transform Numeric Data - Normalization 입력 데이터 정규화

[PREPROCESSING] 딥러닝에서 Normalizing input 입력 데이터 정규화의 목적, 방법, 효과를 정리합니다.

Normalizing inputs
  • ML/DL에서의 정규화 - Standardization, Normalization, Regularization
  • 4 Normalization Techniques - Scaling to a range, clipping, log scaling, z-score
  • Normalizing inputs & the speed of the training process of a neural network.

ML/DL에서의 정규화

Normalization 에 대해서 살펴보기전에 Standardization, Normalization, Regularization 를 모두 "정규화"로 부르는데, 차이를 간단히 정리하면 다음과 같다.

ML/DL에서의 정규화 Meaning
Standardization 표준화/정규화 수치형 데이터의 평균 0, 분산 1이 되도록 변환하는 것
Normalization 정규화 수치형 데이터가 동일한 scale을 가지도록 변환하는 것
Regularization 정규화 딥러닝에서 과적합을 막기위해 모델의 복잡도를 줄이는 것 ( L1/L2, dropout, early stopping... )

Normalization Techniques

Transforming numeric data to the same scale as other numeric data 데이터 전처리 과정에서 numeric feature들의 값의 범위 차이가 큰 경우, similar scale 로 만들기 위해 정규화를 수행한다.


자주 쓰이는 정규화방법 4가지 Scaling to a range, clipping, log scaling, z-score 를 정리해보자.

  1. Linear Scaling (scaling to a range)
    $x^{\prime}=\left(x-x_{\min }\right) /\left(x_{\max }-x_{\min }\right)$
    피쳐가 고정된 범위내 uniformly distributed 균등하게 분포 하거나, upper/lower bound를 알고 이상치가 별로 없는 경우 사용한다.

  2. Clipping

    $If \ x > max,\ then \ x' = \ max$ & $If \ x < min, \ then \ x' = min$

    • 피쳐가 극단적 이상치들을 포함하는 경우 사용한다.
    • 4. z-score 변환 후 $+-Nσ$ 클리핑할 수 있다. (e.g, limit to +-3σ)
  3. Log Scaling

    $x' = log(x)$

    • Compress a wide range to a narrow range
    • 소수의 값에 집중되어 있는 분포(e.g, power-law distribution) 를 가지는 경우 사용한다.
  4. Z-score ( Standardization )
    $x' = (x - μ) / σ$

    • 피쳐의 분포 평균 0, 표준편차 1로 만든다.

      ⇒ z-score squeeze raw values that have a range of ~40000
    • 일반적으로 2. Clipping이 필요할 정도로 극단적인 이상치가 존재하지 않는 경우 사용한다.

Normalizing inputs helps in boosting the training of a neural network.

데이터가 동일한 scale을 가지면, 학습/훈련 과정에 최적값에 더 빠르게 수렴하기 때문에 학습 속도를 개선할 수 있다. 입력값의 정규화가 어떻게 학습을 빠르게 만들 수 있을까?

  • 정규화 여부에 따라 비용함수의 모양이 달라진다. 비용함수의 모양을 2차원으로 표현한 이미지로 직관적으로 표현해 이해해보자.

    • (Left) 정규화하지 않은 입력값을 사용하는 경우, its shape will be inconsistent(elongated) 비용함수 일관성이 없는, 가늘고 긴 형태가 된다. 비용함수를 최소화하는 파라미터 $w$의 최적값을 찾는 과정이 앞뒤로 왔다갔다 많은 단계가 필요해 훈련 시간이 길어질 수 있다.
    • (Right) 반면 정규화한 입력값을 사용하는 경우, its shape will be consistent (look more symmetric) 비용함수의 형태가 일정하고 대칭적인 형태가 된다. 이러한 경우, 더 큰 learning rate를 사용해 정규화하기 전보다 적은 단계를 거쳐 최적의 파라미터 $w$를 찾을 수 있다. 따라서, 정규화로 모든 피쳐가 similar scale을 갖는 경우 학습 알고리즘이 빠르게 실행되는 것을 도울 수 있을 것이다.
  • Leads to faster convergence 피쳐가 양수와 음수 모두 가지게 만들어, 가중치 벡터가 방향을 쉽게 변경할 수 있어 학습속도를 가속화 시킬 수 있다. 손실의 최소화 시키는 방향으로 gradients가 감소하는 데 필요한 # of epochs or iterations가 줄어든다.


*Reference&Source : Why Data should be Normalized before Training a Neural Network | by Timo Stöttner | Towards Data Science | deep-learning specialization course*