1. 程式人生 > >深度學習之dropout正則化

深度學習之dropout正則化

 

主要內容:

一、dropout正則化的思想

二、dropout演算法流程

三、dropout的優缺點

 

 

一、dropout正則化的思想

在神經網路中,dropout是一種“玄學”的正則化方法,以減少過擬合的現象。它的主要思想就是:在訓練神經網路的每一輪迭代中,隨機地關閉一些神經元,以此降低神經網路的複雜程度:

 

 

 二、dropout演算法流程

1)對於第k層的結點,選擇一個範圍在(0,1]的數keep_prob,表明每一個結點的存在機率為keep_prob

2)在每一輪迭代中,為第k層的所有結點隨機分配一個範圍在[0,1]的數D。如果某個結點的D小於等於keep_prob,那麼這個結點在此輪迭代中能儲存;否則,這個結點將在這輪迭代中被暫時刪去,所謂刪去,其實就是將該節點在這輪前向傳播的輸出值設為0。

3)對於儲存下來的點,還需要做一步操作:新輸出值 = 原輸出值/keep_prob。

問:為何輸出值要除以keep_prob呢?

答:因為這樣能保證第k層輸出的期望不發生改變,或者說是保持第k層輸出值的scale。

4)以上是前向傳播的過程,在反向傳播中,同樣需要對保留下來的結點的導數dA除以keep_prob。

5)每一層的keep_prob可以不一樣,其中輸入層X一般不進行dropout,結點數大的隱藏層其keep_prob可以小一點以降低其複雜度。

 

 

三、dropout的優缺點

優點:使用dropout正則化的神經網路,不會過分依賴於某個或某些特徵,使得權重分散。因為在每一輪迭代中隱藏層的任何一個結點都有可能被刪除,那麼原本屬於它的權重就會被分配到其他結點上,多次迭代平均下來,就能降低對某個特徵或者是某個結點的依賴了。

缺點:損失函式在每一輪迭代中不一定是逐漸減小,因為此時的損失函式沒有明確的定義。(這個不理解)