開篇明義,dropout是指在深度學習網(wǎng)絡(luò)的訓練過程中,對于神經(jīng)網(wǎng)絡(luò)單元,按照一定的概率將其暫時從網(wǎng)絡(luò)中丟棄。注意是暫時,對于隨機梯度下降來說,由于是隨機丟棄,故而每一個mini-batch都在訓練不同的網(wǎng)絡(luò)。
dropout是CNN中防止過擬合提高效果的一個大殺器,但對于其為何有效,卻眾說紛紜。在下讀到兩篇代表性的論文,代表兩種不同的觀點,特此分享給大家。
▌組合派
參考文獻中第一篇中的觀點,Hinton老大爺提出來的,關(guān)于Hinton在深度學習界的地位我就不再贅述了,光是這地位,估計這一派的觀點就是“武當少林”了。注意,派名是我自己起的,各位勿笑。
▌觀點
該論文從神經(jīng)網(wǎng)絡(luò)的難題出發(fā),一步一步引出dropout為何有效的解釋。大規(guī)模的神經(jīng)網(wǎng)絡(luò)有兩個缺點:
費時
容易過擬合
這兩個缺點真是抱在深度學習大腿上的兩個大包袱,一左一右,相得益彰,額不,臭氣相投。過擬合是很多機器學習的通病,過擬合了,得到的模型基本就廢了。而為了解決過擬合問題,一般會采用ensemble方法,即訓練多個模型做組合,此時,費時就成為一個大問題,不僅訓練起來費時,測試起來多個模型也很費時。總之,幾乎形成了一個死鎖。
Dropout的出現(xiàn)很好的可以解決這個問題,每次做完dropout,相當于從原始的網(wǎng)絡(luò)中找到一個更瘦的網(wǎng)絡(luò),如下圖所示:
因而,對于一個有N個節(jié)點的神經(jīng)網(wǎng)絡(luò),有了dropout后,就可以看做是2n個模型的集合了,但此時要訓練的參數(shù)數(shù)目卻是不變的,這就解脫了費時的問題。
▌動機論
雖然直觀上看dropout是ensemble在分類性能上的一個近似,然而實際中,dropout畢竟還是在一個神經(jīng)網(wǎng)絡(luò)上進行的,只訓練出了一套模型參數(shù)。那么他到底是因何而有效呢?這就要從動機上進行分析了。論文中作者對dropout的動機做了一個十分精彩的類比:
在自然界中,在中大型動物中,一般是有性繁殖,有性繁殖是指后代的基因從父母兩方各繼承一半。但是從直觀上看,似乎無性繁殖更加合理,因為無性繁殖可以保留大段大段的優(yōu)秀基因。而有性繁殖則將基因隨機拆了又拆,破壞了大段基因的聯(lián)合適應(yīng)性。
但是自然選擇中畢竟沒有選擇無性繁殖,而選擇了有性繁殖,須知物競天擇,適者生存。我們先做一個假設(shè),那就是基因的力量在于混合的能力而非單個基因的能力。不管是有性繁殖還是無性繁殖都得遵循這個假設(shè)。為了證明有性繁殖的強大,我們先看一個概率學小知識。
比如要搞一次恐怖襲擊,兩種方式:
集中50人,讓這50個人密切精準分工,搞一次大爆破。
將50人分成10組,每組5人,分頭行事,去隨便什么地方搞點動作,成功一次就算。
哪一個成功的概率比較大? 顯然是后者。因為將一個大團隊作戰(zhàn)變成了游擊戰(zhàn)。
那么,類比過來,有性繁殖的方式不僅僅可以將優(yōu)秀的基因傳下來,還可以降低基因之間的聯(lián)合適應(yīng)性,使得復雜的大段大段基因聯(lián)合適應(yīng)性變成比較小的一個一個小段基因的聯(lián)合適應(yīng)性。
dropout也能達到同樣的效果,它強迫一個神經(jīng)單元,和隨機挑選出來的其他神經(jīng)單元共同工作,達到好的效果。消除減弱了神經(jīng)元節(jié)點間的聯(lián)合適應(yīng)性,增強了泛化能力。
個人補充一點:那就是植物和微生物大多采用無性繁殖,因為他們的生存環(huán)境的變化很小,因而不需要太強的適應(yīng)新環(huán)境的能力,所以保留大段大段優(yōu)秀的基因適應(yīng)當前環(huán)境就足夠了。而高等動物卻不一樣,要準備隨時適應(yīng)新的環(huán)境,因而將基因之間的聯(lián)合適應(yīng)性變成一個一個小的,更能提高生存的概率。
▌dropout帶來的模型的變化
而為了達到ensemble的特性,有了dropout后,神經(jīng)網(wǎng)絡(luò)的訓練和預測就會發(fā)生一些變化。
訓練層面
無可避免的,訓練網(wǎng)絡(luò)的每個單元要添加一道概率流程。
對應(yīng)的公式變化如下如下:
沒有dropout的神經(jīng)網(wǎng)絡(luò)
dropout的神經(jīng)網(wǎng)絡(luò)
測試層面
預測的時候,每一個單元的參數(shù)要預乘以p。
▌?wù)撐闹械钠渌夹g(shù)點
防止過擬合的方法:
提前終止(當驗證集上的效果變差的時候)
L1和L2正則化加權(quán)
soft weight sharing
dropout
dropout率的選擇
經(jīng)過交叉驗證,隱含節(jié)點dropout率等于0.5的時候效果最好,原因是0.5的時候dropout隨機生成的網(wǎng)絡(luò)結(jié)構(gòu)最多。
dropout也可以被用作一種添加噪聲的方法,直接對input進行操作。輸入層設(shè)為更接近1的數(shù)。使得輸入變化不會太大(0.8)
訓練過程
對參數(shù)w的訓練進行球形限制(max-normalization),對dropout的訓練非常有用。
球形半徑c是一個需要調(diào)整的參數(shù)。可以使用驗證集進行參數(shù)調(diào)優(yōu)
dropout自己雖然也很牛,但是dropout、max-normalization、large decaying learning rates and high momentum組合起來效果更好,比如max-norm regularization就可以防止大的learning rate導致的參數(shù)blow up。
使用pretraining方法也可以幫助dropout訓練參數(shù),在使用dropout時,要將所有參數(shù)都乘以1/p。
部分實驗結(jié)論
該論文的實驗部分很豐富,有大量的評測數(shù)據(jù)。
maxout 神經(jīng)網(wǎng)絡(luò)中得另一種方法,Cifar-10上超越dropout
文本分類上,dropout效果提升有限,分析原因可能是Reuters-RCV1數(shù)據(jù)量足夠大,過擬合并不是模型的主要問題
dropout與其他standerd regularizers的對比
L2 weight decay
lasso
KL-sparsity
max-norm regularization
dropout
特征學習
標準神經(jīng)網(wǎng)絡(luò),節(jié)點之間的相關(guān)性使得他們可以合作去fix其他節(jié)點中得噪聲,但這些合作并不能在unseen data上泛化,于是,過擬合,dropout破壞了這種相關(guān)性。在autoencoder上,有dropout的算法更能學習有意義的特征(不過只能從直觀上,不能量化)。
產(chǎn)生的向量具有稀疏性。
保持隱含節(jié)點數(shù)目不變,dropout率變化;保持激活的隱節(jié)點數(shù)目不變,隱節(jié)點數(shù)目變化。
數(shù)據(jù)量小的時候,dropout效果不好,數(shù)據(jù)量大了,dropout效果好。
模型均值預測
使用weight-scaling來做預測的均值化
使用mente-carlo方法來做預測。即對每個樣本根據(jù)dropout率先sample出來k個net,然后做預測,k越大,效果越好。
Multiplicative Gaussian Noise
使用高斯分布的dropout而不是伯努利模型dropout
dropout的缺點就在于訓練時間是沒有dropout網(wǎng)絡(luò)的2-3倍。
進一步需要了解的知識點
dropout RBM
Marginalizing Dropout
具體來說就是將隨機化的dropout變?yōu)榇_定性的,比如對于Logistic回歸,其dropout相當于加了一個正則化項。
Bayesian neural network對稀疏數(shù)據(jù)特別有用,比如medical diagnosis, genetics, drug discovery and other computational biology applications
▌噪聲派
參考文獻中第二篇論文中得觀點,也很強有力。
觀點
觀點十分明確,就是對于每一個dropout后的網(wǎng)絡(luò),進行訓練時,相當于做了Data Augmentation,因為,總可以找到一個樣本,使得在原始的網(wǎng)絡(luò)上也能達到dropout單元后的效果。 比如,對于某一層,dropout一些單元后,形成的結(jié)果是(1.5,0,2.5,0,1,2,0),其中0是被drop的單元,那么總能找到一個樣本,使得結(jié)果也是如此。這樣,每一次dropout其實都相當于增加了樣本。
稀疏性
知識點A
首先,先了解一個知識點:
When the data points belonging to a particular class are distributed along a linear manifold, or sub-space, of the input space, it is enough to learn a single set of features which can span the entire manifold. But when the data is distributed along a highly non-linear and discontinuous manifold, the best way to represent such a distribution is to learn features which can explicitly represent small local regions of the input space, effectively “tiling” the space to define non-linear decision boundaries.
大致含義就是:
在線性空間中,學習一個整個空間的特征集合是足夠的,但是當數(shù)據(jù)分布在非線性不連續(xù)的空間中得時候,則學習局部空間的特征集合會比較好。
知識點B
假設(shè)有一堆數(shù)據(jù),這些數(shù)據(jù)由M個不同的非連續(xù)性簇表示,給定K個數(shù)據(jù)。那么一個有效的特征表示是將輸入的每個簇映射為特征以后,簇之間的重疊度最低。使用A來表示每個簇的特征表示中激活的維度集合。重疊度是指兩個不同的簇的Ai和Aj之間的Jaccard相似度最小,那么:
當K足夠大時,即便A也很大,也可以學習到最小的重疊度
當K小M大時,學習到最小的重疊度的方法就是減小A的大小,也就是稀疏性。
上述的解釋可能是有點太專業(yè)化,比較拗口。主旨意思是這樣,我們要把不同的類別區(qū)分出來,就要是學習到的特征區(qū)分度比較大,在數(shù)據(jù)量足夠的情況下不會發(fā)生過擬合的行為,不用擔心。但當數(shù)據(jù)量小的時候,可以通過稀疏性,來增加特征的區(qū)分度。
因而有意思的假設(shè)來了,使用了dropout后,相當于得到更多的局部簇,同等的數(shù)據(jù)下,簇變多了,因而為了使區(qū)分性變大,就使得稀疏性變大。
為了驗證這個數(shù)據(jù),論文還做了一個實驗,如下圖:
該實驗使用了一個模擬數(shù)據(jù),即在一個圓上,有15000個點,將這個圓分為若干個弧,在一個弧上的屬于同一個類,一共10個類,即不同的弧也可能屬于同一個類。改變弧的大小,就可以使屬于同一類的弧變多。
實驗結(jié)論就是當弧長變大時,簇數(shù)目變少,稀疏度變低。與假設(shè)相符合。
個人觀點:該假設(shè)不僅僅解釋了dropout何以導致稀疏性,還解釋了dropout因為使局部簇的更加顯露出來,而根據(jù)知識點A可得,使局部簇顯露出來是dropout能防止過擬合的原因,而稀疏性只是其外在表現(xiàn)。
論文中的其他技術(shù)知識點
將dropout映射回得樣本訓練一個完整的網(wǎng)絡(luò),可以達到dropout的效果。
dropout由固定值變?yōu)橐粋€區(qū)間,可以提高效果
將dropout后的表示映射回輸入空間時,并不能找到一個樣本x*使得所有層都能滿足dropout的結(jié)果,但可以為每一層都找到一個樣本,這樣,對于每一個dropout,都可以找到一組樣本可以模擬結(jié)果。
dropout對應(yīng)的還有一個dropConnect,公式如下:
dropout
ropConnect
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100720 -
Dropout
+關(guān)注
關(guān)注
0文章
13瀏覽量
10051
原文標題:詳解 | Dropout為何能防止過擬合?
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論