一文詳解什麼是可解釋AI

摘要:本文帶來什麼是可解釋AI,如何使用可解釋AI能力來更好理解圖片分類模型的預測結果,獲取做爲分類預測依據的關鍵特徵區域,從而判斷獲得分類結果的合理性和正確性,加速模型調優。

1. 爲何須要可解釋AI?

在人類歷史上,技術進步、生產關係邏輯、倫理法規的發展是動態演進的。當一種新的技術在實驗室得到突破後,其引起的價值產生方式的變化會依次對商品形態、生產關係等帶來衝擊,而同時當新技術帶來的價值提高獲得承認後,商業邏輯的組織形態在自發的調整過程當中,也會對技術發展的路徑、內容甚至速度提出訴求,並當訴求獲得知足時適配以新型的倫理法規。在這樣的相互做用中,技術系統與社會體系會共振完成演進,是謂技術革命。html

近10年來,籍由算力與數據規模的性價比突破臨界點,以深度神經網絡爲表明的聯結主義模型架構及統計學習範式(之後簡稱深度學習)在特徵表徵能力上取得了跨越級別的突破,大大推進了人工智能的發展,在不少場景中達到使人難以置信的效果。好比:人臉識別準確率達到97%以上;谷歌智能語音助手回答正確率,在2019年的測試中達到92.9%。在這些典型場景下,深度學習在智能表現上的性能已經超過了普通人類(甚至專家),從而到了撬動技術更替的臨界點。在過去幾年間,在某些商業邏輯對技術友好或者倫理法規暫時稀缺的領域,如安防、實時調度、流程優化、競技博弈、信息流分發等,人工智能(暨深度學習)取得了技術和商業上快速突破。python

食髓知味,技術發展的甜頭天然每一個領域都不肯放過。而當對深度學習商業化運用來到某些對技術敏感、與人的生存或安全關係緊密的領域,如自動駕駛、金融、醫療和司法等高風險應用場景時,原有的商業邏輯在進行技術更替的過程當中就會遇到阻力,從而致使商業化(及變現)速度的減緩甚至失敗。究其緣由,以上場景的商業邏輯及背後倫理法規的中樞之一是穩定的、可追蹤的責任明晰與分發;而深度學習獲得的模型是個黑盒,沒法從模型的結構或權重中獲取模型行爲的任何信息,從而使這些場景下責任追蹤和分發的中樞沒法複用,致使人工智能在業務應用中遇到技術和結構上的困難。git

舉2個具體的例子:github

  1. 在金融風控場景,經過深度學習模型識別出來小部分用戶有欺詐嫌疑,可是業務部門不敢直接使用這個結果進行處理,由於難以理解結果是如何獲得的,從而沒法判斷結果是否準確,擔憂處理錯誤;並且缺少明確的依據,若是處理了,也沒法向監管機構交代;
  2. 例2,在醫療領域,深度學習模型根據患者的檢測數據,判斷患者有肺結核,可是醫生不知道診斷結果是怎麼來的,不敢直接採用,而是根據本身的經驗,仔細查看相關檢測數據,而後給出本身的判斷。從這2個例子能夠看出,黑盒模型嚴重影響模型在實際場景的應用和推廣。

要解決模型的這些問題,就須要打開黑盒模型,透明化模型構建過程和推理機理。那麼可解釋AI是實現模型透明化的有效技術。算法

2. 什麼是可解釋AI?

可解釋AI (eXplainable AI(XAI)),不管是學術界仍是工業界都沒有一個統一的定義。這裏列舉3種典型定義,供你們參考討論:安全

①可解釋性就是但願尋求對模型工做機理的直接理解,打破人工智能的黑盒子。網絡

②可解釋AI是爲AI算法所作出的決策提供人類可讀的以及可理解的解釋。架構

③可解釋的AI是確保人類能夠輕鬆理解和信任人工智能代理作出的決策的一組方法。app

可見,關注點在於對模型的理解,黑盒模型白盒化以及模型的可信任。框架

