誰說鼻子長的就是大象?從類別活化映射與積分梯度來看特徵提取與顯著性差異

by omnixri

2020-09-28 18:05:37498 瀏覽次數


圖/文 歐尼克斯實境互動工作室 許哲豪 2020/9/24


在先前兩篇「如何利用可視化工具揭開神經網路背後的祕密」上篇[1]及下篇[2]中已初步介紹如何將卷積神經網路(Convolutional Neural Network, CNN)推論結果可視化及其基本原理。這一次就來聊聊經過可視化處理產生的顯著圖(Saliency Map)或稱熱力圖(Heat Map)活化圖(Activation Map)究竟是否為人類真正關心的特徵(Features),或者說這些計算出來較為顯著(重要)的地方是否可以幫助我們解釋模型究竟學會了什麼?


在卷積神經網路可視化工具中,較常見的方式有基於擾動法(Perturbation-based)反向傳播法(Propagation-based)活化映射法(Activation-based),而其中後兩者最主要皆有用到梯度(Gradient)這項基本概念,即希望找出輸入內容造成輸出變化較大的地方,換句話說就是模型權重值影響最大的地方,也是最重要的或特徵所在的地方。


但不幸地是,目前梯度法仍有許多使用上的限制及不足,而可視化所提取出的顯著圖也能未必能完全代表人類視覺上所期望的特徵,因此接下來就分別從「何謂梯度」「梯度飽和」「積分梯度」「遮罩優化」等四個面向來討論如何改善及使顯著圖和視覺特徵上能更佳接近。


何謂梯度(Gradient)


在台大李宏毅老師分享的Youtube教學影片「可解釋的機器學習(2/8)」[3]中舉了一個簡單的例子。如Fig. 1所示,假設大象的鼻子長度為辨識大象的重要特徵,則利 用計算梯度就可用來表示鼻子在不同長度的影響力。如Fig. 1右上角Eq.1所示,輸入x(鼻長)乘上一組向量W(權重值)加上偏置量b即可得到輸出y(為大象機率),反之對輸出y求x偏微分即可得到對應梯度W。不過此時會出現一個怪現象,如Fig. 1鼻子長度和分類為大象機率圖所示,當鼻子長度小於1.0米時,可求得梯度不為0,但當鼻子長度接近或大於1.0米時,則是判定為大象的機率已接近百分之百(1.0),此時不管鼻長再加長,是大象的機率也不會再高了,如此就會造成計算出的梯度反而變為0(梯度飽和)的現象產生。換句話說,就是這項參數沒有任何影響力,這明顯和人的認知不同。那要如何解決這項梯度飽和問題呢?我們接著往下看。


Fig. 1 鼻子長度與大象分類機率變化圖與梯度及特徵重要性公式。(OmniXRI Sep. 2020整理繪製)


類別活化映射(CAM)與梯度矩陣


如上一篇可視化工具[2]介紹,我們可得知卷積神經網路最常見的可視化方法「類別活化映射(Class Activation Mapping, CAM)[4]」就是把最後的全連結層(Full-Connection Layer)拆掉,改用全域平均池化(Global Average Pooling, GAP)替代,再分別求出W(權重)矩陣乘上最後的卷積層即可得到各輸出類別反應較強的區域,如Fig. 2所示。而這裡的W矩陣即為對輸出求偏微分而得的梯度矩陣。


而其它幾種可視化工具亦有使用到梯度,如加權類別活化映射(Gradient-weighted CAM, Grad-CAM),梯度加權類別活化映射改良版(Gradient-weighted CAM++, Grad-CAM++)等,這些方法原理都大致類似,只是最後求梯度的內容稍有不同,可參考上一篇可視化工具[2]介紹。


Fig. 2 類別活化映射(CAM)網路結構及加權計算方式。[4]


積分梯度(IG)與梯度飽和


如同前面Fig. 1鼻長例子,若單純求梯度都會遇到因梯度飽和導致無法呈現重要特徵的問題,所以像CAM, Grad-CAM, Grad-CAM++或類似的技術也都會有這個問題產生。因此Mukund Sundararajan等人提出了積分梯度(Integrated Gradients, IG)[5]來解決這項問題,不直接以梯度當作特徵重要性,而是將所有梯度積分(加總)起來,再其來表示重要性,如此就不會有梯度為0(飽和)的問題產生。如Fig.1 Eq. 2所示,若想得知2米鼻子長度的特徵重要性,就把0到2米的梯度值都積分起來即可。


但是這樣的方式還是有個問題,那1.0米時的重要性為何?其它長度的重要性又為何呢?此時可換個表達方式,並把它擴展到多維內容,如Fig. 3 Eq. 3所示,設置一個基線(Base Line) x’和一個常數值α,而x’ +α(x – x’)則可視為求線性內插的公式。當α= 0時,輸入值即為基線值,當α= 1時,即為當前值x。而這個積分路線亦可不是線性,而採其它變分路徑。故Eq. 3的(x – x’)即可看成當前值到基線值的差值,將其乘上所有積分結果,即為第i項的特徵重要性(強度)。而基線值通常使用全部為0內容(或全黑圖像)即可,另外作者給出四種基線建議,如最大距離圖片、光滑模糊圖片、均勻隨機圖片及高斯隨機圖片,至於何者為最優解則作者沒有給出結論,視不同應用而有不同結果。


