李宏毅機器學習課程筆記-11.2Explainable AI(Local Explanation)

假定在圖片分類任務中有一張圖片,Local Explanation則要求機器說明爲什麼它認爲這張圖片是某個類別(比如“cat”)。

Explainable AI(Local Explanation)的目標是,知道每個component對於最終結果的重要性。我們可以通過remove或者modify其中一個component,看decision會有什麼變化。

基於梯度判斷Component重要性

假設輸入是\(x\),它有很多component \(\{x_1,x_2,\dots,x_N\}\)組成。如果輸入是image,則component一般是pixel、segment或patch等;如果輸入是text,則component一般是word。對於圖片,我們可以在圖片上“放置”一個灰塊以覆蓋圖像的一小部分,觀察其對結果的影響,見《Visualizing and Understanding Convolutional Networks》。注:component的選取、remove或者modify也是需要研究的。

還有另一種方法是,輸入爲\(\{x_1,...,x_n\}\),對某個pixel \(x_n\)加上\(\Delta x\),用\(\frac{\Delta y}{\Delta x}\)來表示擾動\(\Delta x\)對結果\(y\)的影響,即通過\(\frac{\partial y_k}{\partial x_n}\)的絕對值表示某個pixel對\(y_k\)的影響,見《Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps》。

還有很多其它基於梯度來判斷Component重要性的方法:

  • Grad-CAM

  • SmoothGrad

  • Layer-wise Relevance Propagation(LRP)

    Redistribute the output, Backward propagation until reaching input

  • Guided Backpropagation

梯度飽和

基於梯度來判斷component重要性的方法也存在着侷限性:梯度飽和(Gradient Saturation)和Noisy Gradient

考慮\(\frac{\partial大象}{\partial鼻子長度}\),可知在一定範圍內,鼻子越長,則判定爲大象的概率就越大,但隨着鼻子長度增加到一定數值後,鼻子長度對於判定大象的影響幾乎爲0,這時就出現了梯度飽和,如下圖所示。

img

那如何解決梯度飽和的問題呢?解決方法就是Global Explanation,可以參考Integrated gradient和DeepLIFT。

相對於梯度飽和,另外一個問題就是Noisy Gradient,即Gradient變化非常大,解決方法是SmoothGrad(在計算梯度時添加噪聲以擾動生成多個樣本,並計算平均梯度)

Attack Interpretation

向輸入中加入一些細微的噪聲,這樣並不影響視覺效果和模型的輸出,但這樣可以攻擊explanation,如下圖所示,詳見《Interpretation of Neural Networks is Fragile》。

img


Github(github.com):@chouxianyu

Github Pages(github.io):@臭鹹魚

知乎(zhihu.com):@臭鹹魚

博客園(cnblogs.com):@臭鹹魚

B站(bilibili.com):@絕版臭鹹魚

微信公衆號:@臭鹹魚

轉載請註明出處,歡迎討論和交流!


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