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

 

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

  咱們知道,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。(一個是輸出,一個是輸入)dom

  其表達式以下:函數

  

  二者的區別從下圖基本能夠看明白:tornado

   

  其原理仍是很簡單,是吧?spa

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

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

   

  注意:由於DropConnect只能用於全鏈接的網絡層(和dropout同樣),若是網絡中用到了卷積,則用patch卷積時的隱層節點是不使用DropConnect的,所以上面的流程裏有一個Extract feature步驟,該步驟就是網絡前面那些非全鏈接層的傳播過程,好比卷積+pooling.blog

  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.

相關文章
相關標籤/搜索