1 歸一化方法
1.1 線性函數歸一化
對原始數據進行歸一化,將其取值範圍映射到[0,1]之間,實現對原始數據的等比縮放。
計算公式:
1.2 零均值歸一化
將原始數據映射到均值爲0、標準差爲1的分佈上。
計算公式:
1.3 逐樣本的均值消減
在每個樣本上減去數據的統計平均值,用於平穩的數據(即數據每一個維度的統計都服從相同分佈),對圖像一般只用在灰度圖上,也就是對圖像的各像素點減去其均值。
2 歸一化的作用
歸一化的目的是希望輸入數據的不同維度的特徵具有相近的取值範圍,從而能夠更快的通過梯度下降找到最優解。
上圖,左圖是使用未歸一化的原始數據進行梯度下降時的收斂過程,因爲兩個維度的數據的取值範圍不同,整個等高線呈現狹長型,梯度下降的收斂過程中出現了多次的橫向波動,收斂速度較慢;右圖是對輸入數據進行歸一化處理後的數據進行梯度下降的收斂過程,現在函數的等高線爲圓形,其梯度下降收斂更快,更容易找到最優解。
3 圖像數據歸一化
CNN處理圖像數據時,各個像素點的取值範圍都是0 - 255,已經滿足了第二節的要求,那麼還爲什麼還需要對輸入圖像進行歸一化處理?
按照1.3節所述,灰度圖像是是’‘平穩’'的(即數據每一個維度的統計都服從相同分佈),那麼你可以考慮在每個樣本上減去數據的統計平均值(逐樣本計算)。這種歸一化可以移除圖像的平均亮度值(intensity)。這是因爲很多情況下我們對圖像的照度並不感興趣,而更多地關注其內容,這時對每個數據點移除像素的均值不改變圖像的內容。
但彩色圖像並不是“平穩”的,具體來說,是因爲不同色彩通道中的像素並不都存在平穩特性。彩色圖像的常見歸一化處理過程,一般都是在3個通道上分別減去127.5,然後再除以128。這樣做的目的是使得圖像的三個通道像素值的取值範圍變到[-1,1]之間。
彩色圖像這種歸一化方式有兩個好處:
- 避免了反向傳播時梯度過大
反向傳播時,loss對一個隱藏層的梯度如上圖所示,和輸入數據x正相關。如果不對輸入數據做歸一化,則會造成梯度過大,在最優值左右處震盪,無法收斂到最優解。當然可以使用較小的學習率減小震盪,但又會造成收斂速度過慢。 - 避免了反向傳播時第一個隱藏層各神經元的梯度同方向變化
如上面的公式所示,第一個隱藏層的各神經元的梯度和輸入x同符號,如果輸入數據全爲正,那麼第一個隱藏層的各神經元的梯度同方向,這樣不利於模型收斂到最優解,會造成收斂速度較慢。
綜上,彩色圖像的歸一化,通過減127.5,使得輸入數據各像素點的值有正有負,通過除以128使得輸入數據的取值範圍變到了[-1,1]之間,從而可以以較快的速度收斂到最優解。
4 什麼情況下需要進行歸一化處理
實際應用中,通過梯度下降法求解的模型,通常需要歸一化,包括線性迴歸、邏輯迴歸、支持向量機、神經網絡。
但是對於決策樹模型並不適用,決策樹在進行節點分裂時主要依據數據集D關於各維度特徵的信息增益比,而信息增益比與是否歸一化無關,歸一化不會改變樣本在各特徵上的信息增益。