MindSpore團隊根據自身的實踐經驗和理解,將可解釋AI定義爲:一套面向機器學習(主要是深度神經網絡)的技術合集,包括可視化、數據挖掘、邏輯推理、知識圖譜等,目的是經過此技術合集,使深度神經網絡呈現必定的可理解性,以知足相關使用者對模型及應用服務產生的信息訴求(如因果或背景信息),從而爲使用者對人工智能服務創建認知層面的信任。

3. 可解釋AI解決什麼問題?

按DARPA(美國國防部先進研究項目局)的說法,可解釋AI的目的,就是要解決用戶面對模型黑盒遇到問題,從而實現:

①用戶知道AI系統爲何這樣作,也知道AI系統爲何不這樣作。

②用戶知道AI系統何時能夠成功,也知道AI系統何時失敗。

③用戶知道何時能夠信任AI系統。

④用戶知道AI系統爲何作錯了。

MindSpore實現的可解釋AI計劃主要解決以下兩類問題:

①解決深度學習機制下技術細節不透明的問題,使得開發者能夠經過XAI工具對開發流程中的細節信息進行獲取,並經過獲取到的可理解信息,幫助開發者進行模型故障排除或性能提高;

②提供深度學習技術與服務對象的友好的認知接口(cognitive-friendly interface),經過該接口,基於深度學習的服務提供者能夠有合適工具對深度學習服務進行商業化邏輯的操做,基於深度學習的人工智能服務的消費者能夠得到必要的釋疑並創建信任,也能夠爲AI系統的審覈提供能力支持。

4. 實現可解釋AI的方法

從前面的介紹,你們能夠感受到可解釋AI很高大上,那麼具體如何實現呢?結合業界的研究成果,咱們認爲實現可解釋AI主要有3類方法:

第一類是基於數據的可解釋性,一般稱爲深度模型解釋,是最容易想到的一種方法,也是不少論文裏面常常涉及的一類技術;主要是基於數據分析和可視化技術,實現深度模型可視化,直觀展現獲得模型結果的關鍵依據。

第二類是基於模型的可解釋性,這類方法也稱爲可解釋模型方法,主要是經過構建可解釋的模型,使得模型自己具備可解釋性,在輸出結果的同時也輸出獲得該結果的緣由。

第三類是基於結果的可解釋性,此類方法又稱爲模型概括方法,思路是將已有模型做爲一個黑盒,根據給定的一批輸入和對應的輸出,結合觀察到模型的行爲,推斷出產生相應的結果的緣由,這類方法的好處是徹底與模型無關,什麼模型均可以用。

5. MindSpore1.1版本的可解釋AI能力

MindSpore1.1開源版本,在MindInsight部件中集成了的可解釋AI能力:顯著圖可視化(Saliency Map Visualization),也稱爲關鍵特徵區域可視化。這部分歸屬於第一類基於數據的可解釋性方法,後續咱們將陸續開源更多的解釋方法,除了第一類,還將包括第二類基於模型的可解釋方法和第三類基於結果的可解釋方法。

當前顯著圖可視化主要是CV領域的模型解釋,在1.1版本中,咱們支持6種顯著圖可視化解釋方法:Gradient、Deconvolution、GuidedBackprop、GradCAM、RISE、Occlusion。

其中:Gradient、Deconvolution,、GuidedBackprop和GradCAM等4種方法屬於基於梯度的解釋方法。這種類型的解釋方法,主要利用模型的梯度計算,來突顯關鍵特徵,效率比較高,下面簡要介紹下這4種方法:

  • Gradient,是最簡單直接的解釋方法,經過計算輸出對輸入的梯度,獲得輸入對最終輸出的「貢獻」值;而Deconvolution和GuidedBackprop是對Gradient的延展和優化;
  • Deconvolution,對原網絡中ReLU進行了修改使其成爲梯度的ReLU,從而過濾負向梯度,僅關注對輸出起到正向貢獻的特徵;
  • GuidedBackprop,是在原網絡ReLU基礎上對負梯度過濾,僅關注對輸出起到正向貢獻的且激活了的特徵,可以減小顯著圖噪音;
  • GradCAM,針對中間激活層計算類別權重,生成對類別敏感的顯著圖,能夠獲得類別相關的解釋。

