Model Explainability — 以醫學影像使用場景為例

Jeremy Pai
Life’s a Struggle
15 min readApr 27, 2024
Photo by Testalize.me on Unsplash

隨著人類文明的發展與醫學影像技術的進步,醫護人員擁有更好更精密的儀器可以輔助診斷與治療,但同時也因為人口的增長導致有更多的資料需要分析。這時候人工智慧技術就可以派上用場了!目前人工智慧是以深度學習為主流,優點是可以達到精準的預測結果,缺點是模型很難被人所解讀…

這時候問題就來了,有一些領域不是只單純看預測的準確率而已,也需要知道模型是基於什麼原因做出預測的。舉例來說,在醫療領域如果無法跟患者說明為什麼被診斷出疾病,就會有很大的問題。因此模型的可解釋性就很重要了,甚至可以說模型的可解釋性是將人工智慧技術導入臨床的其中一個必要條件。

模型的可解釋性技術其實也發展一段時間了,在深度學習開始廣為使用後,就有一派人士想要更了解模型實際上學習到了什麼以及模型是依據什麼原因做出最後的預測判斷。不過發展過程中其實也有不少的爭論…

「模型的可解釋性與預測表現是無法同時做到的」… 這其實是一個迷思

在底下的討論之前,我想要先破除以上的迷思。這是因為早期有一個論述是具備可解釋性的模型通常準確率也較差,但現在比較常使用的可解釋性方法都是在訓練完後使用的,因此並不會影響模型訓練過程與模型的架構,因此現在這個論述是有問題的。

Outline

Introduction

  • Why do we need to make model explainable?
  • When do we need to implement this technique?
  • How do we implement this technique?

Model Explainability

  • Heatmap / Attribution map / Saliency map
  • Counterfactual explanation
  • Dimensional reduction
  • Prototypical Part Network (ProtoPNet)

Discussion and Summary

底下我會先從三個問題開始討論,包含為什麼要讓模型可以被解釋、什麼時候應該要用這樣子的技術,以及我們可以怎麼運用模型可解釋性的技術。再來會提供幾個可解釋性的技術以供參考,最後則是總結。那我們開始吧~

Introduction

Why do we need to make model explainable?

為什麼要讓模型可以被解釋,以及這個技術是必須的嗎?首先我們可以假想一下正反方的想法…

  • 支持者:當模型可以被解釋,我們就能更了解模型,後續也才會有信心去使用
  • 反對者:模型可不可以被解釋一點都不重要。舉例來說,生活中有多少東西其實我們也不是完全了解,且實際去使用也不會有任何問題,像是手機、電腦等等

類似的辯論其實還有很多,甚至有 conference 直接開一個 session 找專家來辯論。事實上兩邊的論述都有其道理,所以也有看法是說除了特定領域外,其他領域的使用上或許模型能不能被解釋就真的不太重要:

說穿了,當模型可以被解釋,人們確實會更有信心去使用模型,並且相信模型預測的結果是正確的。但這並不是必須,所以就視情況決定要不要這個技術的幫忙吧~

When do we need to implement this technique?

這邊舉三個例子,包含醫療、金融以及法律,這些例子相對強調背後的原因,因此都很需要模型提供預測結果的判斷依據,這時模型的可解釋性技術就很有用了。

在醫療領域上,當模型針對疾病做出診斷時,如果只是單純提供診斷結果,是很難說服別人的。因為當病人詢問原因時,如果醫生只是回答“這是模型告訴我的”,這顯然會出現醫療糾紛 🙂。

在歐洲也已經有法規針對模型的可解釋性作出規範。不只是深度學習,如果要使用演算法輔助醫療作出決策時,就必須要讓該演算法夠透明,讓我們夠清楚了解演算法本身。換句話說,就是模型的預測結果可以被解釋,到時才能真正投入臨床使用 [1]。

同樣牽涉到較為敏感的金融與法律時也會有類似的狀況,像是使用模型來評估貸款資格,或者是讓模型評估犯人能不能假釋。

How do we implement this technique?

那我們可以怎麼運用模型可解釋性的技術?

最簡單的方法是直接使用能直觀了解的模型,但一般能直觀了解的模型能力會比較弱,所以目前研究重點都是放在如何解釋能力較強的模型。

解釋性的技術大致可以分成兩個區塊,一個是 Local explanation,另一個是 Global explanation:

  • Local explanation: 一次只針對一張影像做出解釋,例如為什麼這張影像有貓
  • Global explanation: 針對類別直接做出全局的解釋,例如貓長什麼樣子

