Dropout

在訓練網絡模型的時候,如果訓練集太少,要訓練的參數又很多,則容易產生過擬合(模型對訓練集具有較高的識別率,但是對測試集效果則會很差,這時候模型的泛化能力很差)。此時我們常用解決的辦法就是在損失函數中再添加一個懲罰項,通過設置一個懲罰係數,對模型中的參數進行“懲罰”,從而防止因爲模型中的大量的參數過大,而導致模型的複雜度上升,最後導致訓練出的模型出現過擬合。如果懲罰係數越大,則模型的複雜度就會越低,此時模型的泛化能力也就越好。而在2012年由Hinton等人提出的dropout方法,也是爲了防止神經網絡中出現的過擬合。他指出:在訓練模型的過程中,會隨機的停止一半的特徵檢測器來降低過擬合現象,而這種方法則是防止特徵檢測器之間複雜的互適應關係,這種關係只對幾個其它特定的具有上下文關係的特徵檢測器有幫助作用。

 

dropout防止訓練數據之間複雜的互適應性的具體過程:神經網絡中每個隱層神經元都有0.5的概率被停止,這樣就可以使得隱層神經元不會依賴於其它神經元的表現輸出。還可以將dropout看成是一種用神經網絡來計算模型平均的有效方法。

 

在訓練帶有dropout模型的時候,使用的是SGD優化方法。還要修改的就是懲罰項,之前說過,懲罰項的作用是通過防止網絡中參數過大,而導致模型的過擬合。現在我們不需要再設置懲罰項,而是直接設置給網絡中參數的設置一個約束上限,如果在參數更新的時候,參數超過這個約束上限,則把參數設置爲這個上限的值。使用約束上限來防止參數增長過大,就不需要再去考慮參數更新時,參數過大問題,並且這也可以讓我們在在開始的時候就將學習率設置成一個大的值,這樣就能保證搜索更大的權值空間。

 

在測試訓練好的模型的時候,可以通過計算由大量不同網絡模型(由於是隨機的停止一些隱層單元,因此在訓練模型的時候,網絡中隱層神經單元的不同,就會產生不同的神經網絡模型。)產生的預測的輸出的平均值來減少誤差。這種方法的缺點由於要訓練和測試大量不同的神經網絡模型,就會計算量龐大,十分費時。雖然由於停止的網絡隱層單元不同會構成不同的模型,但是所有這些不同的網絡還是具有相同的權值。

 

在測試的時候,使用均值網絡,它需要計算所有隱層單元的輸出,但是最後的輸出要減半,這是爲了補償在激活時它們的值是訓練時的二倍。而這也與之前所說的,先計算所有不同網絡模型的輸出,再求輸出的平均值是相似。計算均值往往只比計算一個網絡模型效果更好,也有助於提高網絡的泛化能力。Dropout不僅在分類問題上有很好的效果提升,在迴歸問題上也能得到很好的效果。

 

參考文獻:

http://blog.csdn.net/whiteinblue/article/details/37808623

http://www.69900.com.cn/GarfieldEr007/article/details/50581013

《Improving neural networks by preventing co-adaptation of feature detectors》 G. E. Hinton, N. Srivastava, A. Krizhevsky

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章