深度學習 Dropout如何解決過擬合

2021-09-28 22:19:24 字數 2513 閱讀 7815

在機器學習的模型中,如果模型的引數太多,而訓練樣本又太少,訓練出來的模型很容易產生過擬合的現象(類似於結構力學中的超靜定問題,舉這個栗子是因為作者的專業是工程力學。當然了不保證栗子的準確性。。。)。在訓練神經網路的時候經常會遇到過擬合的問題,過擬合具體表現在:模型在訓練資料上損失函式較小,**準確率較高;但是在測試資料上損失函式比較大,**準確率較低。過擬合是很多機器學習的通病。如果模型過擬合,那麼得到的模型幾乎不能用。為了解決過擬合問題,一般會採用模型整合的方法,即訓練多個模型進行組合。此時,訓練模型費時就成為乙個很大的問題,不僅訓練多個模型費時,測試多個模型也是很費時。

綜上所述,訓練深度神經網路的時候,總是會遇到兩大缺點:

(1)容易過擬合

(2)費時dropout可以比較有效的緩解過擬合的發生,在一定程度上達到正則化的效果。

關於dropout的**,網上說的很詳盡,這裡我們不再贅述,有興趣的朋友可以自行查閱,我們這裡僅對dropout的過程做乙個簡單說明。

我們知道,典型的神經網路其訓練流程是將輸入通過網路進行正向傳導,然後將誤差進行反向傳播。dropout就是針對這一過程之中,隨機地刪除隱藏層的部分單元,進行上述過程。

綜合而言,上述過程可以分步驟為:

隨機刪除網路中的一些隱藏神經元,保持輸入輸出神經元不變;

將輸入通過修改後的網路進行前向傳播,然後將誤差通過修改後的網路進行反向傳播;

對於另外一批的訓練樣本,重複上述操作.

我們可以用下面的影象來形象的表述一下這個過程:

上面第一幅圖是傳統的神經網路工作流程:

1,資料從最左端輸入

2,經過與權重相乘並求和傳遞給隱藏層

3,隱藏層與權重相乘並求和傳遞給輸出

4,對輸出求損失

5,從輸出端開始逐步更新權重引數

6利用新的權重引數,從最左端開始,從新開始步驟1-5

上面第二幅圖是引入了dropout之後的計算過程,我們可以發現,整個流程完全一模一樣,但是由於中間隱藏層被隨機抽掉了一部分,因此每次計算過程中的引數數量明顯下降(注意,總的引數不變,只是每一次參與計算的變少了。因為被抽掉的部分神經元並不是永久性的消逝,只是不參與這一輪的計算而已。)

前方高能

下面這幅圖是作者根據各位大牛對dropout的說明,按照自己理解畫的圖,對於圖的正確性不做保證,不管你信不信,反正我是信了。請各位謹慎看圖。。。(哈哈哈。。。)

如上圖所示,當資料量不足夠而引數足夠多時,模型很容易產生過擬合,但是我們對其中的特徵值進行隨機摘除後(暫時不用,我們暫時扔掉的是隱藏層的神經元,可以等效看做是隨機扔掉了一部分輸入的特徵值),曲線的特徵明顯減弱,當我們對模型訓練多次之後,再將輸出的曲線進行乙個取平均的操作,得到的結果泛化性會得到極大提高。

dropout的具體工作流程上面已經詳細的介紹過了,但是具體怎麼讓某些神經元以一定的概率停止工作(就是被刪除掉)?

下面,我們具體講解一下dropout一些公式推導:

在訓練模型階段無可避免的,在訓練網路的每個單元都要新增一道概率流程。

大家看文章的時候會發現,文獻裡面提到當我們使用了dropout後,還要對最後的權重進行乙個rescale,也就是要對權重進行乙個倍數的擴大。但是為什麼要這麼做,貌似找不到乙個合適的解釋。不知道是不是這個問題太弱智,大佬們不屑於解釋。總之這個問題會困擾很多問題少年,比如作者。

這裡作者還是決定按照自己的理解對此做乙個強行解釋,(如果大佬發現有錯誤,還請多多指教)

前方高能

dropout的目的是解決模型過擬合的問題;

dropout的方法是隨機拿掉一些隱藏單元。

這裡我們先來看一下本來的神經網路的輸出是怎麼來的:

y =f

(∑in

wixi

+b)y=f(\sum_^w_x_+b )

y=f(∑i

n​wi

​xi​

+b)輸出就是每乙個輸入xix_

xi​乘以對應的權重wiw_

wi​加上偏置量b

bb再乘以乙個啟用函式得到。

現在,我們為了提高模型的泛化性,隨機的關閉一些隱藏層的神經元。

可是最終我們進行**的時候,是所有的隱藏層都參與計算。這樣一來得到的結果勢必比隱藏了部分單元的結果要大,為了保持模型的輸出和輸入規模不變,我們必須乘以乙個係數。

具體公式推導可以

參考文獻

參考文獻

深度學習 Drop out

1.原理 在每個訓練批次的前向傳播中,以概率p保留部分神經元。目的是 簡化神經網路的複雜度,降低過擬合風險。根據保留概率p計算乙個概率向量r 1,0,1,0,0,1,1.然後保留部分節點。2.注意點 因為dropout一般只使用在訓練時,而測試時所有的神經元都會保留。為了使訓練和測試時對應,可以有以...

深度學習 dropout理解

深度神經網路的訓練是一件非常困難的事,涉及到很多因素,比如損失函式的非凸性導致的區域性最優值 計算過程中的數值穩定性 訓練過程中的過擬合等。其中,過擬合是很容易發生的現象,也是在訓練dnn中必須要解決的問題。過擬合我們先來講一下什麼是 過擬合 過擬合是指模型訓練到一定程度後,在訓練集上得到的測試誤差...

深度學習 理解dropout

dropout是指在深度學習網路的訓練過程中,對於神經網路單元,按照一定的概率將其暫時從網路中丟棄。注意是暫時,對於隨機梯度下降來說,由於是隨機丟棄,故而每乙個mini batch都在訓練不同的網路。dropout是cnn中防止過擬合提高效果的乙個大殺器。dropout如何工作 dropout以概率...