如Fig. 3所示,第一(最左)行為原始圖像,第二行為辨識出的標籤及可信度(分數),而第三行則為經積分梯度的結果影像,而第四(最右)行則為一般梯度計算結果,很明顯可看出其差異。[5]論文中還有更多測試結果影像,可自行參考。如想自行測試更多不同效果,可參考TensorFlow官網提供的相關範例[6]。


Fig. 3積分梯度公式及測試結果。[5] (OmniXRI Sep. 2020整理繪製)


積分梯度優化顯著性(I-GOS)與遮罩優化


在前面「積分梯度」雖然已改善單純梯度計算產生的飽和問題,但仍有學者質疑其計算出的熱(顯著)區是否真的經得起驗證,於是Zhongang Qi等人提出加入擾動法的刪減(Deletion)及插入(Insertion)來協助驗證,並藉此來優化產生遮罩圖(Mask),稱之為積分梯度優化顯著性(Integrated-Gradients Optimized Saliency, I-GOS)[7]。


積分梯度優化顯著性(I-GOS)的思路很簡單,就是把產生的熱力圖(Heatmap)最顯著區域刪去一定比例使其有最低的辨識率,表示確實有刪到最重要的區域。或者只插入(保留)部份比例最顯著區內容,使其有最高的辨識率,表示確實保留到最重要的區域。而整個過程利用積分梯度產生的結果圖進行全局最優解來得到最理想的遮罩圖,如此即可得到關連性較高的生熱力圖(或稱顯著圖Saliency Map)。


如Fig. 4所示,第一(最左)行為原始影像加上熱力圖(Heatmap)結果,第二行為單純熱力圖,第三行為刪除(Deletion)6.4%最顯著區域最高數值內容後的影像及辨識率,而第四(最右)行則為只插入(Insertion)最顯著區域最高數值6.4%內容後的影像及辨識率。


由實驗結果來看,原先在未破壞影像前,其原始分類預測機率(正確率)為100%,但第一列積分梯度在經過刪除顯著區最高6.4%後正確率仍有11.4%,而只插入顯著區最高6.4%內容後則完全無法辨識正確為0%,表示顯著區內容和分類正確率幾乎沒有關連。而第二列的一般遮罩區(Mask),經刪除後還有90.6%的正確率,插入後僅有2.4%正確率,說明所謂的熱區和正確率根本無關。反觀經I-GOS方法處理後的三列內容,刪除後正確率僅剩6.3%,而插入後正確率高達97.2%,表示這些刪除或插入的內容和分類結果有顯著關連性。如想自行測試更多不同效果,可參考作者提供的Github相關程式及範例[8]。


Fig. 4 積分梯度優化顯著性(I-GOS)實驗結果比較圖。[7]


小結


目前卷積神經網路推論結果的可視化工具已越來越普及,對於訓練後的模型(網路權重值)究竟學到什麼,透過本文所說明的數學方式也讓其結果稍微有跡可尋。雖然這些工具多半還無法完全理解或呈現所學習的過程及特徵提取的原理,但至少透過最後產出的熱力(顯著)圖勉強能一窺究竟。現階段仍有許多學者正在努力實現「可解釋的人工智慧(Explainable Atificial Intelligence, XAI)」,企圖打開這個神祕的黑箱,就讓我們再多耐心等候一下吧。


*本文同步發行於歐尼克斯實境互動工作室部落格(https://omnixri.blogspot.com)及AI HUB(https://aihub.org.tw),歡迎連結至AI HUB網站【社群互動】下【AI技術交流區(https://platform.aihub.com.tw/specialist)】瀏覽更多精采文章*


參考文獻


[1] 許哲豪,”如何利用可視化工具揭開神經網路背後的祕密(上)” https://aihub.org.tw/platform/specialist/article/93c294a8-ebc1-11ea-ab40-0242ac120002


[2] 許哲豪,”如何利用可視化工具揭開神經網路背後的祕密(下)” https://aihub.org.tw/platform/specialist/article/3192f428-f371-11ea-8915-0242ac120002


[3] 李宏毅,Youtube, Explainable ML (2/8) (10:40) https://youtu.be/pNpk6DPYUh8


[4] Zhou, Bolei, et al. "Learning deep features for discriminative localization." (CAM) http://cnnlocalization.csail.mit.edu/Zhou_Learning_Deep_Features_CVPR_2016_paper.pdf


[5] Mukund Sundararajan, et al. "Axiomatic attribution for deep networks" (IG) https://arxiv.org/abs/1703.01365


[6] TensorFlow, Integrated Gradients Course https://www.tensorflow.org/tutorials/interpretability/integrated_gradients


[7] Zhongang Qi, et al. "Visualizing Deep Networks by Optimizing with Integrated Gradients" (IGOS) https://arxiv.org/abs/1905.00954


[8] Zhonggang Qi, Github, Integrated-Gradients Optimized Saliency (I-GOS) https://github.com/zhongangqi/IGOS