另外2種方法:Occlusion和RISE,則屬於基於擾動的解釋方法,該類型方法的好處是,僅需利用模型的輸入和輸出,能夠作到模型無關,具體說明下:

  • RISE,使用蒙特卡洛方法,對隨機掩碼進行加權(權重爲遮掩後的模型的輸出)平均獲得最終顯著圖;
  • Occlusion,經過遮掩特定位置的輸入,計算模型輸出的改變量來獲得該位置的「貢獻」,遍歷所有輸入,獲得顯著圖。

那麼對於具體場景,該如何選擇合適的解釋方法來解釋對應的模型呢?

爲了知足這個訴求,MindSpore1.1版本提供了可解釋AI的度量框架,同時還提供了4種度量方法:Faithfulness、Localization、Class sensitivity、Robustness,針對不一樣解釋方法的解釋效果進行度量,幫助開發者或用戶選擇最合適的解釋方法。簡單描述下這4種度量方法:

  • Faithfulness,可信度。按照重要度從大到小移除特徵,並記錄特定標籤機率的減小量。遍歷全部特徵以後,比較置信度減小量的分佈和特徵重要性的分佈類似性。與黑盒模型越契合的解釋,兩個分佈狀況應當越類似,該解釋方法具備更好的可信度。
  • Localization,定位性。基於顯著圖的解釋具備目標定位的能力(即給定感興趣的標籤,顯著圖高亮圖片中與標籤相關的部分),localization藉助目標檢測數據集,對於同一圖片同一個標籤,經過顯著圖高亮部分和Ground Truth的重合度,來度量顯著圖的定位能力。
  • Class sensitivity,分類敏感度,不一樣分類對應的圖中的對象的顯著圖高亮部分應該明顯不一樣。將機率最大和最小標籤的顯著圖進行比較,若是兩個標籤的顯著圖差別越大,解釋方法的分類敏感度越好。
  • Robustness,健壯性。該指標反映解釋方法在局部範圍的抗擾動能力,Lipschitz值越小,解釋收擾動影響越小,健壯性越強。

下面結合MindSpore1.1版本中已支持的顯著圖可視方法的其中3種解釋方法:Gradient 、GradCAM和RISE,介紹如何使用可解釋AI能力來更好理解圖片分類模型的預測結果,獲取做爲分類預測依據的關鍵特徵區域,從而判斷獲得分類結果的合理性和正確性,加速模型調優。

六、常見顯著圖可視解釋方法介紹

6.1 Gradient解釋方法

Gradient,是最簡單直接的基於梯度的解釋方法,經過計算輸出對輸入的梯度,獲得輸入對最終輸出的「貢獻」值,用於解釋預測結果的關鍵特徵依據。

對深度神經網絡,這個梯度計算可經過後向傳播算法得到,以下圖所示:

SourceUnderstanding models via visualizations and attribution

注:Gradient解釋方法會遇到梯度飽和問題,即某個特徵的貢獻一旦達到飽和後,因爲該特徵再也不對結果的變化產生影響,會致使該特徵的梯度爲0而出錯。

Gradient解釋效果以下圖所示:

注:全部解釋效果圖片均來源於MindInsight截圖

從上面2張圖中能夠看出,Gradient的解釋結果可理解性較差,顯著圖高亮區域成散點狀,沒有清晰明確的特徵區域定位,很難從中獲取到預測結果的具體特徵依據。

6.2 GradCAM解釋方法

GradCAM,是Gradient-weighted Class Activation Mapping的簡寫,通常翻譯爲:加權梯度的類激活映射,是一種基於梯度的解釋方法;該解釋方法經過對某一層網絡各通道激活圖進行加權(權重由梯度計算獲得),獲得影響預測分類結果的關鍵特徵區域。

GradCAM解釋結果過程的概覽,以下圖:

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

這裏給出2個實際的例子,來看看GradCAM具體的解釋效果:

