dropout總結


1.伯努利分布:伯努利分布亦稱“零一分布”、“兩點分布”。稱隨機變量X有伯努利分布, 參數為p(0<p<1),如果它分別以概率p和1-p取1和0為值。EX= p,DX=p(1-p)。

 

2.

dropout其實也是一種正則化,因為也把參數變稀疏(l1,原論文)和變小(l2,caffe實際實現)。只有極少的訓練樣本可用時,Dropout不會很有效。因為Dropout是一個正則化技術,它減少了模 型的有效容量。為了抵消這種影響,我們必須增大模型規模。不出意外的話,使 用Dropout時較佳驗證集的誤差會低很多,但這是以更大的模型和更多訓練算法的迭 代次數為代價換來的。對於非常大的數據集,正則化帶來的泛化誤差減少得很小。在 這些情況下,使用Dropout和更大模型的計算代價可能超過正則化帶來的好處。http://www.dataguru.cn/article-10459-1.html

idea:想利用集成學習bagging的思想,通過訓練多個不同的模型來預測結果。但是神經網絡參數量巨大,訓練和測試網絡需要花費大量的時間和內存。

功能:1.解決過擬合

    2.加快訓練速度

為什么呢work:

     1.dropout類似於多模型融合,多模型融合本身能解決解決一下過擬合

    因為不同的網絡可能產生不同的過擬合,取平均則有可能讓一些“相反的”擬合互相抵消。dropout掉不同的隱藏神經元就類似在訓練不同的網絡(隨機刪掉一半隱藏神經元導致網絡結構已經不同),整個dropout過程就相當於 對很多個不同的神經網絡取平均。而不同的網絡產生不同的過擬合,一些互為“反向”的擬合相互抵消就可以達到整體上減少過擬合。https://zhuanlan.zhihu.com/p/23178423

    2.減少神經元之間復雜的共適應關系: 因為dropout程序導致兩個神經元不一定每次都在一個dropout網絡中出現。(這樣權值的更新不再依賴於有固定關系的隱含節點的共同作用,阻止了某些特征僅僅在其它特定特征下才有效果的情況)。 迫使網絡去學習更加魯棒的特征 (這些特征在其它的神經元的隨機子集中也存在)。換句話說假如我們的神經網絡是在做出某種預測,它不應該對一些特定的線索片段太過敏感,即使丟失特定的線索,它也應該可以從眾多其它線索中學習一些共同的模式(魯棒性)。(這個角度看 dropout就有點像L1,L2正則,減少權重使得網絡對丟失特定神經元連接的魯棒性提高)https://zhuanlan.zhihu.com/p/23178423

     3.正則化。讓參數稀疏和讓參數變小

     4.加噪聲。觀點十分明確,就是對於每一個dropout后的網絡,進行訓練時,相當於做了Data Augmentation,因為,總可以找到一個樣本,使得在原始的網絡上也能達到dropout單元后的效果。 比如,對於某一層,dropout一些單元后,形成的結果是(1.5,0,2.5,0,1,2,0),其中0是被drop的單元,那么總能找到一個樣本,使得結果也是如此。這樣,每一次dropout其實都相當於增加了樣本。https://blog.csdn.net/stdcoutzyx/article/details/49022443

caffe的實現:

    論文中的實現:

          訓練,用伯努利分布生成概率,以概率p打開,概率1-p關閉,打開就是直接把值正常傳給下一層,關閉就是不進行正向傳播,傳給下一層的值是0

          測試,用伯努利分布分成概率,將每個權重乘以概率p進行衰減

         caffe實現:

          訓練,用伯努利分布生成概率,以概率p打開,概率1-p關閉。打開的同時要乘以一個系數,相當於把權重放大。關閉還是和論文一樣。

          測試,直接把上一層的數值傳遞給下一層,其實也可以直接不用這一層

      為什么要這么去實現:

    https://blog.csdn.net/u012702874/article/details/45030991解答了為什么要在測試的時候rescale,因為如果直接使用dropout丟棄,其實就是選擇了其中的n*p個神經元,所有參數乘以p其實也就是相當於選擇了n*p,數量級是至少是一樣的

    至於caffe為什么要放大,https://stackoverflow.com/questions/50853538/caffe-why-dropout-layer-exists-also-in-deploy-testing這個也沒能很好解釋,只能說是等效的

      

前向傳播:

    

    

反向傳播(注意:不進行反向傳播,其實只是不求梯度,把上一層的梯度直接傳給下一層):

   如果進行反向傳播,還是以概率p傳播梯度,概率1-p不傳梯度給下一層,也就是0

   如果不進行反向傳播,直接把上一層的梯度傳給下一層

  

 

 

dropout與bagging的關系:

    在Bagging的情況下,所有模型是獨立 的。在Dropout的情況下,模型是共享參數的,其中每個模型繼承的父神經網絡參 數的不同子集。參數共享使得在有限可用的內存下代表指數數量的模型變得可能。 在Bagging的情況下,每一個模型在其相應訓練集上訓練到收斂。在Dropout的情況下,通常大部分模型都沒有顯式地被訓練,通常該模型很大,以致到宇宙毀滅都不 能采樣所有可能的子網絡。取而代之的是,可能的子網絡的一小部分訓練單個步驟,參數共享導致剩余的子網絡能有好的參數設定。這些是僅有的區別。除了這些,Dropout與Bagging算法一樣。例如,每個子網絡中遇到的訓練集確實是替換采樣的 原始訓練集的一個子集。

    關於Dropout的一個重要見解是,通過隨機行為訓練網絡並平均多個隨機決定進 行預測,通過參數共享實現了Bagging的一種形式。

 

 


免責聲明!

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



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