理解dropout,梯度下降,反向傳播算法

1. Dropout出現的原因

在機器學習的模型中,如果模型的參數太多,而訓練樣本又太少,訓練出來的模型很容易產生過擬合的現象。在訓練神經網絡的時候經常會遇到過擬合的問題,過擬合具體表現在:模型在訓練數據上損失函數較小,預測準確率較高;但是在測試數據上損失函數比較大,預測準確率較低。

過擬合是很多機器學習的通病。如果模型過擬合,那麼得到的模型幾乎不能用。爲了解決過擬合問題,一般會採用模型集成的方法,即訓練多個模型進行組合。此時,訓練模型費時就成爲一個很大的問題,不僅訓練多個模型費時,測試多個模型也是很費時。

綜上所述,訓練深度神經網絡的時候,總是會遇到兩大缺點:

(1)容易過擬合

(2)費時

Dropout可以比較有效的緩解過擬合的發生,在一定程度上達到正則化的效果。

2.什麼是dropout

Dropout可以作爲訓練深度神經網絡的一種trick供選擇。在每個訓練批次中,通過忽略一半的特徵檢測器(讓一半的隱層節點值爲0),可以明顯地減少過擬合現象。這種方式可以減少特徵檢測器(隱層節點)間的相互作用,檢測器相互作用是指某些檢測器依賴其他檢測器才能發揮作用。

Dropout說的簡單一點就是:我們在前向傳播的時候,讓某個神經元的激活值以一定的概率p停止工作,這樣可以使模型泛化性更強,因爲它不會太依賴某些局部的特徵,如圖1所示。

 

 

3.dropout流程

對於全連接網絡,輸入是x輸出是y,正常的流程是:我們首先把x通過網絡前向傳播,然後把誤差反向傳播以決定如何更新參數讓網絡進行學習。

使用Dropout之後,過程變成如下:

(1)首先隨機(臨時)刪掉網絡中一半的隱藏神經元,輸入輸出神經元保持不變(圖3中虛線爲部分臨時被刪除的神經元)

(2) 然後把輸入x通過修改後的網絡前向傳播,然後把得到的損失結果通過修改的網絡反向傳播。一小批訓練樣本執行完這個過程後,在沒有被刪除的神經元上按照隨機梯度下降法更新對應的參數(w,b)。

(3)然後繼續重複這一過程:

                            . 恢復被刪掉的神經元(此時被刪除的神經元保持原樣,而沒有被刪除的神經元已經有所更新)
                            . 從隱藏層神經元中隨機選擇一個一半大小的子集臨時刪除掉(備份被刪除神經元的參數)。
                            . 對一小批訓練樣本,先前向傳播然後反向傳播損失並根據隨機梯度下降法更新參數(w,b) (沒有被刪除的那一部分參數得到更新,刪除的神經元參數保持被刪除前的結果)。

4. 爲什麼說Dropout可以解決過擬合?

(1)取平均的作用: 先回到標準的模型即沒有dropout,我們用相同的訓練數據去訓練5個不同的神經網絡,一般會得到5個不同的結果,此時我們可以採用 “5個結果取均值”或者“多數取勝的投票策略”去決定最終結果。例如3個網絡判斷結果爲數字9,那麼很有可能真正的結果就是數字9,其它兩個網絡給出了錯誤結果。這種“綜合起來取平均”的策略通常可以有效防止過擬合問題。因爲不同的網絡可能產生不同的過擬合,取平均則有可能讓一些“相反的”擬合互相抵消。dropout掉不同的隱藏神經元就類似在訓練不同的網絡,隨機刪掉一半隱藏神經元導致網絡結構已經不同,整個dropout過程就相當於對很多個不同的神經網絡取平均。而不同的網絡產生不同的過擬合,一些互爲“反向”的擬合相互抵消就可以達到整體上減少過擬合。

