天天看點

【深度學習/機器學習】為什麼要歸一化?歸一化方法詳解

【深度學習/機器學習】為什麼要歸一化?歸一化方法詳解

文章目錄

    • 1. 介紹
      • 1.1 什麼是歸一化
      • 1.2 歸一化的好處
    • 2. 歸一化方法
      • 2.1 最大最小标準化(Min-Max Normalization)
      • 2.2 Z-score标準化方法
      • 2.3 非線性歸一化
      • 2.4 L範數歸一化方法(最典型的是L2範數歸一化)
    • 3. 應用場景說明
    • 4. 參考

1. 介紹

1.1 什麼是歸一化

在機器學習領域中,不同評價名額(即一組特征中的不同特征就是所述的不同評價名額)往往具有不同的量綱和量綱機關,這樣的情況會影響到資料分析的結果,為了消除名額之間的量綱影響,需要進行資料标準化處理,以解決資料名額之間的可比性。即,原始資料經過資料标準化處理後,各名額處于同一數量級,适合進行綜合對比評價。

其中,最典型的就是資料的歸一化處理。簡而言之,歸一化的目的就是使得預處理的資料被限定在一定的範圍内(比如[0,1]或者[-1,1]),進而消除奇異樣本資料導緻的不良影響。

  • 在統計學中,歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在[0,1]之間是統計的機率分布,而歸一化在[-1,+1]之間是統計的坐标分布。
  • 奇異樣本資料是指相對于其他輸入樣本特别大或特别小的樣本矢量(即特征向量),譬如,下面為具有兩個特征的樣本資料x1、x2、x3、x4、x5、x6(特征向量—>列向量),其中x6這個樣本的兩個特征相對其他樣本而言相差比較大,是以,x6認為是奇異樣本資料。
    【深度學習/機器學習】為什麼要歸一化?歸一化方法詳解

奇異樣本資料的存在會引起訓練時間增大,同時也可能導緻無法收斂,是以,當存在奇異樣本資料時,在進行訓練之前需要對預處理資料進行歸一化;反之,不存在奇異樣本資料時,則可以不進行歸一化。總結就是,

  • 如果不進行歸一化,那麼由于特征向量中不同特征的取值相差較大,會導緻目标函數變“扁”。這樣在進行梯度下降的時候,梯度的方向就會偏離最小值的方向,走很多彎路,即訓練時間過長。
  • 如果進行歸一化以後,目标函數會呈現比較“圓”,這樣訓練速度大大加快,少走很多彎路。

1.2 歸一化的好處

歸一化有如下好處:

  • 歸一化後加快了梯度下降求最優解的速度;
  • 歸一化有可能提高精度(如KNN)

另外沒有一種資料标準化的方法,放在每一個問題,放在每一個模型,都能提高算法精度和加速算法的收斂速度。

2. 歸一化方法

2.1 最大最小标準化(Min-Max Normalization)

又稱為離差标準化,使特征值值映射到 [0 , 1]之間,轉換函數如下:

x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x' = \frac{x-min(x)}{max(x) - min(x)} x′=max(x)−min(x)x−min(x)​

  • 适用情況:數值比較集中
  • 缺陷:如果max和min不穩定,很容易使得歸一化結果不穩定,使得後續使用效果也不穩定。實際使用中可以用經驗常量來替代max和min。
  • 應用場景:在不涉及距離度量、協方差計算、資料不符合正太分布的時候,可以使用第一種方法或其他歸一化方法(不包括Z-score方法)。比如圖像進行中,将RGB圖像轉換為灰階圖像後将其值限定在[0 255]的範圍。

2.2 Z-score标準化方法

這種方法基于原始資料的均值(mean)和标準差(standard deviation)進行資料的标準化。将A的原始值x使用z-score标準化到x’。轉換函數如下:

x ′ = x − μ σ x' = \frac{x-\mu}{σ} x′=σx−μ​

其中μ為所有樣本資料的均值,σ為所有樣本資料的标準差。

  • 适用情況:該屬性特征的最大值和最小值未知的情況,或有超出取值範圍的離群資料的情況。注意:該方法要求原始資料的分布可以近似為高斯分布,否則歸一化的效果會變得很糟糕。
  • 應用場景:在分類、聚類算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維的時候,Z-score standardization表現更好。

2.3 非線性歸一化

該類歸一化方法經常用在資料分化比較大的場景,有些數值很大,有些很小。通過一些數學函數,将原始值進行映射。該類方法包括 tanh(-1,1)、sigmoid(0,1)、softmax(0,1),relu(0, +∞)等,需要根據資料分布的情況,決定非線性函數的曲線。類似于一些激活函數,參考:激活函數說明。

  • 适用情況:神經網絡中隐藏層之後的操作,可以引入非線性。

2.4 L範數歸一化方法(最典型的是L2範數歸一化)

L範數歸一化方法,對應的轉換函數為:

x ′ = x m a x ( ∣ ∣ x ∣ ∣ p , θ ) x' = \frac{x}{max(||x||_p, \theta)} x′=max(∣∣x∣∣p​,θ)x​

其中 t h e t a theta theta 是為了防止除0,一般設定為1e-12。其中 L p L_p Lp​範數被定義為:

【深度學習/機器學習】為什麼要歸一化?歸一化方法詳解
  • 适用場景:網絡線性層之後,可以避免某些特征過大或者過小。

3. 應用場景說明

  • 機率模型不需要歸一化,因為這種模型不關心變量的取值,而是關心變量的分布和變量之間的條件機率;
  • SVM、線性回歸之類的最優化問題需要歸一化,是否歸一化主要在于是否關心變量取值;
  • 神經網絡需要标準化處理,一般變量的取值在-1到1之間,這樣做是為了弱化某些變量的值較大而對模型産生影響。一般神經網絡中的隐藏層采用tanh激活函數比sigmod激活函數要好些,因為tanh雙曲正切函數的取值[-1,1]之間,均值為0.
  • 在K近鄰算法中,如果不對解釋變量進行标準化,那麼具有小數量級的解釋變量的影響就會微乎其微。

4. 參考

【1】https://blog.csdn.net/qq_23100417/article/details/84347475

繼續閱讀