Deep learning:五十(Deconvolution Network簡單理解)

 

  深度網絡結構是由多個單層網絡疊加而成的,而常見的單層網絡按照編碼解碼狀況能夠分爲下面3類:網絡

  1. 既有encoder部分也有decoder部分:好比常見的RBM系列(由RBM可構成的DBM, DBN等),autoencoder系列(以及由其擴展的sparse autoencoder, denoise autoencoder, contractive autoencoder, saturating autoencoder等)。
  2. 只包含decoder部分:好比sparse coding, 和今天要講的deconvolution network.
  3. 只包含encoder部分,那就是普通的feed-forward network.

  Deconvolution network的中文名字是反捲積網絡,那麼什麼是反捲積呢?其概念從字面就很容易理解,假設A=B*C 表示的是:B和C的卷積是A,也就是說已知B和C,求A這一過程叫作卷積。那麼若是已知A和B求C或者已知A和C求B,則這個過程就叫作反捲積了,deconvolution.函數

  Deconvolution network是和convolution network(簡稱CNN)對應的,在CNN中,是由input image卷積feature filter獲得feature map, 而在devonvolution network中,是由feature map卷積feature filter獲得input image. 因此從這點看,做者強調deconvolution network是top-down是有道理的(具體可參考Zeiler的Deconvolutional networks),看下圖即可知:學習

   

  上圖表示的是DN(deconvolution network的簡稱)的第一層,其輸入圖像是3通道的RGB圖,學到的第一層特徵有12個,說明每一個輸入通道圖像都學習到了4個特徵。而其中的特徵圖Z是由對應通道圖像和特徵分別卷積後再求和獲得的。優化

  本人感受層次反捲積網絡和層次卷積稀疏編碼網絡(Hierarchical Convolution Sparse Coding)很是類似,只是在Sparse Coding中對圖像的分解採用的是矩陣相乘的方式,而在DN這裏採用的是矩陣卷積的形式。和Sparse coding中train過程交叉優化基圖像和組合係數的相似,DN中每次train時也須要交叉優化feature filter和feature map.編碼

  DN的train過程:spa

  學習DN中第l(小寫的L)層網絡的特徵時,需優化下面的目標函數:3d

   

  它是將第l層網絡的輸出當作第l+1層網絡的輸入(這和一般的deep network訓練過程相似),其中的  表示第l層的特徵圖k和第l-1層的特徵圖c的鏈接狀況,若是鏈接則爲1,不然爲0. 對上面loss函數優化的思想大體爲:code

  1. 固定   ,優化   ,可是這樣不能直接優化(沒弄清楚緣由,可參考博客下面網友的評論),所以做者引入了一個輔助變量  ,則這時的loss函數變爲:

   

    上式loss函數中對輔助變量  和  之間的距離進行了懲罰,所以這個輔助變量的引入是合理的,接着交替優化  和  ,直到    收斂(具體可參考文章公式細節)。blog

  2. 固定  ,優化  ,直接採用梯度降低法便可。圖片

  DN的test過程:

  學習到每層網絡的filter後,當輸入一張新圖片時,可一樣採用重構偏差和特徵圖稀疏約束來優化獲得本層的feature map, 好比在第一層時,需優化:

   

  其中的f是在訓練過程當中獲得的。

  提取出圖片y的DN特徵後(可多層),能夠用該特徵進行圖像的識別,也能夠將該特徵從上到下一層層卷積下來獲得圖像y’,而這個圖像y’可理解爲原圖像y去噪後的圖像。所以DN提取的特徵至少有圖像識別和圖像去噪2個功能。

  不難發現,若是讀者對卷積稀疏編碼網絡熟悉的話,也就比較容易理解反捲積網絡了。同理,和sparse coding同樣,DA的train過程和test過程的速度都很是慢。

       讀完這篇paper,不得不佩服搞數學優化的人。

 

  參考資料:

  Deconvolutional Networks, Matthew D. Zeiler, Dilip Krishnan, Graham W. Taylor and Rob Fergus.

相關文章
相關標籤/搜索