能夠看到GradCAM的解釋結果定位性和可理解性比較好,高亮區域集中在具體的特徵上,用戶能夠經過高亮區域判斷出和預測結果相關的特徵。對於標籤「路牌」,圖像中的路牌被高亮,對於標籤「飛機」,圖像中的飛機被高亮,即GradCAM認爲路牌區域和飛機區域是2個分類結果的主要依據。

6.3 RISE解釋方法

RISE,是Randomized Input Sampling for Explanation的簡寫,即基於隨機輸入採樣的解釋,是一種基於擾動的解釋,與模型無關;主要原理:使用蒙特卡洛採樣產生多個掩碼,而後對隨機掩碼進行加權(權重爲遮掩後的模型的輸出)平均獲得最終顯著圖。

RISE方法解釋過程的概覽圖,以下:

SourceRISE: Randomized Input Sampling for Explanation of Black-box Models

一樣給出2個示例,展現下解釋效果:

RISE採用遮掩的方法獲得與分類結果相關的特徵區域,解釋結果的可理解性和定位性不錯,和GradCAM相似,RISE準確地高亮了路牌區域和飛機區域。

七、MindSpore解釋方法如何解釋圖片分類模型?

在實際應用中,上面介紹的3種解釋方法的解釋效果如何呢?根據預測結果和解釋的有效性,咱們將解釋結果分爲3類,並分別找幾個典型的例子來看看實際的效果。

說明:下面全部示例圖中的解釋結果,都是MindSpore的MindInsight部件中的模型解釋特性展示出來的。

7.1 預測結果正確,依據的關鍵特徵合理的例子

例7.1.1:上圖預測標籤是「bird」,右邊給出依據的關鍵特徵在鳥身上,說明這個分類判斷依據是合理的。

例7.1.2:上圖預測標籤是「bicycle」,右邊解釋的時候,將自行車車輪高亮,這個關鍵特徵一樣較爲合理。

7.2 預測結果正確,但給出的關鍵特徵依據多是錯誤的例子

例7.2.1:原圖中,有人,在預測標籤中有1個標籤是「person」,這個結果是對的;可是選擇「person」標籤,在查看右邊解釋的時候,能夠看到高亮區域在馬頭上,那麼這個關鍵特徵依據極可能是錯誤的。

例7.2.2:原圖中,有一隻鳥,預測結果「bird」是對的,可是右邊解釋的時候,高亮區域在樹枝和樹葉上,而不是鳥的身上,這個依據也極可能是錯的。

例7.2.3:上圖中,有1艘小艇,有個標籤是「boat」,這個沒錯。不過在右邊針對標籤「boat」的解釋,高亮區域卻在人身上,這個誤差有點大。

仔細分析上面的3個例子,這種高亮標識出來做爲分類依據的關鍵特徵,出現錯誤的狀況,通常出如今圖像中存在多目標的場景中。根據調優經驗,每每是由於在訓練過程當中,這些特徵常常與目標對象共同出現,致使模型在學習過程當中,錯誤將這些特徵識別爲關鍵特徵。

7.3 預測結果錯誤,結合依據的關鍵特徵分析錯因的例子

例7.3.1:在上圖中,有個預測標籤爲「boat」,可是原始圖像中並無船隻存在,經過圖中右側關於標籤「boat」的解釋結果能夠看到模型將水面做爲分類的關鍵依據,獲得預測結果「boat」,這個依據是錯誤的。經過對訓練數據集中標籤爲「boat」的數據子集進行分析,發現絕大部分標籤爲「boat」的圖片中,都有水面,這極可能致使模型訓練的時候,誤將水面做爲「boat」類型的關鍵依據。基於此,按比例補充有船沒有水面的圖片集,從而大幅消減模型學習的時候誤判關鍵特徵的機率。

