[ML]Explainable ML介紹(CAM、Grad-CAM)

Posted by John on 2019-07-03
Words 1k and Reading Time 3 Minutes
Viewed Times

簡介

前陣子花了一點時間在看李宏毅老師的Explainable ML的部分,裡面有講到explainable ML的部分主要可以分成:

  • global explanation(Ex: 機器覺得一隻貓”長什麼樣子”)
  • local explanation(Ex: 機器是”看到了什麼”而覺得這是一隻貓)

而在local explanation的技術中有CAM、Grad-CAM、Grad-CAM++,這篇文章會簡單介紹這三個技術(因為這是一系列的)(好啦只有兩個,最後一個我沒看)

下一篇會逐步介紹grad-cam的pytorch程式碼是怎麼寫出來的(參考一篇github的source code)。

什麼是NIN?

(更新: 關於NIN可以參考我新出的文章: [論文速速讀]Network In Network)
不是說好從CAM開始介紹嗎?怎麼又跑出了一個NIN,搞毛啊?

讓我娓娓道來,首先,講到CAM的核心技術就不能不提到NIN(Network in Network),在NIN這篇論文章中提出了GAP(Global Average Pooling)的想法。

這想法特牛逼啊,想想看在以往的時候CNN最後必須要接上Fully connected layer,礙於neuron數量必須事先指定,所以CNN模型的input size也被固定住了。但是透過GAP,我可以不用去顧慮最後一層的shape長什麼樣子而直接去接FC。

Ex: Conv層結束後的shape是(7, 7, 64)->透過GAP後每一個kernel只會有一個value,所以最後的shape會是(1, 64)去接FC(也就是管你Conv最後的shape是7x7還是128x128還是什麼的,都會變成1)。

也就是說,有了GAP就再也不用限定input size一定要是多大。此外,GAP也可以增加model的robustness。

什麼是CAM?

CAM,全名class activation map,不過這不是他的論文名稱,有興趣請去看2016的CVPR《Learning Deep Features for Discriminative Localization》。

講完GAP就可以來講CAM了,那咱們就好奇啦,最後一層的Conv完後,model到底是根據了什麼去做了classifiy呢?我們知道Conv是用來取出圖片的特徵,所以最後一層Conv出來的feature map應該會包含最多的資訊,那有沒有辦法去看對於某一個類別,到底是哪些重要的feature map導致了model將該圖片分類至該類別呢?

CAM的想法就是透過GAP,我把最後一層Conv接上GAP後再接FC,這樣最後一層的每個feature map就可以用FC layer的一個neuron來代表,那就可以把FC的權重就可以想成是對於預測某個類別,每一個feature map的重要性。

v2-02cffea9152847e7aea65a3d60e72986_hd

這樣做之後,只要跑一次forward取得最後一層Conv的feature map,將feature map乘上對應的權重然後reshape成原本圖形的大小,就可以用類似熱力圖的形式呈現出來了。

什麼是Grad-CAM?

好,看過CAM我們知道我們需要兩個東西:最後一層的feature map和對應的權重。

CAM有一個缺點,就是模型的架構最後一定要接GAP,不是這個架構的model就不能這樣做(Ex: VGG),因為得不出每張feature map的權重(對於feature map還是可以拿得到的)。

所以Grad-CAM就誕生了,我們可以不用GAP,而是透過back propagation去計算對於某一個類別,最後一層feature map上每個pixel的權重,然後對這些pixel算一個加權平均就可以得出該feature map的權重。

聽說(?)經過嚴格的推倒,CAM和Grad_CAM實際上是等價的。 公式如下,小心服用: v2-d5277f8d3bbdd715f0754a0c35e0ec46_hd v2-a0f902e9524aaf247a8f6ecac1791c7e_hd [Grad-CAM++?] 顧名思義,他就是Grad_CAM的進階版,好,結束。 好啦自首,這個我沒有仔細讀QQ,所以鞭小力一點… 看懂Grad_CAM++就知道,其實還是透過每個pixel做加權平均得到每張feature map的權重,不過如果不做平均的話呢?就是直接針對每個pixel去看他的影響程度…是這樣嗎…..可能吧(?) 放棄…有興趣還請去看論文或其他人的介紹吧xD

Reference


>