防止過擬合(二):Dropout

深度學習筆記:欠擬合、過擬合
防止過擬合(一):正則化
防止過擬合(三):數據增強

Dropout

在 2012 年,Hinton 等人在其論文《Improving neural networks by preventing co-adaptation of feature detectors》中使用了 Dropout 方法來提高模型性能。
Dropout通過隨機斷開神經網絡之間的連接,減少每次訓練時實際參與計算的模型的參數量,從而減少了模型的實際容量,來防止過擬合。
但是需要注意的是:在測試時,Dropout 會恢復所有的連接,保證模型測試時獲得最好的性能。

示意圖

在這裏插入圖片描述
圖(a)是標準的全連接神經網絡,當前節點與前一層的所有輸入節點相連。
圖(b)是添加dropout功能的網絡,按照概率隨機斷開神經網絡的連接線。圖中虛線代表了採樣結果爲斷開的連接線,實線代表了採樣結果不斷開的連接線。

TensorFlow2.0中實現dropout

1.可以通過 tf.nn.dropout(x, rate)函數實現某條連接的 Dropout 功能,其中rate表示斷開的概率值。

# 添加dropout操作
x = tf.nn.dropout(x, rate=0.5)

2.也可以將Dropout作爲一個網絡層使用,在網絡中間插入一個 Dropout 層

# 添加dropout層
model.add(layers.Dropout(rate=0.5))

實驗效果

爲了驗證 Dropout 層對網絡訓練的影響,我們在維持網絡層數等超參數不變的條件下,通過在 5 層的全連接層中間隔插入不同數量的 Dropout 層來觀測 Dropout 對網絡訓練的影響。
在這裏插入圖片描述
實驗結論:
從上圖可以看到,在不添加 Dropout 層時,網絡模型出現了明顯的過擬合現象;隨着 Dropout 層的增加,網絡模型訓練時的實際容量減少,泛化能力變強。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章