例7.3.2:圖中有一個分類預測結果是「aeroplane」,但圖中並無飛機。從標籤「aeroplane」的解釋結果看,高亮區域在鷹的身上。打開飛機相關的訓練數據子集,發現不少狀況下訓練圖片中飛機都是遠處目標,與老鷹展翅滑翔很像,猜想多是這種緣由致使模型推理的時候,誤將老鷹當作飛機了。模型優化的時候,能夠考慮增長老鷹滑翔的圖片比例,提高模型的區分和辨別能力,提升分類準確率。

例7.3.3:這個例子中,有個預測標籤是「person」,仔細看圖中沒有人。根據標籤「person」的解釋結果,高亮區域在摩托車的前部;在原圖中,乍一看,還真像一我的趴着;猜想是分類模型推理的時候,誤將這部分當作人了。

八、如何部署和使用MindSpore解釋方法?

在MindSpore官網的模型解釋教程中,詳細介紹瞭如何部署和使用MindSpore提供的解釋方法,連接請見:

https://www.mindspore.cn/tutorial/training/zh-CN/r1.1/advanced_use/model_explaination.html

下面,對部署和使用方法,作簡要介紹:

先使用腳本調用MindSpore 提供的python API進行解釋結果的生成和收集,而後啓動MindInsight對這些結果進行展現,總體流程以下圖:

具體步驟以下:

8.1 準備腳本

經過調用解釋方法Python API對模型預測結果進行解釋,已提供的解釋方法能夠在mindspore.explainer.explanation包中獲取。用戶準備好待解釋的黑盒模型和數據,在腳本中根據須要實例化解釋方法,調用API用於收集解釋結果。

MindSpore還提供mindspore.explainer.ImageClassificationRunner接口,支持自動化運行全部解釋方法。用戶事先將實例化的解釋方法進行註冊,便可在該接口調用後自動運行解釋方法,生成及保存包含解釋結果的解釋日誌。

下面以ResNet50爲例,介紹如何初始化explanation中解釋方法,調用ImageClassificationRunner進行解釋。其樣例代碼以下:

```
import mindspore.nn as nn
from mindspore.explainer.explanation import GradCAM, GuidedBackprop
from mindspore.explainer import ImageClassificationRunner
  
from user_defined import load_resnet50, get_dataset, get_class_names
  
  
# load user defined classification network and data
network = load_resnet50()
dataset = get_dataset()
classes = get_class_names()
data = (dataset, classes)
  
runner = ImageClassificationRunner(summary_dir='./summary_dir', network=network, activation_fn=nn.Sigmoid(), data=data)
  
# register explainers
explainers = [GradCAM(network, layer='layer4'), GuidedBackprop(network)]
runner.register_saliency(explainers)
  
# run and generate summary
runner.run()
 ```

8.2 使用MindInsight進行結果展現

8.2.1 啓動MindInsight

啓動MindInsight系統,在頂部選擇進入「模型解釋」模塊。能夠看到全部的解釋日誌路徑,當日志知足條件時,操做列會有「顯著圖可視化」的功能入口。

8.2.2 各項功能介紹

顯著圖可視化用於展現對模型預測結果影響最爲顯著的圖片區域,一般高亮部分可視爲圖片被標記爲目標分類的關鍵特徵。

進入顯著圖可視化界面,如上圖,會展示:

  • 用戶經過Dataset的Python API接口設置的目標數據集。
  • 真實標籤、預測標籤,以及模型對對應標籤的預測機率。根據具體狀況,系統會在對應標籤的左上角增長TP, FP,FN(含義見界面提示信息)的旗標。
  • 選中的解釋方法給出的顯著圖。

界面操做介紹:

1.經過界面上方的解釋方法勾選須要的解釋方法;

2.經過切換界面右上方的「疊加於原圖」按鈕,能夠選擇讓顯著圖疊加於原圖上顯示;

3.點擊不一樣標籤,顯示對不一樣標籤的顯著圖分析結果,對於不一樣的分類結果,一般依據的關鍵特徵區域也是不一樣的;

4.經過界面上方的標籤篩選功能,篩選出指定標籤圖片;

5.經過界面右上角的圖片排序改變圖片顯示的順序;

6.點擊圖片可查看放大圖。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

相關文章
相關標籤/搜索