深度學習基礎 初見dropout

2021-08-14 14:56:17 字數 1960 閱讀 3102

dropout是2023年深度學習視覺領域的開山之作*****:《imagenet classification with deep convolutional》所提到的演算法,用於防止過擬合。

基本思想

dropout是指在深度學習網路訓練的過程中,對於神經網路單元,按照一定的概率將其==暫時==從網路中丟棄,對於隨機梯度下降演算法來說,由於是隨機丟棄,所以每個mini-batch都在訓練不同的網路。

大規模神經網路的缺點:

過擬合是很多機器學習的通病,為了解決過擬合問題,我們可能會想到l2正則化、或者減小網路規模。dropout很好的解決了這個問題。

因而對於乙個有n個節點的神經網路,有了dropout後,==就可以看做是2^n個模型的集合了==,但是需要訓練的引數數目依然不變,這就解脫了費時的問題。

2.1 dropout是怎麼工作的?

dropout就是我們讓它在前向傳播的時候,讓某個神經元的啟用值以一定的概率p,讓他停止工作。

==以前我們網路的計算公式==是:

採用==dropout後==變成如下公式:

==再詳細點的解釋就是==:我們要讓某個神經元以概率p停止工作(也就是將這個神經元的啟用值變為0), 那麼這個概率怎麼產生呢?答案就是伯努利分布,我們用伯努利函式,以概率p隨機生成乙個0、1的向量, 也就是上述公式中的r。

原始碼實現如下

#dropout函式的實現  

def dropout(x, level):

if level < 0.

or level >= 1:#level是概率值,必須在0~1之間

raise exception('dropout level must be in interval [0, 1[.')

retain_prob = 1. - level

#我們通過binomial函式,生成與x一樣的維數向量。binomial函式就像拋硬幣一樣,我們可以把每個神經元當做拋硬幣一樣

#硬幣 正面的概率為p,n表示每個神經元試驗的次數

#因為我們每個神經元只需要拋一次就可以了所以n=1,size引數是我們有多少個硬幣。

sample=np.random.binomial(n=1,p=retain_prob,size=x.shape)#即將生成乙個0、1分布的向量,0表示這個神經元被遮蔽,不工作了,也就是dropout了

print sample

x *=sample#0、1與x相乘,我們就可以遮蔽某些神經元,讓它們的值變為0

print x

x /= retain_prob

return x

#對dropout的測試,大家可以跑一下上面的函式,了解乙個輸入x向量,經過dropout的結果

x=np.asarray([1,2,3,4,5,6,7,8,9,10],dtype=np.float32)

dropout(x,0.4)

函式中,x是本層網路的啟用值。level就是dropout就是每個神經元要被丟棄的概率。

2.2 rescale

經過上面的遮蔽,使部分啟用值變為0以後,我們還需要對向量進行rescale,也就是乘以 1/(1-p).

我們前面說過,其實dropout是類似於平均網路模型。我們可以這麼理解,我們在訓練階段訓練了1000個網路,每個網路生成的概率為pi,然後我們在測試階段的時候,我們肯定要把這1000個網路的輸出結果都計算一遍,然後用這1000個輸出,乘以各自網路的概率pi,求得的期望值就是我們最後的平均結果。

1、2、

3、《imagenet classification with deep convolutional》

4、《improving neural networks by preventing co-adaptation of feature detectors》

深度學習 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以概率...