l1、l2正則化是通過修改代價函式來實現的,而dropout則是通過修改神經網路本身來實現的,它是在訓練網路時用的一種技巧(trike)。它的流程如下:
假設我們要訓練上圖這個網路,在訓練開始時,我們隨機地「刪除」一半的隱層單元,視它們為不存在,得到如下的網路:
保持輸入輸出層不變,按照bp演算法更新上圖神經網路中的權值(虛線連線的單元不更新,因為它們被「臨時刪除」了)。
以上就是一次迭代的過程,在第二次迭代中,也用同樣的方法,只不過這次刪除的那一半隱層單元,跟上一次刪除掉的肯定是不一樣的,因為我們每一次迭代都是「隨機」地去刪掉一半。第三次、第四次……都是這樣,直至訓練結束。
以上就是dropout,它為什麼有助於防止過擬合呢?可以簡單地這樣解釋,運用了dropout的訓練過程,相當於訓練了很多個只有半數隱層單元的神經網路(後面簡稱為「半數網路」),每乙個這樣的半數網路,都可以給出乙個分類結果,這些結果有的是正確的,有的是錯誤的。隨著訓練的進行,大部分半數網路都可以給出正確的分類結果,那麼少數的錯誤分類結果就不會對最終結果造成大的影響。
更加深入地理解,可以看看hinton和alex兩牛2012的**《imagenet classification with deep convolutional neural networks》
防止過擬合(二) Dropout
深度學習筆記 欠擬合 過擬合 防止過擬合 一 正則化 防止過擬合 三 資料增強 在 2012 年,hinton 等人在其 improving neural networks by preventing co adaptation of feature detectors 中使用了 dropout 方...
dropout解決過擬合
原理就是在第一次學習的過程中,隨即忽略一些神經元和神經的鏈結。使得神經網路變得不完整。一次一次。每一次得出的結果不依賴某乙個引數。這樣就解決了過擬合問題。import tensorflow as tf from sklearn.datasets import load digits from skl...
Dropout與過擬合
假設我們要訓練這樣乙個神經網路 輸入是x輸出是y,正常的流程是 我們首先把x通過網路前向傳播,然後把誤差反向傳播以更新引數讓網路進行學習。使用dropout之後過程變成 隨機 臨時 刪掉網路中一半的隱藏神經元,輸入輸出神經元保持不變 下圖中虛線為部分臨時被刪除的神經元 把輸入x通過修改後的網路前向傳...