1.7 理解dropout


Dropout為什么有正則化的作用?

 

下面來直觀理解一下。

 

 

上面講到,dropout每次迭代都會讓一部分神經元失活,這樣使得神經網絡會比原始的神經網絡規模變小,因此采用一個較小神經網絡好像和使用正則化的效果是一樣的。

 

 

第二個直觀認識是

 

我們從單個神經元入手,這個單元的工作就是輸入並生成一些有意義的輸出,通過dropout,該單元的輸入被隨機地消除,因此該神經元不能只依靠任何一個特征(即輸入),因為每個特征都有可能被隨機清除,或者說該神經元的輸入可能被隨機清除,因此不會把所有賭注都放在一個輸出上,不願意給任何一個輸入加上太多權重,因為它(輸入)可能會被刪除。因此該單元將通過這種方式積極地傳播開,並為單元的四個輸入只賦予一點權重。通過傳播所有權重,dropout將產生收縮權重的平方范數的效果。和我們之前講過的L2正則化類似,實施dropout的結果是它會壓縮權重,並完成一些預防過擬合的外層正則化。事實證明,dropout被真實地作為一種正則化的替代方式,但是L2正則化對不同權重衰減是不同的,它取決於倍增的激活函數的大小。

 

 

總結一下,dropout的功能類似於L2正則化,與L2正則化不同的是,被應用的方式不同。Dropout也會有不同,甚至更適用於不同的輸入范圍。

 

實施dropout的另外一個細節是,下面是一個擁有三個輸入特征的網絡,其中一個要選擇的參數是keep_prob,不同層的keep_prob也可以變化。比如說第一層,矩陣W[1]大小是3x7,第二個權重矩陣大小是7x7,等等。W[2]是最大的權重矩陣,因為W[2]擁有最大的參數集,即7x7,為了預防矩陣的過擬合,那么對於這一層,我們可以將該層的keep_prob的值設置的低一些,比如說0.5,對於其他層,過擬合的程度可能沒那么嚴重,它們的keep_prob值可能高一些,如0.7,如果在某一層,我們不擔心其存在過擬合的情況,那么keep_prob值可以設置為1。下圖中紫色框出的小數即為每一層的keep_prob值。注意keep_prob值是1的話,那么意味着保留所有單元,即不在這一層使用dropout。

 

從技術上講,我們也可以對輸入層應用dropout,我們有機會刪除一個或者多個輸入特征,雖然現實中我們通常不這樣做。

 

總結一下,如果你擔心某些層比其他層更容易發生過擬合,可以把某些層的keep_prob值設置得比其他層更低,缺點是需要使用交叉驗證,你要搜索更多的超參數;另一種方案是在一些層上應用dropout,而有些層不使用dropout,應用dropout的層只有一個超參數,即keep_prob。

 

下面分享兩個實施過程中的技巧

 

實施dropout,在計算機視覺領域有很多成功的第一次,計算機視覺中輸入量非常大,輸入太多像素,以至於沒有足夠的數據,所以dropout在計算機視覺中應用得比較頻繁。但要牢記的一點是,dropout是一種正則化方法,它有助於預防過擬合,因此,除非算法過擬合,不然一般不用dropout,因此一般用在計算機視覺領域,因為我們沒有足夠的數據,所以會造成過擬合。

 

 

Dropout的一大缺點就是代價函數J不再被明確定義(造成每次迭代損失函數值可能不會總體上單調遞減),每次迭代,都會隨機移除一些節點,如果再三檢查梯度下降的性能,實際上很難進行復查。因此,一般是在調試前,先將keep_prob設置為1,先訓練一遍,確保損失J是不斷下降的,保證網絡本身沒問題之后,再設置合適的keep_prob值,再進行訓練。

 

 

 

內容主要來自與:

Andrew Ng的改善深層神經網絡:超參數調試、正則化以及優化課程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM