深度學習架構現在變得越來越深,dropout作為一個防過擬合的手段,使用也越來越普遍。
2012年,Dropout的想法被首次提出,它的出現徹底改變了深度學習進度,之後深度學習方向(反饋模型)開始展現優勢,傳統的機器學習慢慢的消聲。
那麼,我們想問的是,什麼是dropout呢?
dropout改變之前稠密網絡中,權重統一學習,參數統一更新的模式,提出在每次訓練迭代中,讓網絡中的部分參數得到學習,即部分參數得到更新,部分參數保持不更新。
這種方法,看起來簡單,但是卻解決了,困擾了深度學習方向,一直只能用淺層網絡,無法使用深度網絡的尷尬局面,(因為隨著網絡的層數加大,過擬合問題一定會出現)
做了這麼多鋪墊,還沒有提到正題,Dropout身後的數學原理是什麼?在說這個之前,我們不得不說先說一下正則化,畢竟要說明白一件事,還是要有頭有尾,不至於讓看筆記的人,看到莫名其妙。
在dropout提出之前,學院派和工業屆在深度學習消除過擬合的研究方向(領域)是--正則化。 最早是在2000年初,開始被引入,然後在神經網絡中被廣泛使用。eg:L1,L2,Ln正則化。 但是,這些正則化並不能完全理解過度擬合問題,因為這種正則化的處理方式是: 共同適應.
簡單的用圖描述一下神經網絡中的協同適應,如下圖:
在深度/大型神經網絡中,一個主要問題就是:協同適應,你想像一下,如果網絡中所有的權重都是一塊學習更新的,那麼網絡層中一定會存在非常大的參數,這會使得這些參數更加的敏感,相比其他參數,它們具備更高的預測能力(因為它們對輸入的值更加敏感)。在這種條件下,當訓練時,隨著網路不斷的迭代,這些參數學習得更快,也就是被調整的更多,所對應的特徵也就學習的更深入,其他的參數慢慢被消弱,甚至被忽視,這種現象被稱之為: 共適應。 像L1,L2這樣的傳統正則化無法防止這種情況,因為它們只是根據參數的大小進行了正則化,它們在選擇和拒絕參數權重的時候,也是具有確定性的。還是避免不了強者變強,弱者變弱的現象。因此,在dropout之前,神經網絡的規模和準確性變得有限。
嗯,這就是為什麼還需要Dropout了,它面對L1,L2問題時,避開了共同適應問題,提出了自適應,因而我們可以搭建更深的神經網絡。
額,如果你只需了解Dropout的故事,看到這裡就可以了,如果你想更深入了解一下Dropout,以及背後的數學原理,那麼請耐心的繼續往下閱讀吧。
那麼,Dropout被後的數學原理是什麼呢?
想像一下:一個簡單的單層網絡,如下圖4所示。
線性激活函數,f(x)=x。輸出結果是輸入乘以網絡層參數的和sum(wI)。我們考慮用這個簡化的例子來做數學解釋。結果(經驗)適用於通常的非線性網絡。
對於模型評估,我們需要最小化min損失函數loss,對於這個線性層網絡,我們使用最小二乘損失函數( ordinary least square loss)來評估:
上圖中: (1)表示的是最小二乘損失函數。(2)dropout_rate為,其中~伯努利(p)(即服從伯努利分布),至於什麼是伯努利分布,伯努利分布是一個離散型機率分布,是N=1時二項分布的特殊情況(詳細的,自己去百度哈)
網絡訓練的反向傳播採用梯度下降法。因此,我們將首先看方程2中帶有dropout網絡的梯度,然後再看方程1中的網絡。
現在,我們將試圖找到這個梯度和正則網絡的梯度之間的關係。為此,假設我們在等式1中設w'=p*w。因此,
對於(4)公式取導數:
現在,我們不難發現。如果我們得到dropout網絡梯度的期望值,
由(6)可知,如果w'=p*w,則帶dropout的梯度的期望值等於正則後的正則網絡E的梯度。
Dropout 等價於 regularized Network(正則化網絡)
上面的標題意思是:最小化損失函數loss(在等式2中)等同於最小化正則化網絡的損失loss,對正則化網絡的損失函數還有印象嗎?,如下面的等式7所示。
看看,(7)和(6)是不是一樣的。所以,我們就可以解釋以下問題:
1. 為什麼當dropout_rate, p = 0.5時,會出現 最大正則效果?
是因為(7)中p(1-p),在p=1/2時,最大啊
2. 對於不同的層,應該選擇什麼樣的p值?【對於dropout網絡而言】
在Keras中,dropout_rate設定為是(1-p)。對於中間層,大型網絡,選擇(1-p)=0.5是理想的。對於輸入層,(1-p)應保持在0.2或更低。這是因為刪除輸入數據會對培訓產生不利影響。不建議A(1-p)>0.5,因為它在不增強正則化的情況下剔除過多的參數。
3. 為什麼我們在測試(test)或預測(inference)過程中用p來衡量權重w,而不是(1-p),可是訓練的時候是(1-p)啊?
因為dropout網絡的期望值相當於一個正則網絡,它的權值隨dropout_rate p的變化而變化。這種變化使得dropout網絡的推論與整個網絡相當。這也有計算上的好處,這在[1]中用集成建模的觀點解釋。
如果有什麼困惑/或者交流的可以留言哈
參考資料:
1. Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2014). Dropout: a simple way to prevent neural networks from overfitting. The Journal of Machine Learning Research, 15(1), 1929–1958.
2. Baldi, P., & Sadowski, P. J. (2013). Understanding dropout. In Advances in neural information processing systems(pp. 2814–2822).