1. 程式人生 > >卷積神經網路調參技巧(2)--過擬合(Dropout)

卷積神經網路調參技巧(2)--過擬合(Dropout)

Dropout(丟棄)

首先需要講一下過擬合,訓練一個大型網路時,因為訓練資料有限,很容易出現過擬合。過擬合是指模型的泛化能力差,網路對訓練資料集的擬合能力很好,但是換了其他的資料集,擬合能力就變差了。

在訓練深層網路模型時,按照一定的概率,暫時將神經元丟棄,得到一個更加簡單的網路模型,即每一個batch訓練的網路模型都是不一樣的,都是原始網路的子集,這些子網路共享權值,與原始網路的層數、引數數目相等。這樣,每一個神經元在網路中出現都是獨立的,不會依賴其他神經元。不同的batch訓練得到更多的子網路,提高了網路模型的泛化能力,可以防止過擬合。


由上圖可以看出,(a)是原始神經網路,(b)是dropout之後的網路。

原始網路中第層第個神經元的輸出是:

採用dropout之後的網路中第層第個神經元的輸出是:

其中,是第層第個神經元的輸出,是第層第個神經元的權重(卷積核),

是第層第個神經元的偏置。由伯努利函式以概率隨機的產生0、1向量,來決定網路中第層第個神經元被丟棄還是保留,0表示該神經元被dropout,就是使該神經元的啟用被置零;1則表示該神經元被保留用於構成子網路。

在測試階段:

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

M是Dropout中所有的子網路的集合,所以當我們在測試階段的時候,我們就是對M中所有的子網路,以其出現的概率進行加權平均,得到期望值,就是原始網路的精確度。

注:經過交叉驗證,dropout率等於0.5的時候效果最好,原因是0.5的時候dropout隨機生成的網路結構最多

缺點是模型收斂速度會減慢。