天天看點

Dropout:A Simple Way to Prevent Neural Networks from Overfitting

原文:Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1):1929-1958.

這是一篇深度學習領域引用量目前達到1779的文章,在學習深度學習必讀文章之列,下面了解下作者們的主要思想

深度神經網絡包含multiple非線性隐藏層,這使得深度神經網絡是一個具有非常強的表達能力的模型,他們可以到學習網絡輸入到輸出之間非常複雜的關系。但是由于有限的訓練資料,這些複雜的關系中有有許多是受到采樣噪聲影響的結果,這部分關系隻出現在訓練集,但在實際的測試集中并不存在,即使訓練集和測試集是從同一個分布産生。這會導緻過拟合,許多方法被發展用于減少這種問題。這些方法包括如當網絡在驗證集的表現出現下降時終止訓練,引入多種權值懲罰如L1和L2正則化,軟權重共享。

有無限運算的前提下,調整一個固定大小模型的最好方法,是對所有可能的參數設定所得到的預測結果取權重平均,依據訓練集的後驗機率對各種參數設定給定權重。這對于簡單或者小的模型有時候可以取得相當好的逼近效果,但是,我們想使用少量的計算得到貝葉斯黃金标準的模型表現。我們打算通過逼近一個同樣的多個預測進行的權重幾何平均,這些預測由指數數量的共享參數的學習模型所得到。

模型結合一般可以提升機器學習方法的表現。但是對于巨大的神經網絡而言,對許多分離的訓練好的網絡的輸出取平均的想法是過分的昂貴。當單個模型之間各不相同時,結合幾個模型是幾乎有效的方法,這些模型的不同展現在不同的結構或者使用不同的訓練樣本進行訓練。訓練許多不同結構的模型是非常困難的,因為要找到每個結構所對應的超參數是一個令人沮喪的任務,而且訓練不同結構的模型需要許多的運算資源。再且,巨大的網絡一般需要大量的訓練資料,但實際可能沒有足夠的訓練資料得到不同的子集用于訓練不同的網絡。即使可以訓練到許多不同的大型網絡,在快速響應是很重要的場景,實際應用測試時候同時使用全部大型網絡是不實際的。

Dropout是一個解決這些問題的技術,它可以防止過拟合并且提供一種結合指數數量不同神經網絡結構的近似的方法。Dropout指在神經網絡當中丢棄一些單元。丢棄一個單元指暫時地把該單元從網絡中移除,連帶它全部的輸入輸出連接配接,如下圖所示。對于哪個單元該被丢棄,選擇是随機的。在最簡單的情況裡每個單元都有一個固定的互相獨立的機率p。p可以通過驗證集得到或者簡單得設定為0.5。

Dropout:A Simple Way to Prevent Neural Networks from Overfitting

對神經網絡使用Dropout相當于獲得該網絡的一個簡化版本。簡化網絡由沒有被丢棄的單元所組成。一個有n個單元的神經網絡有 2n 個簡化版本網絡。這些簡化版的網絡共享權值使得權值參數總數依然是 O(n2) 或者更少。

在測試時,對由指數級别數量簡約模型所得到的預測進行平均是不可行的。但是一個非常簡單的近似平均方法在實際應用中有很好的效果。想法是在測試時使用一個單一的沒有經過Dropout的網絡。該網絡單元的輸出權重等于該單元在訓練時沒有被Dropout的機率。這樣使得指數級别數量的簡化網絡在測試時得到結合,實驗證明這樣可以有效的降低泛化誤差。

Dropout的概念不僅僅局限于神經網絡,在玻爾茲曼機等圖形模型也可以被廣泛應用。

繼續閱讀