深度學習 dropout理解

2021-08-28 14:52:56 字數 1507 閱讀 1508

深度神經網路的訓練是一件非常困難的事,涉及到很多因素,比如損失函式的非凸性導致的區域性最優值、計算過程中的數值穩定性、訓練過程中的過擬合等。其中,過擬合是很容易發生的現象,也是在訓練dnn中必須要解決的問題。

過擬合我們先來講一下什麼是「過擬合」。過擬合是指模型訓練到一定程度後,在訓練集上得到的測試誤差遠大於在測試集上得到的誤差,如下圖所示:

導致過擬合的直接原因是模型學習了太多雜訊模式,並錯誤的將其視為資料模式;導致過擬合的主要原因有:

1. 訓練資料集太小

2. 模型太複雜

3. 過度訓練

常用的過擬合解決方案

知道了產生過擬合的原因,就可以制定相應的解決方案,一般而言,解決的主要方法有:增加訓練資料量、減少模型的複雜度、新增正則項等。在深度學習中,以上方法都可以使用,但是dropout是乙個更加高效、簡單的防止過擬合的方法。

dropout是指在訓練乙個大的神經網路的時候,隨機「關閉」一些神經元,即把這些神經元從網路中「抹去」,這相當於在本次訓練中,這些被「抹去」的神經元不參與本次訓練,英文即是「dropout」的意思。如下圖所示:

我們看到圖中打叉的神經元就是被「dropout」掉的神經元,和這些個神經元相連線的權重值也一併被「抹去」,不參與本次訓練。不參與本次訓練是說在當前的batch中,不參與訓練,每個batch都會隨機挑選神經元做dropout。

dropout為什麼可以防止過擬合

我們知道「隨機森林」是一種不容易發生過擬合的演算法,其採用的方法是「bagging」,即通過對多個樹的輸出結果加權平均,得出最後的結果。而每棵樹都是在不同的訓練集上、設定不同的引數得到的,因此是一種典型的通過多個不同引數,甚至不同型別的模型來降低方差的一種方法。這種方法對傳統的機器學習演算法、或者小型的nn模型可行,但是當資料量很大、模型很複雜的時候,我們不能訓練多個不同的模型出來做」bagging」,因為深度神經網路的訓練是乙個很耗時的過程,需要大量的計算資源和時間。

dropout則為這種思想提供了一種「廉價」的解決方案,因為每一次迭代的過程中,我們會隨機dropout掉一些神經元(至於在那一層做dropout,需要看不同的情況),如果設定的dropout的值為0.5,則表示每個神經元有50%的概率被留下來,50%的概率被」抹去「。這就相當於我們從原來的神經網路中隨機取樣了50%的節點,組成了乙個新的神經網路,這個是原來的神經網路的乙個子網路,但是規模要比原來的神經網路小很多,並且訓練代價也比較小, 這個新的子網路就相當於是」隨即森林「中的乙個子樹(sub-tree)了。我們多次迭代優化,每次迭代優化都會做這樣的」隨機取樣「,從原來的網路中構造乙個子網路(sub-network),而每次構造的網路也都不盡相同,這就使得學習到的sub-network在結果上差異性,最後再對這些每個迭代學習到的不同的sub-network做乙個」bagging「來得到最終的輸出結果。

dropout中的一些細節問題

深度學習 理解dropout

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

深度學習 Drop out

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

深度學習基礎 初見dropout

dropout是2012年深度學習視覺領域的開山之作 imagenet classification with deep convolutional 所提到的演算法,用於防止過擬合。基本思想 dropout是指在深度學習網路訓練的過程中,對於神經網路單元,按照一定的概率將其 暫時 從網路中丟棄,對於...