發生過擬合的主要原因可以有以下三點:
(1)數據有噪聲
(2)訓練數據不足,有限的訓練數據
(3)訓練模型過度導致模型非常複雜
Dropout是通過修改神經網絡本身來實現的,它是在訓練網絡時用的一種技巧(trike)。它的流程如下:
假設我們要訓練上圖這個網絡,在訓練開始時,我們隨機地“刪除”一半的隱層單元,視它們爲不存在,得到如下的網絡:
保持輸入輸出層不變,按照BP算法更新上圖神經網絡中的權值(虛線連接的單元不更新,因爲它們被“臨時刪除”了)。
以上就是一次迭代的過程,在第二次迭代中,也用同樣的方法,只不過這次刪除的那一半隱層單元,跟上一次刪除掉的肯定是不一樣的,因爲我們每一次迭代都是“隨機”地去刪掉一半。第三次、第四次……都是這樣,直至訓練結束。
以上就是Dropout,它爲什麼有助於防止過擬合呢?可以簡單地這樣解釋,運用了dropout的訓練過程,相當於訓練了很多個只有半數隱層單元的神經網絡(後面簡稱爲“半數網絡”),每一個這樣的半數網絡,都可以給出一個分類結果,這些結果有的是正確的,有的是錯誤的。隨着訓練的進行,大部分半數網絡都可以給出正確的分類結果,那麼少數的錯誤分類結果就不會對最終結果造成大的影響。