dropout在DNN中的原理

2021-10-06 12:42:35 字數 1598 閱讀 9506

在本文中,我將主要討論神經網路(特別是深層網路)中的丟失(dropout)概念,然後進行實驗,以了解在標準資料集上實施深層網路並觀察丟失的影響對實踐的實際影響。

術語「dropout」是指在神經網路中刪除單位(隱藏的和可見的)。

簡而言之,dropout是指在隨機選擇的某些神經元的訓練階段忽略單元(即神經元)。 「ignore」是指在特定的向前或向後通過過程中不考慮這些單位。

從技術上講,在每個訓練階段,單個節點要麼以1-p的概率從網路中退出,要麼以概率p的形式被保留,從而留下乙個簡化的網路; 刪除節點的傳入和傳出邊緣也將被刪除。

既然我們對dropout有所了解,就會出現乙個問題-為什麼我們根本需要dropout? 為什麼我們需要從字面上關閉神經網路的某些部分?

這些問題的答案是「防止過度擬合」。

完全連線的層佔據了大多數引數,因此,神經元在訓練過程中彼此之間發展了相互依賴性,這抑制了每個神經元的個體力量,導致訓練資料過度擬合。

現在,我們對dropout和動機有所了解,讓我們詳細介紹一下。如果您只想概述神經網路中的dropout情況,那麼以上兩節就足夠了。在本節中,我將介紹更多技術性。

在機器學習中,正則化是防止過度擬合的方法。正則化通過對損失函式增加懲罰來減少過度擬合。通過新增此懲罰,可以對模型進行訓練,使其不會學習相互依賴的一組特徵權重。那些了解邏輯回歸的人可能熟悉l1(拉普拉斯)和l2(高斯)的懲罰。

dropout是一種在神經網路中進行正則化的方法,有助於減少神經元之間的相互依賴學習。

訓練階段:

訓練階段:對於每個隱藏層,每個訓練樣本,每次迭代,忽略(零淘汰)節點(和相應的啟用)的隨機分數p。

測試階段:

使用所有啟用,但將它們減少乙個因子p(以考慮訓練期間丟失的啟用)。

dropout迫使神經網路學習更強大的功能,這些功能可與其他神經元的許多不同隨機子集結合使用。

dropout大約會使收斂所需的迭代次數加倍。 但是,每個時期的訓練時間更少。

對於h個隱藏單元,每個隱藏單元都可以刪除,我們有2 ^ h種可能的模型。 在測試階段,將考慮整個網路,並且每次啟用都會減少因子p

讓我們在實踐中嘗試一下這一理論。 為了了解dropout的工作原理,我在keras中構建了乙個深層網路,並嘗試在cifar-10資料集上對其進行驗證。 構建的深層網路具有三個大小分別為64、128和256的卷積層,然後是兩個大小為512的密集連線層和乙個大小為10(cifar-10資料集中的類數)的輸出層密集層。

我將relu用作隱藏層的啟用函式,將sigmoid用作輸出層的啟用函式(這些是標準配置,對更改這些特性並沒有做太多的嘗試)。 另外,我使用了標準的分類交叉熵損失。

最後,我在所有層中都使用了dropout,並以0.1的步長將dropout的比例從0.0(完全沒有dropout)增加到0.9,然後將其中的每乙個執行到20個迭代。 結果看起來像這樣:

從以上圖表可以得出結論,隨著下降的增加,在趨勢開始下降之前,驗證準確性會有所提高,而損失會減少。

深度學習中的Dropout原理介紹

如果網路的問題在於連線密集,那麼久強制讓它稀疏,基於這種想法的演算法就是dropout演算法。因為在機器學習的一些模型中,如果模型的引數太多,而訓練樣本又太少的話,這樣訓練出來的模型很容易產生過擬合現象。在訓練bp網路時經常遇到的乙個問題,過擬合指的是模型在訓練資料上損失函式比較小,準確率較高 如果...

Tensorflow中的dropout的使用方法

hinton在 improving neural networks by preventing co adaptation of feature detectors 中提出了dropout。dropout用來防止神經網路的過擬合。tensorflow中可以通過如下3中方式實現dropout。tf.n...

DNN中的Skinning系統

對skinning 早有耳聞。但很汗的是,dnn才是我接觸過的第乙個採用 skinning 的專案。所謂 skinning 就是實現功能和外觀的分離。但由於接觸 asp.net 不多。看了挺長時間 dnn了,現在才對整個 skinning 系統有了一定的理解。在 dnn中,所謂的 由兩部分組成。即 ...