深度網絡結構是由多個單層網絡疊加而成的,而常見的單層網絡按照編碼解碼狀況能夠分爲下面3類:網絡
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
上式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.