目前發展以 Local explanation 為主流,所以底下介紹的方法也只會有 Local explanation。

* Activation Maximization 是 Global explanation 的其中一種方法,有興趣的可以自行了解~

Model Explainability

Heatmap / Attribution map / Saliency map

首先是目前最常用的 heatmap,好處在於我們可以很容易地從 heatmap 知道哪些影像區域對於模型預測結果來說是重要的判斷依據。這邊提供兩種產生 heatmap 的方式:

1. Gradient-based methods:

可視化 breast cancer 影像 [2]

Gradient-based 的想法是我們對輸入資料 (ex. pixel) 加入擾動,看這個擾動對於輸出的影響,我們就可以得知該資料對於輸出結果來說是不是重要的。如果是重要的可以想像會因為一個很小的擾動使得輸出結果發生很大的變化,事實上這個過程就是計算一個 gradient。

Gradient-based 的方法有很多不過原理都一樣,只是後續處理方式以及一些前提條件不同而會有不同的結果呈現。

2. Trainable attention:

運用注意力機制架構可視化 3D CT abdominal datasets [3]

另一個方法是透過將可訓練的注意力機制架構加入模型中,當我們訓練完模型後也就得到注意力機制的權重。這些權重就能直接當成 heatmap 來得知模型關注的區域。

雖然 heatmap 很好用但也有缺點,像是只能凸顯出重要區域卻不能得知各個區域對於預測的貢獻程度。而且當 heatmap 呈現出很分散的結果時,我們也無法確認哪個區域可能是當中最重要的特徵。另一個缺點是可能會碰到 Gradient saturation 的問題使得解釋效果不佳。

* 根據 paper 描述有一些 Gradient-based method 可以解決這個問題,例如 Integrated gradient 與 DeepLIFT

Counterfactual explanation

這個可解釋性的技術是直接對輸入資料做修改,例如我們每次都只遮住影像中的一小塊區域,看會不會對預測結果造成影響。

舉例來說,我們要預測底下這張影像中是否有哈士奇的話,如果是遮住灰色方塊這個區域,可以想像並不會對預測結果造成影響…

Image by fffffffffffffffffff gdafad from Pixabay

但如果把灰色方塊移到哈士奇的臉上,大概就會影響預測結果。因此我們可以運用這個想法確認影像中的哪些區域對於預測結果來說是重要的。

Image by fffffffffffffffffff gdafad from Pixabay

實作上我們會透過施加盡量小的擾動,看哪個區域施加的小擾動對於預測結果會造成最大的影響,這邊提供兩個例子:

1. GAN — styleGAN

透過影響 latent code 可視化 Metastatic Lymph Nodes [4]

這篇 paper 訓練一個 styleGAN 學習特徵,再訓練一個分類器來預測該影像中是否有腫瘤。他們的實驗是透過對 latent code 施加很小的擾動看預測結果會如何變化,如果預測結果變得不一樣了,我們就能得知小擾動影響到的特徵就是較為重要的特徵。

2. Generative Visual Rationale (GVR)

透過 GVR 找出疾病影響區域,藉此可視化 Congestive Heart Failure (CHF) [5]

這篇 paper 跟 styleGAN 那篇的方法很像,只是是訓練一個 autoencoder,一樣把 latent code 取出來並訓練一個分類器。再來也是對 latent code 動手腳,直到把原來預測為有疾病的影像變成預測為正常的影像,這時候我們就能把亂動過的 latent code 視為正常影像的 latent code。

再來把這兩個對應有疾病影像的 latent code 與正常影像的 latent code 通過 generation model 生成出有疾病的影像與正常的影像,最後把兩張影像直接相減,就能知道影像中的哪些部分是代表有疾病的區域。這篇 paper 最後是有把 GVR 去跟醫學上已知與心臟衰竭相關的 biomarker 去作比較,發現結果是一致的。

GVR 相較於 heatmap 有個優勢是如果我們預期影像當中的特徵分布很廣時,GVR 會比 heatmap 來的有解釋性。

Dimensional reduction (ex. CNN + t-SNE)

降維看群體區分狀況可視化 brain tumor 分類結果 [6]

降維這項技術在其他機器學習的任務也很常用,方法也有很多種。當中我比較常用的是 PCA、t-SNE 與 UMAP。通常我們會選擇輸出層的前一層以及 latent code 去做降維,但其實對任何一層去做降維也是可以的,就看使用者如何解釋降維後的結果。

一般我們會透過降維把高維度的特徵投影到二維平面去看區分狀況,但缺點是我們依舊無法得知模型學習到的特徵是代表什麼,只能去觀察這些高維特徵能不能對輸入資料作出正確的區分。

