一般而言,樣本的原始特徵中的每一維特徵由於**以及度量單位不同,其特徵取值的分布範圍往往差異很大,比如身高、體重、血壓等它們的度量和分布範圍往往是不一樣的。當我們計算不同樣本之間的歐氏距離時,取值範圍大的特徵會起到主導作用。這樣,對於基於相似度比較的機器學習方法(比如最近鄰分類器),必須先對樣本進行預處理,將各個維度的特徵歸一化到同乙個取值區間,並且消除不同特徵之間的相關性,才能獲得比較理想的結果。雖然神經網路可以通過引數的調整來適應不同特徵的取值範圍,但是會導致訓練效率比較低。
現在假設乙個只有一層的網路:
我們知道,tanh 函式的導數在區間 [−2, 2] 上是敏感的,其餘的導數接近於 0,tanh影象如下圖所示:
因此,如果 w1x
1+w2
x2+b
w1x1 + w2x2 + b
w1x1+w
2x2+
b 過大或過小,都會導致梯度過小,難以訓練。為了提高訓練效率,我們需要使w1x
1+w2
x2+b
w1x1 + w2x2 + b
w1x1+w
2x2+
b在 [−2, 2] 區間,我們需要將w1 設得小一點,比如在 [−0.1, 0.1] 之間。可以想象,如果資料維數很多時,我們很難這樣精心去選擇每乙個引數。因此,如果每乙個特徵的取值範圍都在相似的區間,比如 [0, 1] 或者 [−1, 1],那該多好啊,我們就不太需要區別對待每乙個引數,減少人工干預。
我們經常見到,歸一化、標準化、規範化,其實他們的含義是一樣的,都是消除資料量綱帶來的差異,加快模型的訓練效率除了引數初始化之外,不同輸入特徵的取值範圍差異比較大時,梯度下降法的效率也會受到影響。下圖給出了資料歸一化對梯度的影響。其中,圖a為未歸一化資料的等高線圖。取值範圍不同會造成在大多數字置上的梯度方向並不是最優的搜尋方向。當使用梯度下降法尋求最優解時,會導致需要很多次迭代才能收斂。如果我們把資料歸一化為取值範圍相同,如圖b所示,大部分位置的梯度方向近似於最優搜尋方向。這樣,在梯度下降求解時,每一步梯度的方向都基本指向最小值,訓練效率會大大提高。
歸一化的方法有很多種,最常用的是最小最大歸一化和標準歸一化
最小最大歸一化使結果落到[0,1]區間,轉換函式如下:
其中 min(x) 和 max(x) 分別是特徵 x 在所有樣本上的最小值和最大值。
標準歸一化也叫 z-score 歸一化,將每乙個維特徵都處理為符合標準正態分佈(均值為 0,標準差為 1)。
這裡 σ 不能為 0。如果標準差為 0,說明這一維特徵沒有任務區分性,可以直接刪掉。在標準歸一化之後,每一維特徵都服從標準正態分佈。
總的來說,歸一化的好處是:幫助你去除資料的量綱和資料大小的差異,讓資料每乙個特徵的取值範圍都在相似的區間,可以讓資料在同乙個數量級下來做乙個比較。這樣做可以讓模型更快的收斂,因為它不需要去考慮那些誇大的特徵,把所有特徵的尺度看的同等重要
參考文件
神經網路與深度學習[邱錫鵬著]
sklearn資料預處理 歸一化 標準化
1 把數變為 0,1 之間的小數 主要是為了資料處理方便提出來的,把資料對映到0 1範圍之內處理,更加便捷快速。2 把有量綱表示式變為無量綱表示式 歸一化是一種簡化計算的方式,即將有量綱的表示式,經過變換,化為無量綱的表示式,成為純量。歸一化演算法有 1.線性轉換 y x minvalue maxv...
資料預處理 歸一化與z score標準化
歸一化 歸一化是一種簡化計算的方式,即將有量綱 的表示式,經過變換,化為 無量綱的表示式,成為 標量。在多種 計算中都經常用到這種方法。線性函式轉換 y x minvalue maxvalue minvalue 說明 x y分別為轉換前 後的值,maxvalue minvalue分別為樣本的最大值和...
資料預處理 輸入歸一化 標準化 放縮
alex 和 caffe中的初始化引數都是基於均值歸一化的,如果不做歸一化,會因為輸入大了一半,導致訓練失敗。這也是為什麼caffe強制為樣本計算影象均值的原因。這樣,畫素值 0,255 被調整成了近似 128,128 儘管影象資料格式規整,但是做一做歸一化還是挺有用處的。歸一化本身是一種降低特徵之...