[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 를 정리해보자.
Linear Scaling (scaling to a range)
$x^{\prime}=\left(x-x_{\min }\right) /\left(x_{\max }-x_{\min }\right)$
피쳐가 고정된 범위내uniformly distributed
균등하게 분포 하거나, upper/lower bound를 알고 이상치가 별로 없는 경우 사용한다.Clipping
$If \ x > max,\ then \ x' = \ max$ & $If \ x < min, \ then \ x' = min$
- 피쳐가 극단적 이상치들을 포함하는 경우 사용한다.
4. z-score
변환 후 $+-Nσ$ 클리핑할 수 있다. (e.g, limit to +-3σ)
Log Scaling
$x' = log(x)$
- Compress a wide range to a narrow range
- 소수의 값에 집중되어 있는 분포(e.g, power-law distribution) 를 가지는 경우 사용한다.
Z-score ( Standardization )
$x' = (x - μ) / σ$- 피쳐의 분포 평균 0, 표준편차 1로 만든다.
⇒ z-score squeeze raw values that have a range of ~40000 - 일반적으로
2. Clipping
이 필요할 정도로 극단적인 이상치가 존재하지 않는 경우 사용한다.
- 피쳐의 분포 평균 0, 표준편차 1로 만든다.
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*
'Data Science > Machine learning' 카테고리의 다른 글
k-means Clustering 클러스터링 (0) | 2021.11.21 |
---|---|
[Feature Selection] Permutation Importance (0) | 2021.08.02 |
[Feature Selection] Shapley Values (0) | 2021.07.15 |
[Model Development] 파라미터 튜닝 - 모형 최적화 (GridSearchCV) (0) | 2021.07.15 |
[Preprocessing] 범주형 변수 인코딩 (0) | 2021.07.11 |