吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

歸一化輸入(Normalizing inputs)

訓練神經網絡,其中一個加速訓練的方法就是歸一化輸入。假設一個訓練集有兩個特徵,輸入特徵為2維,歸一化需要兩個步驟:

1.零均值

2.歸一化方差;

我們希望無論是訓練集和測試集都是通過相同的μ和σ^2定義的數據轉換,這兩個是由訓練集得出來的。

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

第一步是零均值化

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

它是一個向量,x等於每個訓練數據 x減去μ,意思是移動訓練集,直到它完成零均值化。

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

第二步是歸一化方差

注意特徵x_1的方差比特徵x_2的方差要大得多,我們要做的是給σ賦值

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

這是節點y 的平方,σ^2是一個向量,它的每個特徵都有方差,注意,我們已經完成零值均化,(x^(i)^2元素y^2就是方差,我們把所有數據除以向量σ^2,最後變成上圖形式。

x_1和x_2的方差都等於1。

提示一下,如果你用它來調整訓練數據,那麼用相同的 μ 和 σ^2來歸一化測試集。

尤其是,你不希望訓練集和測試集的歸一化有所不同,不論μ的值是什麼,也不論σ^2的值是什麼,這兩個公式中都會用到它們。所以你要用同樣的方法調整測試集,而不是在訓練集和測試集上分別預估μ 和 σ^2。因為我們希望不論是訓練數據還是測試數據,都是通過相同μ和σ^2定義的相同數據轉換,其中μ和σ^2是由訓練集數據計算得來的。

我們為什麼要這麼做呢?為什麼我們想要歸一化輸入特徵,回想一下右上角所定義的代價函數。

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

如果你使用非歸一化的輸入特徵,代價函數會像這樣:

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

這是一個非常細長狹窄的代價函數,你要找的最小值應該在這裡。

但如果特徵值在不同範圍,假如x_1取值範圍從1到1000,特徵x_2的取值範圍從0到1,結果是參數w_1和w_2值的範圍或比率將會非常不同,這些數據軸應該是w_1和w_2,但直觀理解,我標記為w和b,代價函數就有點像狹長的碗一樣,如果你能畫出該函數的部分輪廓,它會是這樣一個狹長的函數。

然而如果你歸一化特徵,代價函數平均起來看更對稱,

如果你在上圖這樣的代價函數上運行梯度下降法,你必須使用一個非常小的學習率。

因為如果是在這個位置,梯度下降法可能需要多次迭代過程,直到最後找到最小值。但如果函數是一個更圓的球形輪廓,那麼不論從哪個位置開始,梯度下降法都能夠更直接地找到最小值,你可以在梯度下降法中使用較大步長,而不需要像在左圖中那樣反覆執行。

當然,實際上w是一個高維向量,因此用二維繪製w並不能正確地傳達並直觀理解,但總地直觀理解是代價函數會更圓一些,而且更容易優化,前提是特徵都在相似範圍內,而不是從1到1000,0到1的範圍,而是在-1到1範圍內或相似偏差,這使得代價函數J優化起來更簡單快速。

吳恩達深度學習筆記(35)-加快歸一化的網絡訓練方法

實際上如果假設特徵x_1範圍在0-1之間,x_2的範圍在-1到1之間,x_3範圍在1-2之間,它們是相似範圍,所以會表現得很好。

當它們在非常不同的取值範圍內,如其中一個從1到1000,另一個從0到1,這對優化算法非常不利。但是僅將它們設置為均化零值,假設方差為1,就像上一張幻燈片裡設定的那樣,確保所有特徵都在相似範圍內,通常可以幫助學習算法運行得更快。

所以如果輸入特徵處於不同範圍內,可能有些特徵值從0到1,有些從1到1000,那麼歸一化特徵值就非常重要了。如果特徵值處於相似範圍內,那麼歸一化就不是很重要了。執行這類歸一化並不會產生什麼危害,我通常會做歸一化處理,雖然我不確定它能否提高訓練或算法速度。

這就是歸一化特徵輸入,下節課我們將繼續討論提升神經網絡訓練速度的方法。


分享到:


相關文章: