深度學習網絡大殺器之Dropout——深入解析Dropout
摘要: 本文詳細介紹了深度學習中dropout技巧的思想,分析了Dropout以及Inverted Dropout兩個版本,另外將單個神經元與伯努利隨機變量相聯系讓人耳目一新。
過擬合是深度神經網(DNN)中的一個常見問題:模型只學會在訓練集上分類,這些年提出的許多過擬合問題的解決方案;其中dropout具有簡單性並取得良好的結果:
Dropout
上圖為Dropout的可視化表示,左邊是應用Dropout之前的網絡,右邊是應用了Dropout的同一個網絡。
Dropout的思想是訓練整體DNN,並平均整個集合的結果,而不是訓練單個DNN。DNNs是以概率P舍棄部分神經元,其它神經元以概率q=1-p被保留,舍去的神經元的輸出都被設置為零。
引述作者:
在標准神經網絡中,每個參數的導數告訴其應該如何改變,以致損失函數最后被減少。因此神經元元可以通過這種方式修正其他單元的錯誤。但這可能導致復雜的協調,反過來導致過擬合,因為這些協調沒有推廣到未知數據。Dropout通過使其他隱藏單元存在不可靠性來防止共擬合。
簡而言之:Dropout在實踐中能很好工作是因為其在訓練階段阻止神經元的共適應。
Dropout如何工作
Dropout以概率p舍棄神經元並讓其它神經元以概率q=1-p保留。每個神經元被關閉的概率是相同的。這意味着:
假設:
h(x)=xW+b,di維的輸入x在dh維輸出空間上的線性投影;
a(h)是激活函數
在訓練階段中,將假設的投影作為修改的激活函數:
其中D=(X1,...,Xdh)是dh維的伯努利變量Xi,伯努利隨機變量具有以下概率質量分布:
其中k是可能的輸出。
將Dropout應用在第i個神經元上:
其中P(Xi=0)=p
由於在訓練階段神經元保持q概率,在測試階段必須仿真出在訓練階段使用的網絡集的行為。
為此,作者建議通過系數q來縮放激活函數:
訓練階段:
測試階段:
Inverted Dropout
與dropout稍微不同。該方法在訓練階段期間對激活值進行縮放,而測試階段保持不變。
倒數Dropout的比例因子為,因此:
訓練階段:
測試階段:
Inverted Dropout是Dropout在各種深度學習框架實踐中實現的,因為它有助於一次性定義模型,並只需更改參數(保持/舍棄概率)就可以在同一模型上運行訓練和測試過程。
一組神經元的Dropout
n個神經元的第h層在每個訓練步驟中可以被看作是n個伯努利實驗的集合,每個成功的概率等於p。
因此舍棄部分神經元后h層的輸出等於:
因為每一個神經元建模為伯努利隨機變量,且所有這些隨機變量是獨立同分布的,舍去神經元的總數也是隨機變量,稱為二項式:
n次嘗試中有k次成功的概率由概率質量分布給出:
當使用dropout時,定義了一個固定的舍去概率p,對於選定的層,成比例數量的神經元被舍棄。
從上圖可以看出,無論p值是多少,舍去的平均神經元數量均衡為np:
此外可以注意到,圍繞在p = 0.5值附近的分布是對稱。
Dropout與其它正則化
Dropout通常使用L2歸一化以及其他參數約束技術。正則化有助於保持較小的模型參數值。
L2歸一化是損失的附加項,其中λ是一種超參數、F(W;x)是模型以及ε是真值y與和預測值y^之間的誤差函數。
通過梯度下降進行反向傳播,減少了更新數量。
Inverted Dropout和其他正則化
由於Dropout不會阻止參數增長和彼此壓制,應用L2正則化可以起到作用。
明確縮放因子后,上述等式變為:
可以看出使用Inverted Dropout,學習率是由因子q進行縮放 。由於q在[0,1]之間,η和q之間的比例變化:
將q稱為推動因素,因為其能增強學習速率,將r(q)稱為有效的學習速率。
有效學習速率相對於所選的學習速率而言更高:基於此約束參數值的規一化可以幫助簡化學習速率選擇過程。
總結
1 Dropout存在兩個版本:直接(不常用)和反轉
2 單個神經元上的dropout可以使用伯努利隨機變量建模
3 可以使用二項式隨機變量來對一組神經元上的舍棄進行建模
4 即使舍棄神經元恰巧為np的概率是低的,但平均上np個神經元被舍棄。
6 Inverted Dropout應該與限制參數值的其他歸一化技術一起使用,以便簡化學習速率選擇過程
7 Dropout有助於防止深層神經網絡中的過度擬合
作者介紹:Paolo Galeone,計算機工程師以及深度學習研究者,專注於計算機視覺問題的研究
Blog:https://pgaleone.eu/