理解神經(jīng)網(wǎng)絡(luò )中的Dropout
dropout是指在深度學(xué)習網(wǎng)絡(luò )的訓練過(guò)程中,對于神經(jīng)網(wǎng)絡(luò )單元,按照一定的概率將其暫時(shí)從網(wǎng)絡(luò )中丟棄。注意是暫時(shí),對于隨機梯度下降來(lái)說(shuō),由于是隨機丟棄,故而每一個(gè)mini-batch都在訓練不同的網(wǎng)絡(luò )。
本文引用地址:http://dyxdggzs.com/article/201807/383602.htm過(guò)擬合是深度神經(jīng)網(wǎng)(DNN)中的一個(gè)常見(jiàn)問(wèn)題:模型只學(xué)會(huì )在訓練集上分類(lèi),這些年提出的許多過(guò)擬合問(wèn)題的解決方案,其中dropout具有簡(jiǎn)單性而且效果也非常良好。
算法概述
我們知道如果要訓練一個(gè)大型的網(wǎng)絡(luò ),而訓練數據很少的話(huà),那么很容易引起過(guò)擬合,一般情況我們會(huì )想到用正則化、或者減小網(wǎng)絡(luò )規模。然而Hinton在2012年文獻:《Improving neural networks by preventing co-adaptation of feature detectors》提出了,在每次訓練的時(shí)候,隨機讓一半的特征檢測器停過(guò)工作,這樣可以提高網(wǎng)絡(luò )的泛化能力,Hinton又把它稱(chēng)之為dropout。

第一種理解方式是,在每次訓練的時(shí)候使用dropout,每個(gè)神經(jīng)元有百分之50的概率被移除,這樣可以使得一個(gè)神經(jīng)元的訓練不依賴(lài)于另外一個(gè)神經(jīng)元,同樣也就使得特征之間的協(xié)同作用被減弱。Hinton認為,過(guò)擬合可以通過(guò)阻止某些特征的協(xié)同作用來(lái)緩解。
第二種理解方式是,我們可以把dropout當做一種多模型效果平均的方式。對于減少測試集中的錯誤,我們可以將多個(gè)不同神經(jīng)網(wǎng)絡(luò )的預測結果取平均,而因為dropout的隨機性,我們每次dropout后,網(wǎng)絡(luò )模型都可以看成是一個(gè)不同結構的神經(jīng)網(wǎng)絡(luò ),而此時(shí)要訓練的參數數目卻是不變的,這就解脫了訓練多個(gè)獨立的不同神經(jīng)網(wǎng)絡(luò )的時(shí)耗問(wèn)題。在測試輸出的時(shí)候,將輸出權重除以二,從而達到類(lèi)似平均的效果。
需要注意的是如果采用dropout,訓練時(shí)間大大延長(cháng),但是對測試階段沒(méi)影響。
帶dropout的訓練過(guò)程
而為了達到ensemble的特性,有了dropout后,神經(jīng)網(wǎng)絡(luò )的訓練和預測就會(huì )發(fā)生一些變化。在這里使用的是dropout以p的概率舍棄神經(jīng)元
訓練層面

對應的公式變化如下如下:
沒(méi)有dropout的神經(jīng)網(wǎng)絡(luò )

有dropout的神經(jīng)網(wǎng)絡(luò )

無(wú)可避免的,訓練網(wǎng)絡(luò )的每個(gè)單元要添加一道概率流程。
測試層面
預測的時(shí)候,每一個(gè)單元的參數要預乘以p。

除此之外還有一種方式是,在預測階段不變,而訓練階段改變。

關(guān)于這個(gè)比例我查了不少資料,前面的是論文的結論;后面是keras源碼中dropout的實(shí)現。有博客寫(xiě)的公式不一致,我寫(xiě)了一個(gè)我覺(jué)得是對的版本。
Dropout與其它正則化
Dropout通常使用L2歸一化以及其他參數約束技術(shù)。正則化有助于保持較小的模型參數值。

使用Inverted Dropout后,上述等式變?yōu)椋?/p>

可以看出使用Inverted Dropout,學(xué)習率是由因子q=1−p進(jìn)行縮放 。由于q在[0,1]之間,η和q之間的比例變化:

參考文獻將q稱(chēng)為推動(dòng)因素,因為其能增強學(xué)習速率,將r(q)稱(chēng)為有效的學(xué)習速率。
有效學(xué)習速率相對于所選的學(xué)習速率而言更高:基于此約束參數值的規一化可以幫助簡(jiǎn)化學(xué)習速率選擇過(guò)程。
評論