卷積神經網絡模型解釋性調研

前言

最近在訓練一個鑑黃模型,模型訓練出來之後發現模型對粉色背景的圖片、人體佔圖片大面積比例的圖片十分敏感,導致這些正常圖片容易被誤判爲黃圖,因此,需要進行模型解釋性方面的研究,來看看模型究竟是根據什麼來進行圖片分類的。

這裏主要會介紹三篇論文,分別是:

  • Visualizing and Understanding Convolutional Networks
  • Learning Deep Features for Discriminative Localization
  • Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

論文閱讀部分

1 Visualizing and Understanding Convolutional Networks

這篇論文的主要思想是:
1 在每一次卷積操作後我們都可以得到相應的特徵圖,這些特徵圖中包含了對圖像分類有幫助作用的特徵,但是這些特徵圖我們難以直接進行可視化,因此作者提出了反捲積網絡的思路.
2 將得到的特徵圖通過反捲積網絡(一層反捲積網絡可以看作是一層卷積網絡的逆過程),將特徵圖逆映射爲輸入的信號,這個逆映射的結果實際上展示了這一層卷積神經網絡提取到的用於分類的主要特徵。

一些實現細節:

這裏的兩個反捲積和反池化的操作具體是如何完成的呢?
1 反捲積
這裏用反捲積來描述其實是不嚴謹的,確切來說是轉置卷積。
首先先介紹卷積是怎麼計算的。我們常常在學習卷積計算時,看到如下的示例圖像,這是一個很形象的介紹。

在這裏插入圖片描述

但是在實際計算時,爲了方便計算,我們將需要卷積的圖像,比如說是4×4的,按行展開,展開成了16×1的矩陣,相應的卷積核我們也需要進行展開操作,將這些卷積核合併到了一個矩陣中,下面這個圖像就是一個3×3的卷積核展開的例子:
在這裏插入圖片描述
記這個4×16的矩陣爲W,16×1的圖像矩陣爲x,實際卷積操作的時候就是Wx,得到4×1的卷積結果,然後我們將這個卷積的結果按行展開,就得到了上圖中2×2的卷積結果。在實際運算時,由於常常還需要進行下一步的卷積操作,實際上是不需要再展開的。

那麼反捲積又是如何操作的呢?
我們將反捲積看作是卷積的逆過程,也就是我們想要將一個卷積後的結果(假設與上面相同,特徵圖爲一個1×4的矩陣),反捲積得到與原始圖像相同大小的矩陣(也就是1×16的矩陣),很自然地我們能夠想到,用原卷積核矩陣的轉置來進行計算。

原本的卷積過程是:(4×16)×(16×1)= 4×1
轉置卷積的過程是:(16×4)×(4×1)= 16×1

如此,我們就得到了與原始圖像大小相同的圖像,這個不能完全說是逆過程,因爲得到的16×1的矩陣與原始圖像不是完全相同的,可以說是一個近似過程吧。

2 反池化
這篇論文裏的反池化是指反最大池化。池化操作本身是不可逆的,但這裏多了一個步驟,就是在模型訓練池化時記錄最大值的位置。這樣就可以進行反池化了。
首先在模型訓練進行池化操作時記錄下每個池化區域內的最大值的位置,在進行反池化時,將該位置的值置爲池化後的這個最大值,其餘位置置爲0.

文章的結論
上面描述了文章的主要思想和一些具體的實現細節,下面描述該文章運用以上思路做的一些實驗。
作者主要是針對Imagenet數據集,運用了一個比較簡單的卷積神經網絡結構:
在這裏插入圖片描述
可以看到這裏一共有5層卷積層,作者在此對5層卷積層得到的特徵圖都進行了反向操作,結果展示如下:

layer2
在這裏插入圖片描述在這裏插入圖片描述
這裏就不做全部展示了,根據逆特徵圖得到了以下結論:
1 前兩層主要提取了顏色信息、邊角的紋理等
2 第三層主要提取了圖像中的紋理特徵
3 第四、五層相比於第三層更多地提取了紋理的細節,信息比較豐富

根據以上結論我們可以大概觀察到卷積神經網絡內部是如何進行信息提取的,這對我們增加對網絡的瞭解有一定的指導意義。

1 作者根據對以上逆特徵圖的觀察,發現第一層的部分卷積核沒有激活,作者據此修改了網絡結構,並取得了更好地效果。
2 作者在模型分佈訓練了 epochs [1,2,5,10,20,30,40,64]時,對特徵圖進行了逆卷積操作來進行觀察,可以對比發現不同層的收斂速度不同。
3 作者對圖像中的不同部位進行了遮擋來觀察結果受不同部位的影響。