(2)減少神經元之間複雜的共適應關係: 因爲dropout程序導致兩個神經元不一定每次都在一個dropout網絡中出現。這樣權值的更新不再依賴於有固定關係的隱含節點的共同作用,阻止了某些特徵僅僅在其它特定特徵下才有效果的情況 。迫使網絡去學習更加魯棒的特徵 ,這些特徵在其它的神經元的隨機子集中也存在。換句話說假如我們的神經網絡是在做出某種預測,它不應該對一些特定的線索片段太過敏感,即使丟失特定的線索,它也應該可以從衆多其它線索中學習一些共同的特徵。從這個角度看dropout就有點像L1,L2正則,減少權重使得網絡對丟失特定神經元連接的魯棒性提高。

(3)Dropout類似於性別在生物進化中的角色:物種爲了生存往往會傾向於適應這種環境,環境突變則會導致物種難以做出及時反應,性別的出現可以繁衍出適應新環境的變種,有效的阻止過擬合,即避免環境改變時物種可能面臨的滅絕。

5.隨機梯度下降

  • 梯度下降的用處

在機器學習算法中,有時候需要對原始的模型構建損失函數,然後通過優化算法對損失函數進行優化,以便尋找到最優的參數,使得損失函數的值最小。而在求解機器學習參數的優化算法中,使用較多的就是基於梯度下降的優化算法(Gradient Descent, GD)。

優點:效率。在梯度下降法的求解過程中,只需求解損失函數的一階導數,計算的代價比較小,可以在很多大規模數據集上應用。

           缺點:求解的是局部最優值,即由於方向選擇的問題,得到的結果不一定是全局最優步長選擇,過小使得函數收斂速度慢,過大又容易找不到最優解。

  • 梯度下降的變形形式

根據處理的訓練數據的不同,主要有以下三種形式:

       1)批量梯度下降法BGD(Batch Gradient Descent):

             針對的是整個數據集,通過對所有的樣本的計算來求解梯度的方向。

             優點:全局最優解;易於並行實現;

             缺點:當樣本數據很多時,計算量開銷大,計算速度慢

        2)小批量梯度下降法MBGD(mini-batch Gradient Descent)

            把數據分爲若干個批,按批來更新參數,這樣,一個批中的一組數據共同決定了本次梯度的方向,下降起來就不容易跑偏,減少了隨機性

            優點:減少了計算的開銷量,降低了隨機性

         3)隨機梯度下降法SGD(stochastic gradient descent)

            每個數據都計算算一下損失函數,然後求梯度更新參數。

            優點:計算速度快

            缺點:收斂性能不好

        總結:SGD可以看作是MBGD的一個特例,及batch_size=1的情況。在深度學習及機器學習中,基本上都是使用的MBGD算法。

6.誤差反向傳播算法

誤差反向傳播算法簡稱反向傳播算法(即BP算法)。使用反向傳播算法的多層感知器又稱爲BP神經網絡。BP算法是一個迭代算法,它的基本思想爲:(1)先計算每一層的狀態和激活值,直到最後一層(即信號是前向傳播的);(2)計算每一層的誤差,誤差的計算過程是從最後一層向前推進的(這就是反向傳播算法名字的由來);(3)更新參數(目標是誤差變小)。迭代前面兩個步驟,直到滿足停止準則(比如相鄰兩次迭代的誤差的差別很小)。

  • 代價函數

  • 梯度下降方法

  • 反向傳播公式推導

以三層感知器爲例,本文中記號說明:

 

信息前向傳播:

誤差反向傳播:

輸出層的權值更新:

隱藏層的權重更新:

 

 

輸出層和隱藏層的偏置參數更新:

反向傳播算法的四個核心公式:

 

反向傳播算法計算某個訓練數據的代價函數對參數的偏導數:

 

算法總結:批量梯度下降算法更新參數:

梯度消失問題及解決辦法:

 

 

 

 

 

 

 

 

 

 

 

 

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