文章介紹了使用dropout來阻止深度神經(jīng)網(wǎng)絡模型過擬合椒袍,并介紹了一些trick。
样傍,詳細請閱讀Benjio的論文:Dropout-A Simple Way to Prevent Neural Networks from Overfitting捂贿。
1.概述
Dropout主要用來解決深度學習中因大量參數(shù)而導致的過擬合問題渤弛。他的主要思想是:在訓練過程中泛释,隨機扔掉一些神經(jīng)元(包括他們的連接)滤愕,這樣會阻止神經(jīng)元間的過分的共適應。
2.深度學習的過擬合
深度神經(jīng)網(wǎng)絡含有大量非線性隱含層怜校,使得模型表達能力非常強间影。在有限的訓練數(shù)據(jù)下,導致學習了很多樣本噪聲的復雜關系茄茁,而測試樣本中可能并不存在這些復雜關系魂贬。這就導致了過擬合,目前有很多方法用于減小過擬合:
- 1)增加validation set裙顽,如果在validation set上效果變差付燥,停止訓練;
- 2)weight penalties愈犹, 比如L1和L2正則化限制键科;
- 3)soft weight sharing;
在計算能力無限大的情況下漩怎,最好的“正則化”方法是根據(jù)所有可能的設置(根據(jù)訓練數(shù)據(jù)得到的后驗概率設置)設定參數(shù)勋颖,之后平均化這些預測值【Ensemble的方法】。但是勋锤,訓練不同結構的深度神經(jīng)網(wǎng)絡是非常難的饭玲,而且計算量非常大、需要非常大的訓練集叁执。
3.dropout
dropout主要解決以上所說的問題咱枉,dropout的意思是drop out 神經(jīng)網(wǎng)絡中的一些神經(jīng)元(隱含層和可見層)。drop神經(jīng)元徒恋,指隨機的從網(wǎng)絡中移除蚕断,同時包括該神經(jīng)元的輸入和輸出,如下圖所示入挣。
drop的神經(jīng)元是隨機的亿乳,且概率獨立,概率p可以通過交叉驗證來得到径筏,也可以簡單的設置為0.5葛假;在分類問題中,使用dropout比傳統(tǒng)的正則化方法滋恬,泛化誤差都有顯著的減小聊训。
論文中提到了很多實驗結果。其中恢氯,在Street View House Numbers例子中带斑,使用卷積神經(jīng)網(wǎng)絡鼓寺,提到:僅對MLP層做drop out的效果沒有對所有層均做drop out效果好,此外勋磕,還提到了使用max-out效果會更加提升妈候。但是,作者提到了這種提升并不顯著(卷積層是否使用dropout)挂滓,這可能是因為卷積神經(jīng)網(wǎng)絡本身參數(shù)就少的原因苦银。然而,對于全連接層使用dropout還是能夠很好的阻止噪聲的干擾從而阻止過擬合赶站。
他們做了很多實驗幔虏,結果繪圖如下:
4. Appendix
在文章Appendix中,作者給了A Practical Guide for Training Dropout Networks贝椿。
- Network Size:
采用dropout后想括,隱含層節(jié)點數(shù)n要按照n/p增加; - Learning Rate and Momentum:
因為dropout在梯度下降中引入了大量的噪聲導致梯度相互抑制团秽,因此學習速率要增加10-100倍主胧。另外一個減少噪聲的方法是用momentum叭首,momentum對于標準網(wǎng)絡一般采用0.9习勤,對于dropout網(wǎng)絡一般是0.95-0.99。兩個方法可以同時采用焙格。 - Max-norm Regularization:
防止學習過快導致網(wǎng)絡增長太大图毕,一般給隱含層權重的norm一個上限c,c一般取值3-4眷唉。 - Dropout Rate:
一般取值0.5-0.8之間予颤。drop比例p越小,要求隱含層n越大冬阳,訓練也會越慢且可能欠擬合蛤虐。