Dropout的前世与今生
選自arXiv
作者:Alex Labach等
機器之心編譯
參與:Geek AI、張倩
Dropout 是一類用于神經網絡訓練或推理的隨機化技術,這類技術已經引起了研究者們的廣泛興趣,并且被廣泛地應用于神經網絡正則化、模型壓縮等任務。雖然 Dropout 最初是為密集的神經網絡層量身定制的,但是最近的一些進展使得 Dropout 也適用于卷積和循環神經網絡層。本文總結了 Dropout 方法的發展歷史、應用以及當下的研究熱點,還詳細介紹了研究者們提出的重要方法。?
圖 1:一些目前提出的 Dropout方法,以及 2012 到 2019 年間 Dropout 方法的理論進展。
?
標準的 Dropout
?
2012 年提出的原始??方法為避免前饋神經網絡中出現的過擬合現象提供了一種簡單的技術[1]。在每輪迭代中,網絡中的每個神經元以 p 的概率被丟棄。當訓練完成后,盡管神經元的輸出要乘以該神經元被丟棄的概率 p,整體的網絡架構還是會被使用。這樣做抵消了沒有神經元被丟棄的神經網絡尺寸過大的影響,并且可以被解釋為在訓練時可能出現的網絡上取平均。每一層的 dropout 概率可能不盡相同,原始的 Dropout 論文建議輸入層的 p=0.2,而隱藏層的 p=0.5。輸出層中的神經元不會被丟棄。這種技術通常被簡稱為 Dropout,但是處于本文論述的需要,我們將其稱之為標準 Dropout,從而將其與其它的 Dropout 方法區分開來。該方法如圖 2 所示。
圖 2:標準 Dropout 的示例。左側為全連接網絡,右側的網絡以 0.5 的概率丟棄神經元。輸出層并沒有應用 Dropout。
從數學上來說,神經網絡層訓練過程中使用的標準 Dropout 的行為可以被寫作:
?
?
其中 f(·)為,x 是該層的輸入,W 是該層的權值矩陣,y為該層的輸出,而 m 則為該層的 Dropout 掩膜(mask),mask 中每個元素為 1 的概率為 p。在測試階段,該層的輸出可以被寫作:
?
用于訓練的 Drpout 方法
?
本節介紹了重要的 Dropout 方法。和標準的 Dropout 一樣,他們通常被用來在訓練時正則化密集的前饋神經網絡層。這些方法中的大多數都直接受到了標準 Dropout 的啟發,并尋求提高其速度或的有效程度。
?
基于標準 Dropout 最早提出的變體之一便是由 Wan 等人[3]于 2013 年提出的 dropconnect。該方法是對 Dropout 的一種泛化,其中每個神經元的權重或偏置以一定的概率被設置為 0,而不是將神經元的輸出設置為 0。因此,在訓練時,某個網絡層的輸出可以被寫作:
?
?
其中各變量的定義與公式(1)中相同,但是這里使用了一個 Dropout mask 矩陣,而不是 mask 向量。Dropoutconnect 如圖 3 所示。
?
圖 3:Dropconnect 的示例。右側的網絡以 0.5 的概率將權值設置為 0。
Standout[4]是一種試圖通過自適應地選擇待丟棄的神經元(而不是隨機丟棄)來改進標準 Dropout的 Dropout 方法。這個過程是通過在神經網絡上疊加一個控制神經網架構的二值信念網絡實現的。針對原始神經網絡中的每一個權值,Standout 都會在二值信念網絡中為其添加一個相應的權值參數。在訓練時,某一層的輸出可以被寫作:
?
?
其中各變量的定義與公式(1)相同,但是W 代表作用于該層的信念網絡的權值,而 g(·)代表的激活函數。
?
Fast Dropout[5]通過從貝葉斯的角度解釋 Dropout 方法,提供了一種更快速地進行類似于 Dropout 的正則化的方式。Fast Dropout 的作者表明,帶有 Dropout 的網絡層的輸出可以被看做是從一個潛在的分布(可以近似為高斯分布)中進行采樣。然后可以直接從這個分布中采樣,或者使用它的參數來傳播關于整個 Dropout 集合的信息。該技術可以比標準 Dropout 更快地進行訓練(在標準 Dropout 中,一次只采樣可能的網絡集合中的一個元素)。
?
受貝葉斯式dropout理解方法啟發的另一種方法是 Kingma 等人[6]提出的變分Dropout(不要與 Gal 和 Ghahramani 的工作[13]弄混)。作者指出,使用高斯乘性噪聲的 Dropout 變體(由 Srivastava 等人提出的[8])可以被解釋為給定一個網絡權值上的特定先驗和特定變分目標的變分方法。然后,它們會推導出一個自適應的 Dropout 方案,該方案可以自動確定一個完整的網絡或單個層或神經元的有效的Dropout 概率。相對于現有的使用確定的 Dropout 率的方法(如使用固定的概率或網格搜索)來說,這可能是一種改進。Concrete Dropout[20]是另外一種自動調整 Dropout 概率的方法。
?
卷積層
?
用于卷積神經網絡(CNN)的樸素Dropout 的定義為:在特征圖或輸入圖像中隨機地丟棄像素。這并沒有顯著地減少過擬合,主要是因為被丟棄的像素與其鄰接像素是高度相關的[21]。然而,最近研究人員取得了許多有發展前景的、使用 Dropout 作為正則化方法訓練 CNN 的研究進展。
?
最大池化 Dropout[12]是一種保留了最大池化層的行為的方法,它同時也以一定概率讓其它的特征值可以影響池化層的輸出。在執行最大池化操作前,算子對特征值的某個子集進行 mask 運算。
?
圖 4:卷積神經網絡中的最大池化Dropout[12]。
在論文「Analysis on the dropout effect inconvolutional neural networks」[23]中,作者提出了一種基于訓練的迭代過程改變 Dropout 概率的 Dropout 方法。丟棄神經元的概率是從均勻分布或正態分布采樣得到的。該方法等價于向每一層的輸出特征圖添加噪聲。該方法提高了網絡對帶有噪聲的圖像變化的魯棒性[23]。作者也提出了「max-drop」,在這種方法中高激活值被有選擇性地丟棄。這些高激活值是在特征圖或通道上選擇出來的[23]。論文[23]中的實驗結果表明,文中所提出的方法的性能與「spatial dropout」相當。
?
Cutout 是另一種基于Dropout 的用于訓練 CNN 的正則化和數據增強方法[24],它在每一張輸入圖像的某個區域上應用一個隨機的正方形掩膜。與其它常見的在特征圖級別上應用 Dropout 的方法不同,該方法直接將 Dropout 應用在輸入圖像上。Cutout 背后主要的動機是刪除 CNN 的后續層中帶有高激活值的視覺特征[24]。然而,令人驚訝的是,這種在輸入圖像上應用掩膜的方法在執行成本更低的情況下可以取得相同的性能。
?
循環層
?
通常而言,上述前饋 Dropout 方法可以被應用到帶有循環層的網絡的前饋連接中。因此,一些研究著眼于將 Dropout 方法應用于循環連接。因為在每一個時間步上由 Dropout 引起的噪聲讓網絡難以保留長期的記憶,將標準 Dropout 應用于循環連接的效果很差[28]。然而,專門為循環層設計的 Dropout 方法也取得了成功,并且在實踐中被廣泛應用。一般來說,它們通過一種仍然能夠保存長期記憶的方式將 Dropout 應用于循環連接上。
?
2015 年提出的RNNDrop[30]提供了一種簡單的解決方案,能夠在應用 Dropout 時更好地保留記憶。
?
圖 5:在一個展開的循環神經網絡(RNN)上,對于每一個時間步(左圖)和每一個序列(右圖)進行 Dropout 掩膜采樣的對比。水平連接是循環的,而垂直連接是前饋的。不同的顏色代表應用于相應連接的不同 Dropout 掩膜。
?
2016 年,Gal 和 Ghahramani 提出了一種RNN Dropout 變體,該變體基于一種對 Dropout 方法的貝葉斯化的解釋。作者指出,如果 Dropout 被看做一個貝葉斯后驗的變分蒙特卡羅逼近,那么將其應用于循環層的自然方法就是生成一個同時將每個訓練序列的前饋連接和循環連接置零的 Dropout 掩膜,但是為序列中的每個時間步保持相同的掩膜。這與 RNNDrop 類似的地方在于,掩膜是基于每個序列生成的,但是求導過程導致在 LSTM 單元的不同位置應用 Dropout。
?
循環 Dropout[14]是另一種可以在一個 LSTM 中保存記憶,同時也能像在標準 Dropout 中一樣為每個輸入樣本生成不一樣的 Dropout 掩膜的方法。這只需將 Dropout 應用于 RNN 中更新隱藏狀態的部分,而不是狀態本身。因此,如果一個元素被刪除,那么它就不會對網絡的記憶產生影響,而不是消除隱藏狀態。
?
用于模型壓縮的 Dropout 方法
?
標準 Dropout 加大了神經網絡權值[8]的稀疏性。這一特性意味著 Dropout 方法可以通過減少有效執行所需的參數數量來壓縮神經網絡模型。自 2017 年以來,研究人員提出了幾種基于 Dropout 壓縮實際模型的方法。
?
2017 年,Molchanov 等人[9]提出使用變分 Dropout[6](本文第三節介紹過)同時對全連接層和卷積層進行稀疏化。結果表明,該方法在對性能影響最小的同時,大大減少了標準卷積網絡的參數。然后可以將這種稀疏表征傳遞到現有方法中,從而將稀疏網絡轉換為壓縮模型(如[31]中的工作)。Neklyudov 等人[10]也提出了類似的方法,他們使用了改進的變分 Dropout 方案,提高了稀疏性,但最終得到的網絡結構特別易于壓縮。
?
最近,進一步開發用于模型壓縮的 Dropout 方法是一個十分活躍的研究領域。最近提出的方法包括 Targeted Dropout[32],其中神經元被自適應地選擇,并以使網絡適應神經剪枝的方式被丟棄,在不過多損失準確率的情況下大幅度縮小網絡規模。另一種最近提出的方法是 Ising-dropout[11],它在一個神經網絡的頂部覆蓋了一個圖形化的「Ising」模型,以識別不太有用的神經元,并在訓練和推理中把它們丟棄掉。
?
蒙特卡羅 Dropout
?
2016 年,Gal 和 Ghahramani[7]提出了一種從貝葉斯理論出發的Dropout理解方式,并且被廣泛接受。他們將Dropout 解釋為深度高斯過程的貝葉斯近似。
?
除了常見的點估計輸出,該方法還提供了一種估計神經網絡輸出置信度的簡單方法。蒙特卡羅Dropout 在模型的不確定性估計中得到了廣泛的應用。
論文鏈接:https://arxiv.org/abs/1904.13310
總結
以上是生活随笔為你收集整理的Dropout的前世与今生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fast R-CNN: 我变快了,也变强
- 下一篇: 如何用OpenCV在Python中实现人