摘要:伯努利隨機變量具有以下概率質(zhì)量分布其中,是可能的輸出結(jié)果。很明顯,這個隨機變量完美的模擬了單個神經(jīng)元上面的過程。對一層神經(jīng)元進行處理假設(shè)第層有個神經(jīng)元,那么在一次循環(huán)中,神經(jīng)網(wǎng)絡(luò)可以被看做是次的伯努利實驗的集成,每個神經(jīng)元被保留的概率是。
作者:chen_h
微信號 & QQ:862251340
微信公眾號:coderpai
簡書地址:https://www.jianshu.com/p/ba9...
這篇教程是翻譯Paolo Galeone寫的Dropout分析教程,作者已經(jīng)授權(quán)翻譯,這是原文。
過擬合一直是深度神經(jīng)網(wǎng)絡(luò)(DNN)所要面臨的一個問題:模型只是在訓練數(shù)據(jù)上學習分類,使其適應(yīng)訓練樣本,而不是去學習一個能夠?qū)νㄓ脭?shù)據(jù)進行分類的完全決策邊界。這些年,提出了很多的方案去解決過擬合問題。其中一種方法就是Dropout,由于這種方法非常簡單,但是在實際使用中又具有很好的效果,所以被廣泛使用。
DropoutDropout 背后的思想其實就是把DNN當做一個集成模型來訓練,之后取所有值的平均值,而不只是訓練單個DNN。
DNN網(wǎng)絡(luò)將Dropout率設(shè)置為 p,也就是說,一個神經(jīng)元被保留的概率是 1-p。當一個神經(jīng)元被丟棄時,無論輸入或者相關(guān)的參數(shù)是什么,它的輸出值就會被設(shè)置為0。
丟棄的神經(jīng)元在訓練階段,對BP算法的前向和后向階段都沒有貢獻。因為這個原因,所以每一次訓練,它都像是在訓練一個新的網(wǎng)絡(luò)。
你可以查看這篇論文,進行更詳細的了解。
簡而言之:Dropout 可以在實際工作中發(fā)揮很好的效果,因為它能防止神經(jīng)網(wǎng)絡(luò)在訓練過程中產(chǎn)生共適應(yīng)。
現(xiàn)在,我們對Dropout有了一個直觀的概念,接下來讓我們深入的分析它。
Dropout是如何工作的?正如前面所說的,Dropout 以概率 p 來丟棄神經(jīng)元, 并且讓別的神經(jīng)元以概率 q = 1 - p,進行保留。
每一個神經(jīng)元都有相同的概率被丟棄和保留。 也就是說:
給定
h(x) = xW + b 是一個線性轉(zhuǎn)換方程,其中輸入 x 是一個 di 維度的數(shù)據(jù),輸出數(shù)據(jù)是一個 dh 維度的。
a(h) 是一個激活函數(shù)。
我們只將 Dropout 作用在模型的訓練階段,即我們可以把模型的激活函數(shù)修改為:
其中,D = (X1, ..., Xdn) 是一個 dh 維度的向量,Xi 是一個伯努利變量。
*注:Probability density function 是概率密度函數(shù),針對連續(xù)型隨機變量而言,一般寫法是一個函數(shù),如 f(x)=e^(-x),積分得到∫f(x)dx=1。
Probability mass function 是概率質(zhì)量函數(shù),是針對離散型隨機變量而言。一般寫法是寫成對應(yīng)每一個特定取值的概率,如P{x=xi}=1/15。*
伯努利隨機變量具有以下概率質(zhì)量分布:
其中,k 是可能的輸出結(jié)果。
很明顯,這個隨機變量完美的模擬了單個神經(jīng)元上面的 Dropout 過程。實際上,神經(jīng)元以概率 p = P(k=1) 丟棄,以 p = P(k=0) 保留。
比如,在第 i 個神經(jīng)元上,Dropout 的應(yīng)用如下所示:
其中,P(Xi = 0) = p 。
因為,在訓練階段,一個神經(jīng)元被保留的概率是 q 。但是在測試階段,我們必須去模擬訓練階段的集成網(wǎng)絡(luò)模型。
為此,作者建議在測試階段將神經(jīng)元的激活值乘以因子 q 再輸出。以便在訓練階段集成模型,在測試階段只要輸出單個模型的值即可。從而得到下式:
Inverted Dropout我們稍微將 Dropout 方法改進一下,使得我們只需要在訓練階段縮放激活函數(shù)的輸出值,而不用在測試階段改變什么。這個改進的 Dropout 方法就被稱之為 Inverted Dropout 。
比例因子將修改為是保留概率的倒數(shù),即:
因此,我們最終可以把模型修改為:
在各種深度學習框架的實現(xiàn)中,我們都是用 Inverted Dropout 來代替 Dropout,因為這種方式有助于模型的完整性,我們只需要修改一個參數(shù)(保留/丟棄概率),而整個模型都不用修改。
對一層神經(jīng)元進行 Dropout 處理假設(shè)第 h 層有 n 個神經(jīng)元,那么在一次循環(huán)中,神經(jīng)網(wǎng)絡(luò)可以被看做是 n 次的伯努利實驗的集成,每個神經(jīng)元被保留的概率是 p 。
因此,第 h 層一共被保留的神經(jīng)元個數(shù)如下:
由于每個神經(jīng)元都是用伯努利隨機變量進行建模的,并且所有這些隨機變量是獨立同分布的,所以所有被丟棄的神經(jīng)元的總數(shù)也是一個隨機量,稱為二項式:
其中,在 n 個試驗中,獲得保留 k 個的概率質(zhì)量分布為:
這個式子也很好解釋,如下:
我們現(xiàn)在可以利用這個分布來分析丟棄指定神經(jīng)元的概率。
當我們使用 Dropout 時,我們需要先定義一個固定的 Dropout 概率 p,即我們期望從網(wǎng)絡(luò)中丟棄多少比例的神經(jīng)元。
舉個例子,如果我們的神經(jīng)元數(shù)量是 n = 1024,p = 0.5,那么我們希望有 512 個神經(jīng)元被丟棄。讓我們來驗證一下:
因此,丟棄的神經(jīng)元個數(shù)是 np = 512 的概率是 0.025 。
Python 代碼可以幫助我們可視化結(jié)果,比如我們把 n 值固定,然后改變 p 的值,那么可以得到下圖:
正如我們在上圖中看到的,不管 p 值如何改變,平均丟棄的神經(jīng)元個數(shù)都是 np 。也就是:
而且,我們可以注意到,值的分布是關(guān)于 p = 0.5 對稱的。而且,p 隨著離 0.5 越遠,np 的值越來越大。
在訓練階段,我們需要把縮放因子 p 添加到網(wǎng)絡(luò)中,因為我們期望在訓練階段只保留百分之 1-p 的神經(jīng)元。相反,在測試階段,我們需要開啟所有的神經(jīng)元。
Dropout 和其他正則化Dropout 方法通常和 L2 范數(shù)或者其他參數(shù)約束技術(shù)(比如Max Norm)一起使用。規(guī)范化有助于使模型參數(shù)的值不是很大,而且這種方法參數(shù)值的變化過程不會很大。
簡而言之,例如,L2 歸一化是損失函數(shù)的一個附加項,其中 λ∈[0,1] 是被稱為正則化的超參數(shù),F(xiàn)(W;x) 是模型,E 是真實值y和預測值y^的誤差函數(shù)。
對于這個附加項,我們很容易理解。當通過梯度下降進行反向傳播時,這可以減少更新量。如果 η 是學習率,則參數(shù) w∈W 的更新量為:
相反,多帶帶使用 Dropout 方法不能防止參數(shù)值在訓練階段變得過大。而且,Inverted Dropout 方法還會導致更新步驟變得更大,正如下面所描述的。
Inverted Dropout 和其他正則化由于 Dropout 方法不會阻止參數(shù)過大,而且參數(shù)之間也不會互相牽制。所以我們要使用 L2 正則化來改變這個情況,或者其他的正則化方法。
加入明確的縮放因子,前面的方程就變?yōu)椋?/p>
觀察上式,很容易發(fā)現(xiàn),當使用 Inverted Dropout 方法時,學習率被縮放到 q 的因子,由于 q 的取值范圍是 [0,1],那么 η 和 q 之間的比率可以在以下之間變化:
因此,從現(xiàn)在開始,我們稱 q 是一個 boosting 因子,因為它提高了學習率。此外,我們稱 r(q) 為有效學習率。
因此,有效學習率相對于所選擇的學習率有更好的表示性。由于這個原因,限制參數(shù)值的規(guī)范化方法可以幫助簡化學習率的選擇過程。
總結(jié)Dropout 方法存在兩種形式:直接的和 Inverted。
在單個神經(jīng)元上面,Dropout 方法可以使用伯努利隨機變量。
在一層神經(jīng)元上面,Dropout 方法可以使用伯努利隨機變量。
我們精確的丟棄 np 個神經(jīng)元是不太可能的,但是在一個擁有 n 個神經(jīng)元的網(wǎng)絡(luò)層上面,平均丟棄的神經(jīng)元就是 np 個。
Inverted Dropout 方法可以產(chǎn)生有效學習率。
Inverted Dropout 方法應(yīng)該和別的規(guī)范化參數(shù)的技術(shù)一起使用,從而幫助簡化學習率的選擇過程。
Dropout 方法有助于防止深度神經(jīng)網(wǎng)路的過擬合。
作者:chen_h
微信號 & QQ:862251340
簡書地址:https://www.jianshu.com/p/ba9...
CoderPai 是一個專注于算法實戰(zhàn)的平臺,從基礎(chǔ)的算法到人工智能算法都有設(shè)計。如果你對算法實戰(zhàn)感興趣,請快快關(guān)注我們吧。加入AI實戰(zhàn)微信群,AI實戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41147.html
摘要:李理卷積神經(jīng)網(wǎng)絡(luò)之簡介是一種防止模型過擬合的技術(shù),這項技術(shù)也很簡單,但是很實用。原文鏈接李理三層卷積網(wǎng)絡(luò)和的實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)的原理已經(jīng)在推薦李理卷積神經(jīng)網(wǎng)絡(luò)之的原理及實現(xiàn)以及李理卷積神經(jīng)網(wǎng)絡(luò)之二文中詳細講過了,這里我們看怎么實現(xiàn)。 《李理:卷積神經(jīng)網(wǎng)絡(luò)之Dropout》4. Dropout4.1 Dropout簡介dropout是一種防止模型過擬合的技術(shù),這項技術(shù)也很簡單,但是很實用。它的基...
摘要:因為在每一時刻對過去的記憶信息和當前的輸入處理策略都是一致的,這在其他領(lǐng)域如自然語言處理,語音識別等問題不大,但并不適用于個性化推薦,一個用戶的聽歌點擊序列,有正負向之分。 在內(nèi)容爆炸性增長的今天,個性化推薦發(fā)揮著越來越重要的作用,如何在海量的數(shù)據(jù)中幫助用戶找到感興趣的物品,成為大數(shù)據(jù)領(lǐng)域極具挑戰(zhàn)性的一項工作;另一方面,深度學習已經(jīng)被證明在圖像處理,計算機視覺,自然語言處理等領(lǐng)域都取得了不俗...
摘要:摘要機器學習實戰(zhàn)篇用簡單的代碼打造屬于自己的神經(jīng)網(wǎng)絡(luò)模型是目前最受歡迎的深度學習庫之一,對人工智能的商業(yè)化做出了巨大貢獻。你學會了如何建立一個簡單的六層神經(jīng)網(wǎng)絡(luò),可以預測電影評論的情感,其準確率達到。 摘要: 機器學習實戰(zhàn)篇:用簡單的代碼打造屬于自己的神經(jīng)網(wǎng)絡(luò)模型~ Keras是目前最受歡迎的深度學習庫之一,對人工智能的商業(yè)化做出了巨大貢獻。它使用起來非常簡單,它使你能夠通過幾行代碼就...
閱讀 1208·2021-09-30 09:47
閱讀 3758·2021-09-06 15:02
閱讀 1765·2021-09-01 10:46
閱讀 2353·2019-08-30 15:52
閱讀 587·2019-08-29 15:28
閱讀 1867·2019-08-29 15:08
閱讀 1142·2019-08-29 13:28
閱讀 2565·2019-08-29 12:19