利用可視化方法直觀理解CNN

CNN模型雖然在各類任務上大放異彩,但一直以來都被詬病缺乏可解釋性。針對這個問題,過去幾年研究人員除了從理論層面去尋找解釋外,也提出了一些可視化的方法直觀地理解CNN的內部機理。本文主要介紹兩類方法,一種是基於Deconvolution, 另一種則是基於反向傳播的方法。

基於Deconvolution的方法

基於Deconvolution的方法一篇來自Matthew D Zeiler, Rob Fergus的工作《Visualizing and Understanding Convolutional Networks》

 

本文主要是將激活函數的特徵映射回像素空間,來揭示什麼樣的輸入模式能夠產生特定的輸出。

 

整個架構如圖所示:

如圖所示,每一個卷積層都連接着一個deconvnet,最後將特徵映射回像素空間。給定一個輸入,經過網絡計算得到特徵,保留某個特定的激活值,其他激活值置零,然後作爲deconvnet的輸入,逐漸映射回像素空間,這個過程中涉及三個操作及其逆操作:

1、Unpooling

實際上max-pooling是不可逆的,這裏採用了一個近似操作,在max-pooling的時候記錄下相應的索引,在unpooling時,將特徵放在這些索引的位置上,如圖所示:

2、ReLU

爲了保證所有的激活值都是正的,直接使用了ReLU激活函數 。

3、Deconvolution

對於卷積的逆操作,使用的卷積核是對應卷積層的卷積核的轉置 。

 

基於上述方法得到的可視化結果第一次直觀地給出了不同層級學到特徵的不同,總的結論就是越靠近輸入的層級學到的是越通用的特徵,越靠近輸出的層級學到的特徵越抽象,與實際任務越相關,具體的結果可以參考論文。

基於Backpropagation的方法

1、Guided-Backpropagation

這個方法來自於ICLR-2015 的文章《Striving for Simplicity: The All Convolutional Net》,文中提出了使用stride convolution 替代pooling 操作,這樣整個結構都只有卷積操作。作者爲了研究這種結構的有效性,提出了guided-backpropagation的方法。

 

基於backpropagation的方法,一種最簡單的思路是,選擇某一種輸出模式,然後通過反向傳播計算輸出對輸入的梯度。這種方式與上一種deconvnet的方式的唯一區別在於對ReLU梯度的處理。如圖所示:

 

在圖c中,ReLU處反向傳播的計算採用的前向傳播的特徵作爲門閥,而deconvnet採用的是梯度值。圖b是一個具體的數值計算例子。guided-backpropagation則將兩者組合在一起使用,這樣有助於得到的重構都是正數,並且這些非零位置都是對選擇的特定輸出起到正向作用。這種方法能夠很好的可視化高層的特徵,而deconvnet會失效。這種方法與deconvnet的方法結果對比如下圖,可以看出明顯的差異:

 

2、CAM(Class Activation Map)

這個方法嚴格來說不是基於梯度的,但後面一種方法基於它,因此這兒歸在一起一併介紹。CAM 來自CVPR 2016 《Learning Deep Features for Discriminative Localization》,作者在研究global average pooling(GAP)時,發現GAP不止作爲一種正則,減輕過擬合,在稍加改進後,可以使得CNN具有定位的能力(當然RCNN系列已經說明CNN中蘊含着目標的位置信息,但是在進行分類任務時,引入全連接層,將目標的空間位置信息丟棄了)。CAM(class activation map)是指輸入中的什麼區域能夠指示CNN進行正確的識別,作者提出了一種簡單的方法,整個流程圖如下:

網絡結構分爲兩部分,一部分是特徵提取(CNN),一部分是分類層(softmax),在特徵提取的最後一層我們使用全局平均池化,這樣GAP的將會輸出每個feature map的平均值,接下來進行一個加權求和得到最後的輸出。那麼對應的,我們可以對最後一層feature map利用分類層的權值進行加權。

 

通常特徵圖上每個位置的值在存在其感知野裏面某種模式時被激活,最後的class activation map是這些模式的線性組合。爲了簡便,可以直接使用上採樣,將class activation map 還原到與原圖一樣的大小,通過疊加,我們就可以知道哪些區域是與最後分類結果息息相關的部分。

 

3、Grad-CAM

與CAM不同的是,CAM的特徵加權係數是分類器的權值,Grad-CAM的加權係數是通過反向傳播得到的。整個流程如下圖:

 

如何求得各個feature map的加權權值,本文采用梯度回傳的方法:

 

也很簡單,分兩步:第1步求logits對卷積特徵的梯度,第2步,這些梯度進行一個global average pooling,那麼得到的heatmap圖爲:

得到的這個heatmap是個粗略的圖,它的大小與特徵圖大小一致,如VGG 最後一層特徵圖大小是14x14,然後使用雙線性插值得到與原圖同樣的大小。

 

Grad-CAM 與 CAM相比,它的優點是適用的範圍更廣,不像CAM要求最後一層是GAP,Grad-CAM對各類結構,各種任務都可以使用。這兩種方法也可以應用於進行弱監督下的目標檢測,後續也有相關工作基於它們進行改進來做弱監督目標檢測。

總結

上述幾種方法可以讓我們對CNN有一些感性直觀的認識,有助於理解CNN不同層級的特徵的差異,可以指導我們如何更好的利用CNN的特徵來研究某些任務。下篇文章將簡單地實現上述幾種可視化方法。

這是我們公衆號的技術專欄文章,有興趣可以關注我們的公衆號:geetest_jy

添加技術助理:geetest2014可以和我們的作者以及很多共同的技術愛好者一起交流

 

參考文獻:

  • Zeiler, Matthew D., and Rob Fergus. "Visualizing and understanding convolutional networks." European conference on computer vision. Springer, Cham, 2014.
  • Springenberg, Jost Tobias, et al. "Striving for simplicity: The all convolutional net." arXiv preprint arXiv:1412.6806 (2014).
  • Zhou, Bolei, et al. "Learning deep features for discriminative localization." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.
  • Selvaraju, Ramprasaath R., et al. "Grad-cam: Visual explanations from deep networks via gradient-based localization." https://arxiv.org/abs/1610.02391 v3 7.8 (2016).
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章