Deep learning:四十六(DropConnect簡單理解)


 

  和maxout(maxout簡單理解)一樣,DropConnect也是在ICML2013上發表的,同樣也是為了提高Deep Network的泛化能力的,兩者都號稱是對Dropout(Dropout簡單理解)的改進。

  我們知道,Dropout是在訓練過程中以一定概率1-p將隱含層節點的輸出值清0,而用bp更新權值時,不再更新與該節點相連的權值。用公式描述如下:

   

  其中v是n*1維的列向量,W是d*n維的矩陣,m是個d*1的01列向量,a(x)是一個滿足a(0)=0的激發函數形式。這里的m和a(Wv)相乘是對應元素的相乘。

  而DropConnect的思想也很簡單,與Dropout不同的是,它不是隨機將隱含層節點的輸出清0,而是將節點中的每個與其相連的輸入權值以1-p的概率清0。(一個是輸出,一個是輸入)

  其表達式如下:

  

  兩者的區別從下圖基本可以看明白:

   

  其原理還是很簡單,是吧?

  下面主要來看DropConnect的trainning和inference兩部分。

  training部分和Dropout的training部分很相似,不過在使用DropConnect時,需要對每個example, 每個echo都隨機sample一個M矩陣(元素值都是0或1, 俗稱mask矩陣)。training部分的算法流程如下:

   

  注意:因為DropConnect只能用於全連接的網絡層(和dropout一樣),如果網絡中用到了卷積,則用patch卷積時的隱層節點是不使用DropConnect的,因此上面的流程里有一個Extract feature步驟,該步驟就是網絡前面那些非全連接層的傳播過程,比如卷積+pooling.

  DropConnect的inference部分和Dropout不同,在Dropout網絡中進行inference時,是將所有的權重W都scale一個系數p(作者證明這種近似在某些場合是有問題的,具體見其paper)。而在對DropConnect進行推理時,采用的是對每個輸入(每個隱含層節點連接有多個輸入)的權重進行高斯分布的采樣。該高斯分布的均值與方差當然與前面的概率值p有關,滿足的高斯分布為:

   

  inference過程如下:

   

  由上面的過程可知,在進行inference時,需要對每個權重都進行sample,所以DropConnect速度會慢些。

  根據作者的觀點,Dropout和DropConnect都類似模型平均,Dropout是2^|m|個模型的平均,而DropConnect是2^|M|個模型的平均(m是向量,M是矩陣,取模表示矩陣或向量中對應元素的個數),從這點上來說,DropConnect模型平均能力更強(因為|M|>|m|)。

  DropConnect的源代碼可以在作者項目主頁DropConnect project page.上下載,不過需要用到Cuda(我這里沒設備,沒有跑它)。

 

 

  參考資料:

      Deep learning:四十五(maxout簡單理解)

      Regularization of Neural Networks using DropConnect, Li Wan,Matthew Zeiler, Sixin Zhang, Yann LeCun, Rob Fergus.

      Deep learning:四十一(Dropout簡單理解)

      DropConnect.ppt

      DropConnect project page.

 

 

 

 


免責聲明!

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



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