轉(zhuǎn)帖|使用教程|編輯:龔雪|2017-03-20 16:42:37.000|閱讀 799 次
概述:用Dropout解決深度神經(jīng)網(wǎng)絡中過擬合問題!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
過擬合(Overfitting)是深度神經(jīng)網(wǎng)絡(DNN)中的一個重要的問題:該模型學習僅對訓練集合進行分類,使其自身適應于訓練示例,而不是學習能夠?qū)νㄓ脤嵗M行分類的決策邊界。近些年,研究者們已經(jīng)提出了許多過擬合問題的解決方案,其中,Dropout因為其簡明且以經(jīng)驗為基礎的良好結果而占據(jù)主流。
Dropout的視覺表示,如上圖所示。圖(a)是應用Dropout之前的神經(jīng)網(wǎng)絡,圖(b)是應用Dropout之后同樣的神經(jīng)網(wǎng)絡。參數(shù)經(jīng)過學習后,左邊的網(wǎng)絡是在訓練和測試時使用同樣的網(wǎng)絡結構。
Dropout的思想是訓練DNNs的整體然后平均整體的結果,而不是訓練單個DNN。DNNs以概率p丟棄神經(jīng)元,因此保持其它神經(jīng)元概率為q=1-p。當一個神經(jīng)元被丟棄時,無論其輸入及相關的學習參數(shù)是多少,其輸出都會被置為0。丟棄的神經(jīng)元在訓練階段的前向傳播和后向傳播階段都不起作用:因為這個原因,每當一個單一的神經(jīng)元被丟棄時,訓練階段就好像是在一個新的神經(jīng)網(wǎng)絡上完成。
引用自Dropout作者:
在標準神經(jīng)網(wǎng)絡中,每個參數(shù)接收的導數(shù)表明其應該如何變化才能使最終損失函數(shù)降低,并給定所有其它神經(jīng)網(wǎng)絡單元的狀態(tài)。因此神經(jīng)單元可能以一種可以修正其它神經(jīng)網(wǎng)絡單元的錯誤的方式進行改變。而這就可能導致復雜的共適應(co-adaptations)。由于這些共適應現(xiàn)象沒有推廣到未見的數(shù)據(jù),將導致過擬合。我們假設對每個隱藏層的神經(jīng)網(wǎng)絡單元,Dropout通過使其它隱藏層神經(jīng)網(wǎng)絡單元不可靠從而阻止了共適應的發(fā)生。因此,一個隱藏層神經(jīng)元不能依賴其它特定神經(jīng)元去糾正其錯誤。
簡而言之:Dropout在實踐中表現(xiàn)良好,是因為它在訓練階段阻止了神經(jīng)元的共適應。現(xiàn)在我們對Dropout有了直觀的想法,讓我們進行更深層次的分析。
如前所述,Dropout以概率p關閉神經(jīng)元,相應的,以大小為q=1-p的概率開啟其他神經(jīng)元。每個單個神經(jīng)元有同等概率被關閉。這意味著:
給定
對Dropout的應用建模是可行的,僅僅對于訓練階段來說,給定的投影作為一個修改的激活函數(shù):
其中,
是伯努利向量Xi的一個dh維的向量。
一個伯努利隨機變量有以下概率的質(zhì)量分布:
其中,k是可能的輸出結果。
顯然,這個隨機變量完美的模擬了在單個神經(jīng)元上Dropout的過程。事實上,神經(jīng)元被以概率 p = P(k=1) 被關閉,否則保持不變。
它可以看作Dropout在第i個神經(jīng)元上的應用:
其中,P(Xi=0)=p.
因為在訓練階段,一個神經(jīng)元以概率q保持;在測試階段,我們必須模擬在訓練階段使用的神經(jīng)網(wǎng)絡的整體的行為。為此,作者建議在測試階段將激活函數(shù)以q為比例系數(shù)進行縮放,以便將訓練階段產(chǎn)生的預期輸出作為測試階段使用的單個輸出。因此:
訓練階段:
測試階段:
一個略有不同的方法是使用反向Dropout(Inverted Dropout)。該方法包括在訓練階段縮放激活函數(shù),從而使得其測試階段保持不變。比例因子是保持概率的倒數(shù):
因此,
訓練階段:
測試階段:
反向Dropout有助于只定義一次模型并且只改變了一個參數(shù)(保持/丟棄概率)以使用同一模型進行訓練和測試。相反,直接Dropout,迫使你在測試階段修改網(wǎng)絡。因為如果你不乘以比例因子q,神經(jīng)網(wǎng)絡的輸出將產(chǎn)生更高的相對于連續(xù)神經(jīng)元所期望的值(因此神經(jīng)元可能飽和):這就是為什么反向Dropout是更加常見的實現(xiàn)方式。
我們可以很容易的注意到,具有n個神經(jīng)元的層h,在單個訓練步驟中,可以被看作n個伯努利試驗的集合,每個實驗成功的概率等于p。因此,層h具有被丟棄的神經(jīng)元的輸出等于:
由于每個神經(jīng)元現(xiàn)在被建模為伯努利隨機變量,并且所有這些隨機變量是獨立分布的,所以丟棄的神經(jīng)元的總數(shù)也是隨機變量,稱為二項式(Binomial):
其中,在n個實驗中獲得k次成功的概率由概率質(zhì)量分布給出:
這個公式很容易理解:
pk(1-p)n-k 是n個實驗中獲得k個成功的單個序列的概率,因此是n-k次失敗。
是用于計算可能的成功序列的數(shù)量的二項式系數(shù)。
我們現(xiàn)在可以使用這個分布來分析丟棄指定數(shù)量神經(jīng)元的概率。當使用Dropout時,我們?yōu)檫x定的層定義一個固定的Dropout概率p,我們期望從中降低一定比例數(shù)量的神經(jīng)元。例如,如果我們應用Dropout的層具有n=1024個神經(jīng)元,p=0.5,我們期望512個被丟棄,讓我們來驗證:
因此,準確丟棄np=512個神經(jīng)元的概率只有0.025!Python3可以幫助我們可視化不同p值和固定值n的神經(jīng)元,代碼已注釋。
二項分布在np附近時非常尖銳
從上圖我們可以看出,無論p值是多少,平均下降的神經(jīng)元數(shù)量都與np成正比,事實上:
此外,我們可以注意到,函數(shù)分布在p=0.5附近幾乎是對稱的,并且隨著與p=0.5距離的增加,丟棄np神經(jīng)元的概率增加。為補償激活值,縮放因子已被作者添加,因為他們期望在訓練階段期間僅保持比例為1-p的神經(jīng)元百分比。在訓練階段,相反,100%的神經(jīng)元保持開啟狀態(tài),因此該值應相應地按比例縮小。
Dropout通常與L2正則化和其它參數(shù)約束技術(如Max Norm1)一起使用。正則化有助于保持模型參數(shù)值在可控范圍內(nèi)增長。簡而言之,L2正則化是損失的附加項,其中λ∈[0,1]是成為正則化強度的超參數(shù),F(xiàn)(W;x)是模型函數(shù),E是實際值y與預測值y^之間的誤差函數(shù)。
我們很容易理解,當通過梯度下降進行反向傳播時,其更新量減少。如果η是學習速率,則參數(shù)w∈W的更新量為
由于Dropout不會阻止參數(shù)增長,應用L2正則化(或限制參數(shù)值的任何其它正則化方法)會有作用。添加縮放因子,上述方程變?yōu)椋?/p>
可以容易的看出,當使用反向Dropout時,學習速率被縮放至q的因子。由于q具有在[0,1]之間的值,η和q之間的比率可以在如下區(qū)間變化:
因此,我們將其稱q為推動因子(boosting factor),因為它推動了學習速率。此外,我們將r(q)稱為有效學習速率(effective learning rate)。總之,有效學習速率相對于所選擇的學習速率更高:由于這個原因,限制參數(shù)值的正則化可以幫助簡化學習速率選擇過程。
1、Dropout有兩種方式:直接Dropout(不常用)和反向Dropout。
2、可以使用伯努利隨機變量來對單個神經(jīng)元上的Dropout進行建模。
3、可以使用二項式隨機變量來對一組神經(jīng)元上的Dropout進行建模。
4、即使準確降低np神經(jīng)元的概率很低,np神經(jīng)元在具有n個神經(jīng)元的神經(jīng)網(wǎng)絡層上也會平均下降。
5、反向Dropout可以提高學習速率。
6、反向Dropout應該與限制參數(shù)值的其他歸一化技術一起使用,以便簡化學習速率選擇過程。
7、Dropout有助于在深度神經(jīng)網(wǎng)絡中防止過擬合。
重大喜訊,慧都學院將在3月底有一堂《基于圖的大數(shù)據(jù)分析》免費公開課,點擊立即報名。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn