神經網絡基礎1:數據處理biasing與scaling

數據處理

我們知道在神經網絡中,通常需要對樣本數據進行預處理(Z-score standardization)、對各層中間隱層進行normalization(如Batch-normalization、layer-normalization等),這些操作都涉及biasing和scaling操作,那爲什麼需要這些操作?

我們知道,每個神經元輸出都是輸入的線性組合z經過線性/非線性變換得到的

y=f(z)=f(b+W^TX)

可以把梯度理解成是輸入對輸出貢獻的力度,梯度大小是與輸入數值大小息息相關的\partial z / \partial W = X,中間輸出z對參數W的梯度等於輸入向量X,而神經網絡使用梯度下降法來訓練更新參數W,也即參數W的更新大小與方向與輸入向量X是線性的

  • 當輸入向量X嚴重偏向某些維度時,參數W的更新同樣也會嚴重偏向這些維度,也即會形成類似zig-zag形的更新路徑,從而嚴重影響收斂速度,如下左圖所示,爲了避免這種情況,通常需要對數據進行scaling,對樣本數據來說便是去量綱化
  • 另外,如果輸入數據各個維度的數值都是同號的(比如0-1歸一化後數據都是非負數),那麼參數的更新方向便會受限,同樣會減慢收斂速度;以二維數據爲例,當輸入數據各個維度都是非負數時,參數的更新方向就只能在第一象限或第三象限,而無法出現在第二、四象限,如下右圖所示,從紅點到藍點就需要至少2次更新來完成,而不能一次完成;爲了避免這種情況,通常需要對數據進行biasing,也即把數據變得有正有負。

                            

scaling

其實,由於輸入數據的各個維度要進行線性組合,很自然的應該想到要對數據各個維度進行scaling即讓各個維度的數據值大小可比較,不能讓數據值很大的把數據值很小的給屏蔽了;

一些如標準化、歸一化等feature scaling都可以進行去量綱化;注意:scaling的內涵假設是各維輸入重要程度相近,通常來說,過於集中(variance很小)的特徵是不重要的;但若實際情況下,某一維爲不相干弱噪聲,scaling會放大噪聲,加大了噪聲對模型的影響(此影響在白化過的輸入中更明顯)。同時,若已知各維輸入量綱相近,或已知各維相對重要程度的情況下,往往選擇保留輸入的相對尺度,對各維統一縮放。

biasing

通常數據處理的biasing操作是zero-centered去中心化,就是減去均值使得均值爲0;在網絡較深時,對各隱層做biasing以加快訓練速度是很有必要,尤其是當其輸入都是同號的時候(如上一層的ReLu輸出);但對於樣本數據做biasing卻不一定有必要,想想如果某個維度是稀疏的,對其做biasing後,絕大部分0值都便變成非0值,而非0值時輸入層中相應參數就會發生更新,但是這些參數更新是不必要的,因爲原始0值不重要、其不含任何意義,對出現原始0值而更新參數是沒有必要的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章