李宏毅机器学习课程笔记-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):@绝版臭咸鱼

微信公众号:@臭咸鱼

转载请注明出处,欢迎讨论和交流!


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