總結
雖然作者用的這個網絡結構比較簡單,但是作者的思路和一些對比試驗對我們的學習都是有指導意義和借鑑意義的。

仍然存在的問題:
1 藉助反捲積我們看到了卷積神經網絡提取到了哪些特徵,但是卻不能完全拿來解釋模型分類的結果;
2 最終的分類結果要通過全連接層對特徵進行加權組合之後得到的,但這裏只分析了卷積層,忽略了全連接層;
3 只展示了深層特徵中什麼信息被保留,但沒有凸顯出這些信息的相對重要性。
因此我們需要繼續閱讀下面的兩篇論文,看這些問題是如何被解決的。

2 Learning Deep Features for Discriminative Localization

論文的主要思想比較簡單,概括來說就是:
1 計算最後一層的每張特徵圖對最終分類結果的影響權重,這個影響權重代表了不同特徵圖,也就是不同識別區域對最終分類結果的重要性;
2 針對預測的類別根據該權重對最後一層特徵圖進行加權求和,得到可視化結果(文中稱爲CAM圖,也就是class activation maps)。這個可視化結果中顯示了原圖中CNN用來判斷類別的具有判別性的區域。
在這裏插入圖片描述
論文的實現細節:
1 如何計算每張特徵圖對最終分類結果的影響權重?
在這裏插入圖片描述
如上圖所示:
1 在最後一層特徵圖後添加一個全局平均池化層(global average pooling),將原本爲w×h×c的特徵圖映射爲了1×c的矩陣。
2 再通過一個全連接層,將這個1×c的矩陣映射爲了1×class num的矩陣,最後通過softmax得到最終的分類概率。

這裏的從GAP層到分類層的權重矩陣就是我們想要得到的每張特徵圖對最終分類結果的影響權重。針對一張圖片,我們首先可以計算出它的分類結果,再根據分類結果所對應的權重矩陣,計算加權特徵圖,就得到了CAM圖。
不同的分類結果我們可以得到不同的CAM圖,比如對下圖我們可以發現當我們針對palace這個類別計算CAM圖時,特徵圖的主要激活就是這個建築物的主體部分,當針對dome這個類別計算CAM圖時,特徵圖的主要激活就是這個建築物的塔頂部分,不同的類別有相應不同的激活部位。
在這裏插入圖片描述
針對模型解釋部分就主要是以上內容了,論文中作者還提出了利用這個方法進行弱監督物體定位,感興趣的可以繼續閱讀。

仍然存在的問題:
論文中提出了一種很好的分析思路,但是卻存在一個很大的問題,就是我們需要通過重新訓練模型來得到全連接層的權重值,這對於已經上線或存在一定訓練成本的模型來說是很不實用的,因此我們需要另外的方法來計算全連接層的權重值。下面這篇論文解決了這個問題。

3 Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

優點
1 使現有的深層模型能夠在不改變其架構的情況下進行解釋,從而避免了可解釋性與準確性之間的平衡;
2 可以應用於任何基於CNN的體系結構;
論文的主要思想
這個論文可以看作是cam的提升版,由於cam在計算全連接層的權重時,需要重新訓練模型,grad-cam針對這個問題提出瞭解決的辦法。
grad-cam提出計算預測類別對最後一層特徵圖上每一個像素的梯度並計算平均,就得到了該類別對該層特徵圖的權重。這個計算得到的結果與cam的結果是等價的,下面是等價性的證明,是一個比較簡單的證明。
在這裏插入圖片描述
在這裏插入圖片描述

文中提出:好的視覺解釋由什麼組成?在圖像分類問題中 ,一個用於證明目標類別的“良好”的視覺解釋應該是由兩部分組成:
(a)即圖像中的類別定位
(b)高分辨率(即捕獲細粒度細節)

Grad-CAM圖可以提供圖中的類別定位,Guided Backprop可以提供較高分辨率的目標細節。因此作者將Guided Backprop的結果與得到的CAM圖點乘,以獲得更精確的視覺效果。下圖是文中提供的一個例子:
最左側是原圖,其中有兩個分類目標,分別是貓和狗。
(b)圖顯示了Guided Backprop的結果,可以看到該圖像對不同的類別沒有區分度,都提供了一個細粒度目標圖像。
(c)圖顯示了Grad-CAM的結果,可以看到針對不同的分類結果給出了不同的定位。
(d)圖顯示了Grad-CAM與Guided Backprop結合後的結果,可以看到圖中不僅提供了定位信息也給出了較細粒度的目標結果。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章