原文地址:https://www.cnblogs.com/welhzh/p/6648613.html
本文主要介紹Dropout及延伸下來的一些方法耀怜,以便更深入的理解财破。
想要提高CNN的表達(dá)或分類能力,最直接的方法就是采用更深的網(wǎng)絡(luò)和更多的神經(jīng)元靡羡,即deeper and wider俊性。但是,復(fù)雜的網(wǎng)絡(luò)也意味著更加容易過擬合定页。于是就有了Dropout,大部分實驗表明其具有一定的防止過擬合的能力竟趾。
1- Dropout
最早的Dropout可以看Hinton的這篇文章
《Improving neural networks by preventing co-adaptation of feature Detectors》
從文章的名字我們就可以先對Dropout的工作原理有個猜測:過擬合意味著網(wǎng)絡(luò)記住了訓(xùn)練樣本宫峦,而打破網(wǎng)絡(luò)固定的工作方式导绷,就有可能打破這種不好的記憶。
Ok妥曲,我們直接來看什么是Dropout:
需要注意的是:論文中Dropout被使用在全連接層之后檐盟,而目前的caffe框架中,其可以使用在各種層之后葵萎。
如上圖左,為沒有Dropout的普通2層全連接結(jié)構(gòu)谎痢,記為 r=a(Wv),其中a為激活函數(shù)票从。
如上圖右滨嘱,為在第2層全連接后添加Dropout層的示意圖。即在 模 型 訓(xùn) 練 時 隨機(jī)讓網(wǎng)絡(luò)的某些節(jié)點不工作(輸出置0)先馆,其它過程不變躺彬。
對于Dropout這樣的操作為何可以防止訓(xùn)練過擬合梅惯,原作者也沒有給出數(shù)學(xué)證明,只是有一些直觀的理解或者說猜想她君。下面說幾個我認(rèn)為比較靠譜的解釋:
(1) 由于隨機(jī)的讓一些節(jié)點不工作了葫哗,因此可以避免某些特征只在固定組合下才生效,有意識地讓網(wǎng)絡(luò)去學(xué)習(xí)一些普遍的共性(而不是某些訓(xùn)練樣本的一些特性)
(2) Bagging方法通過對訓(xùn)練數(shù)據(jù)有放回的采樣來訓(xùn)練多個模型校镐。而Dropout的隨機(jī)意味著每次訓(xùn)練時只訓(xùn)練了一部分捺典,而且其中大部分參數(shù)還是共享的,因此和Bagging有點相似引谜。因此擎浴,Dropout可以看做訓(xùn)練了多個模型,實際使用時采用了模型平均作為輸出
(具體可以看一下論文贝室,論文講的不是很明了,我理解的也夠嗆)
訓(xùn)練的時候档玻,我們通常設(shè)定一個dropout ratio = p,即每一個輸出節(jié)點以概率 p 置0(不工作)误趴。假設(shè)每一個輸出都是相互獨立的,每個輸出都服從二項伯努利分布B(1-p)凉当,則大約認(rèn)為訓(xùn)練時 只使用了 (1-p)比例的輸出。
測試的時候忠藤,最直接的方法就是保留Dropout層的同時楼雹,將一張圖片重復(fù)測試M次,取M次結(jié)果的平均作為最終結(jié)果榨咐。假如有N個節(jié)點谴供,則可能的情況為R=2^N,如果M遠(yuǎn)小于R,則顯然平均效果不好数焊;如果M≈N崎场,那么計算量就太大了。因此作者做了一個近似:可以直接去掉Dropout層蚕愤,將所有輸出 都使用 起來饺蚊,為此需要將尺度對齊,即比例縮小輸出 r=r*(1-p)裕坊。
即如下公式:
特別的燕酷, 為了使用方便周瞎,我們不在測試時再縮小輸出声诸,而在訓(xùn)練時直接將輸出放大1/(1-p)倍退盯。
結(jié)論: Dropout得到了廣泛的使用,但具體用到哪里渊迁、訓(xùn)練一開始就用還是后面才用琉朽、dropout_ratio取多大,還要自己多多嘗試箱叁。有時添加Dropout反而會降低性能耕漱。
2- DropConnect
DropConnect來源于《Regularization of Neural Networks using DropConnect》這篇文章。
更詳細(xì)的實驗對比以及代碼,可以點擊http://cs.nyu.edu/~wanli/dropc/
該方法改進(jìn)于第一節(jié)介紹的Dropout,具體可看下圖作對比
由圖可知齐鲤,二者的區(qū)別很明顯:Dropout是將輸出隨機(jī)置0椒楣,而DropConnect是將權(quán)重隨機(jī)置0。
文章說之所以這么干是因為原來的Dropout進(jìn)行的不夠充分捧灰,隨機(jī)采樣不夠合理毛俏。這可以從下圖進(jìn)行理解:
如上圖所示,a表示不加任何Drop時的一層網(wǎng)絡(luò)模型焕蹄。添加Drop相當(dāng)于給權(quán)重再乘以一個隨機(jī)掩膜矩陣M阀溶。
不同的是,DropConnect由于直接對權(quán)重隨機(jī)置0永品,因此其掩膜顯得更加具有隨機(jī)性,如b)所示钾麸。而Dropout僅對輸出進(jìn)行隨機(jī)置0,因此其掩膜相當(dāng)于是對隨機(jī)的行和列進(jìn)行置0症见,如c)所示。
訓(xùn)練的時候芋肠,訓(xùn)練過程與Dropout基本相同遵蚜。
測試的時候,我們同樣需要一種近似的方法睡汹。如下圖公式所示:
注意: 掩膜矩陣M的每一個元素都滿足二項伯努利分布寂殉。假如M的維度為mn,則可能的掩膜有2^(mn)種彤叉,之前提到過我們可以粗暴的遍歷所有的掩膜然后計算結(jié)果最后求平均村怪。中心極限定理:和分布漸進(jìn)于正態(tài)分布。 于是柬焕,我們可以不去遍歷梭域,而是通過計算每一維的均值與方差,確定每一維的正態(tài)分布懂昂,最后在此正態(tài)分布上做多次采樣后求平均即可獲得最終的近似結(jié)果。
具體測試時的算法流程如下:
其中沸柔,Z是在正態(tài)分布上的采樣次數(shù)铲敛,一般來說越大越好,但會使得計算變慢工三。
實驗: 作者當(dāng)然要做很多對比試驗先鱼,但其實發(fā)現(xiàn)效果并不比Dropout優(yōu)秀太多,反而計算量要大很多掸读,因此到目前DropConnect并沒有得到廣泛的應(yīng)用宏多。具體的對比,可以參看原文肾请,這里我只貼一張圖來說明對于Drop ratio的看法:
由此可以看出更胖,drop ratio并不是越大越好却妨,具體需要大家多做實驗多體會。