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

微信公众号:@臭咸鱼

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


原文地址:https://www.cnblogs.com/chouxianyu/p/14687810.html