博客:blog.shinelee.me | 博客園 | CSDNhtml
ZFNet出自論文《 Visualizing and Understanding Convolutional Networks》,做者Matthew D. Zeiler和Rob Fergus——顯然ZFNet是以兩位做者名字的首字母命名的,截止20190911,論文引用量爲4207。ZFNet一般被認爲是ILSVRC 2013的冠軍方法,但實際上ZFNet排在第3名,前兩名分別是Clarifai和NUS,不過Clarifai和ZFNet都出自Matthew D. Zeiler之手,見ILSVRC2013 results。網絡
ZFNet(2013)在AlexNet(2012)的基礎上,性能再次提高,以下圖所示,圖片來自cs231n_2019_lecture09。架構
論文最大的貢獻有2個:ide
本文將圍繞上述2點展開,先介紹網絡架構,再介紹特徵可視化的方法。函數
ZFNet的網絡架構以下性能
ZFNet的網絡架構是在AlexNet基礎上修改而來,與AlexNet相比,差別不大:ui
僅這2項修改,就得到了幾個點的性能提高。因此,重要的是爲何這樣修改?這樣修改的動機是什麼?文中這樣敘述:spa
經過對AlexNet的特徵進行可視化,文章做者發現第2層出現了aliasing。在數字信號處理中,aliasing是指在採樣頻率太低時出現的不一樣信號混淆的現象,做者認爲這是第1個卷積層stride過大引發的,爲了解決這個問題,能夠提升採樣頻率,因此將stride從4調整爲2,與之相應的將kernel size也縮小(能夠認爲stride變小了,kernel沒有必要看那麼大範圍了),這樣修改先後,特徵的變化狀況以下圖所示,第1層呈現了更多更具區分力的特徵,第二2層的特徵也更加清晰,沒有aliasing現象。更多關於aliasing的內容,能夠參見Nyquist–Shannon sampling theorem和Aliasing。.net
這就引出了另一個問題,如何將特徵可視化?正如論文標題Visualizing and Understanding Convolutional Networks所顯示的那樣,與提出一個性能更好的網絡結構相比,這篇論文更大的貢獻在於提出一種將卷積神經網絡深層特徵可視化的方法。
在博文《卷積神經萬絡之卷積計算、做用與思想》 博客園 | CSDN | blog.shinelee.me 中,咱們講到卷積神經網絡經過逐層卷積將原始像素空間逐層映射到特徵空間,深層feature map上每一個位置的值都表明與某種模式的類似程度,但由於其位於特徵空間,不利於人眼直接觀察對應的模式,爲了便於觀察理解,須要將其映射回像素空間,「從羣衆中來,到羣衆中去」,論文《 Visualizing and Understanding Convolutional Networks》就重點介紹瞭如何「到羣衆中去」。
可視化操做,針對的是已經訓練好的網絡,或者訓練過程當中的網絡快照,可視化操做不會改變網絡的權重,只是用於分析和理解在給定輸入圖像時網絡觀察到了什麼樣的特徵,以及訓練過程當中特徵發生了什麼變化。
下面這張圖截自論文同款talk:
給定1張輸入圖像,先前向傳播,獲得每一層的feature map,若是想可視化第\(i\)層學到的特徵,保留該層feature map的最大值,將其餘位置和其餘feature map置0,將其反向映射回原始輸入所在的像素空間。對於通常的卷積神經網絡,前向傳播時不斷經歷 input image→conv → rectification → pooling →……,可視化時,則從某一層的feature map開始,依次反向經歷 unpooling → rectification → deconv → …… → input space,以下圖所示,上方對應更深層,下方對應更淺層,前向傳播過程在右半側從下至上,特徵可視化過程在左半側從上至下:
可視化時每一層的操做以下:
不斷經歷上述過程,將特徵映射回輸入所在的像素空間,就能夠呈現出人眼能夠理解的特徵。給定不一樣的輸入圖像,看看每一層關注到最顯著的特徵是什麼,以下圖所示:
除了網絡架構和可視化方法,論文中還有其餘一些值得留意的點,限於篇幅就不展開了,這裏僅作記錄,詳細內容能夠讀一讀論文:
以上。