Prototypical Part Network (ProtoPNet)

人眼尋找特徵的過程,這邊的特徵也就是 paper 所提的 Prototypes
ProtoPNet [7]

最後介紹的技術比較特別,這篇 paper 直接設計出可解釋的模型。想法則是受日常生活經驗所啟發:我們會如何識別出眼前景象的物體呢?

以 paper 的鳥圖片為例,我們會透過尋找當中的特徵,像是鳥的形狀、翅膀、顏色之類的資訊來判斷這是隻鳥,也就是透過尋找鳥的特徵來判斷。這個也就是這邊 prototypes 的意思,所以 paper 提出了 ProtoPNet 這個模型。

首先要定義出各個類別具代表性的 prototypes,再訓練模型去學習這些 prototypes,最後把 prototypes 得到的資訊作組合輸出預測結果,也因為有這層 prototype layer 的關係使得模型天生就能被解釋。

這樣的設計也存在著問題,例如 prototype layer 不容易訓練、可能無法找出有意義的特徵、容易受到雜訊影響以及 latent code 並不一定都能被解釋。但可能最大的問題是需要事先定義出哪些 prototypes..

Discussion and Summary

最後做個總結,讓模型可解釋性的技術的確好用,能幫助我們了解模型本身以及模型預測結果的判斷依據,但是目前也有一些問題需要注意:

  • 目前無法知道哪些任務適合用哪一個可解釋性的技術,因為解釋的結果是很主觀的
  • 雖然 heatmap 可以知道模型是依據影像中的哪些區域做出預測的,但我們無法得知這些區域他們各自的貢獻程度實際上有多少
  • 事實上模型很容易被玩壞,基本上在碰到雜訊時,都需要小心評估可解釋性技術輸出的結果

底下提供一個實驗結果,上方是原始影像而下方是施加雜訊的影像,可以發現兩張看起來完全一樣的影像在 heatmap 的呈現上卻有這麼大的不同。這就是在使用可解釋性技術時需要小心的原因,我們可能會需要多張影像一起評估才能真正找到模型的判斷依據。

影像看起來完全一樣,但對應的 heatmap 卻差距很大,這是使用 heatmap 解釋結果時需要注意的地方 [8]

底下這張圖是之前看到覺得有趣的影像,看起來就存心在搞模型。但如果搭配上可解釋性技術的話,或許我們就能發現各個狗的動作所對應的關注區域會出現在不同位置。

How to confuse a computer vision algorithm (Image by Ralph Aboujaoude Diaz from LinkedIn)

如果能透過解釋性方法讓我們了解模型實際上學習到了什麼,也能方便我們事後作定性或定量的分析。以醫療領域為例,也許可以因此發現到新的 biomarker 來作疾病的診斷,也能因定性定量分析使得模型導入臨床變得可行。

而且因為我們知道很容易就可以玩壞模型,所以對現階段的解釋性技術來說可能會需要搭配多項技術一起評估,看能不能觀察出一個趨勢確認模型是真的有學習到有用的特徵。

Reference

[1] Temme, Merle. “Algorithms and transparency in view of the new general data protection regulation.” Eur. Data Prot. L. Rev. 3 (2017): 473.

[2] Salahuddin, Zohaib, et al. “Transparency of deep neural networks for medical image analysis: A review of interpretability methods.” Computers in biology and medicine 140 (2022): 105111.

[3] Schlemper, Jo, et al. “Attention gated networks: Learning to leverage salient regions in medical images.” Medical image analysis 53 (2019): 197–207.

[4] Schutte, Kathryn, et al. “Using stylegan for visual interpretability of deep learning models on medical images.” arXiv preprint arXiv:2101.07563 (2021).

[5] Seah, Jarrel CY, et al. “Chest radiographs in congestive heart failure: visualizing neural network learning.” Radiology 290.2 (2019): 514–522.

[6] Faust, Kevin, et al. “Visualizing histopathologic deep learning classification and anomaly detection using nonlinear feature space dimensionality reduction.” BMC bioinformatics 19.1 (2018): 1–15.

[7] Chen, Chaofan, et al. “This looks like that: deep learning for interpretable image recognition.” Advances in neural information processing systems 32 (2019).

[8] Ghorbani, Amirata, Abubakar Abid, and James Zou. “Interpretation of neural networks is fragile.” Proceedings of the AAAI conference on artificial intelligence. Vol. 33. №01. 2019.

--

--

Jeremy Pai
Life’s a Struggle

機器視覺演算法工程師~不限主題隨心寫下自己想寫的事物