Dropout方法原理和使用方法
來源:夢飛翔投稿?編輯:學(xué)姐
#?學(xué)習(xí)經(jīng)驗分享
01?為什么提出這種方法
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中,由于正負(fù)樣本不均衡、樣本特征顯著性不足、訓(xùn)練參數(shù)不合適等原因會導(dǎo)致發(fā)生過擬合現(xiàn)象,即模型參數(shù)陷入局部最優(yōu),僅對訓(xùn)練集中樣本有較好預(yù)測能力,對于其他數(shù)據(jù)表現(xiàn)會非常差。因此,需要引入正則化(Normalization)改善網(wǎng)絡(luò)訓(xùn)練過程。DropOut方法便是由此而生,被用來緩解網(wǎng)絡(luò)過擬合風(fēng)險。

02?這種方法本質(zhì)是什么
本質(zhì)是通過隨機刪除部分神經(jīng)元(特征)及其對應(yīng)連接,實現(xiàn)對網(wǎng)絡(luò)特征提取的隨機修正,這種過程被稱作隨機正則化,過程如Figure1所示。
作者稱,這種思想來源于人工智能領(lǐng)域的遺傳算法,通過隨機變異的方式,來促進整個種群的整體進化,個人理解可以通過式1進行表示,在n個參數(shù)的某種配置下,預(yù)測結(jié)果可能接近參考結(jié)果,然而此時的目標(biāo)函數(shù)可能處于凸優(yōu)化中的一個鞍點(局部最優(yōu)),此時,只需隨機改變數(shù)個參數(shù),所有的參數(shù)都將被迫隨之改變,進入下一輪的優(yōu)化過程:

(1)
03?如何實現(xiàn)
這里以Pytorch為例,Dropout在實現(xiàn)里面被設(shè)置成一種方法對象的形式,即先定義方法構(gòu)成對象,再用來處理數(shù)據(jù),這里附上Pytorch的官方教程鏈接
(https://pytorch.org/docs/master/generated/torch.nn.Dropout.html?highlight=dropout#torch.nn.Dropout)
簡要描述一下,即先定義隨機丟棄率(p),是否采用再賦值方式調(diào)用(inplace),以及最為重要的訓(xùn)練過程指示標(biāo)志(training),在訓(xùn)練過程結(jié)束后,一定要注意將該標(biāo)志改為false,否則,在驗證過程中,它依舊會進行隨機的特征丟棄,大大降低網(wǎng)絡(luò)模型所表現(xiàn)出的性能。
快速調(diào)用可以寫作:
其中,第一句話為生成方法對象,第二句隨機生成一個例子tensor,第三句實現(xiàn)dropout,input在真實項目中即為動態(tài)網(wǎng)某層輸出。
據(jù)我在使用過程中的經(jīng)驗,dropout一般在淺層網(wǎng)絡(luò)盡量少的使用,因為過擬合一般是在深層網(wǎng)絡(luò)中出現(xiàn),淺層網(wǎng)絡(luò)一般屬于欠擬合問題。
深淺的界限因人而異,據(jù)我觀察,在Res16、Res32中,如果在網(wǎng)絡(luò)特征提取過程中引入dropout,會降低網(wǎng)絡(luò)性能,在Res32最后的全連接層加入,會有小幅性能提升。
Res50中,在網(wǎng)絡(luò)中游加入,可以產(chǎn)生一定正向影響,綜上所述,我個人認(rèn)為深層淺層大概是以50層為界限,當(dāng)然,ResNet獨特的殘差連接(skip connection)可以提高網(wǎng)絡(luò)的訓(xùn)練效果,因此可能效果不是特別明顯,在VGG這種密集FCN里面的效果可就大展神威了,通過這里也可以看出,網(wǎng)絡(luò)模型不是越深越強,根據(jù)任務(wù)選擇最合適的層數(shù)會有事半功倍的效果!
04?結(jié)果如何
作者給出了規(guī)范的對比表格,其中,MNIST簡單手寫數(shù)字?jǐn)?shù)據(jù)集結(jié)果:

對于彩色視覺數(shù)據(jù)集:

其他的不在一一贅述,有興趣可以直接參考論文原文:
《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》。
#?總結(jié)
Dropout這是一種非常好用,實現(xiàn)也簡單的減弱過擬合風(fēng)險的方法,個人實驗發(fā)現(xiàn)的已知適用場景:數(shù)據(jù)量大卻特征顯著性不足、網(wǎng)絡(luò)模型深不易訓(xùn)練。如果百尺竿頭了,也許能利用它更進一步!
感謝閱讀,如果有意見,發(fā)現(xiàn)不足,請評論區(qū)留言批評指正!
聲明:本文為原創(chuàng)內(nèi)容,方便大家轉(zhuǎn)載原創(chuàng)標(biāo)簽我就不打了,轉(zhuǎn)載請注明【轉(zhuǎn)載自“學(xué)姐帶你玩AI公眾號”】!