我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes

本节内容综述
  1. 机器为什么“能”知道?可以从两个角度考虑,比如对于一个分类问题,可以考虑:Local Explanation: Why do you think this image is a cat?,还有Global Explanation: What do you think a "cat" looks like?
  2. 此外,解释性机器学习可解释机器学习也有现实意义,比如“证据何在?”,“凭什么给你贷款?”;毕竟,模型可能正确率高,但是什么都没学到;此外,如果你知道哪里出了什么问题,我们也多了一些参考。
  3. 李老师讲了他自己的观点,见[小细节](#Lee’s Point of View)
  4. Interpretable与Powerful是存在博弈的。深度模型可能很强大,但也因此难以解释。Let's make deep network explainable.此外,决策树可能是一个既强大由可解释的模型;但是有时,问题复杂了,也难以解释。
  5. 先从Local Explanation: Explain the Decision讲起。具体讲了基于梯度的Saliency Map,以及一些局限性和攻击方法。
  6. 接着,做了一个 Case Study ,区分数码宝贝和神奇宝贝。(过程充满欢乐…)
  7. 接着开始Global Explanation: Explain the Whole Model部分。之前在P17 CNN中,有讲过Activation Maximization,知道DNN很容易被迷惑。本节课进行了简单复习。
  8. "Regularization from Generator",向机器输入一个低纬度向量,机器输出图片。因此要Training a generator(GAN, VAE, etc.)。
  9. 接着分享的是,USING A MODEL TO EXPLAIN ANOTHER;用一个模型去解释另一个模型。讲到了Local Interpretable Model-Agnostic Explanations(LIME)。LIME很有趣,举了两个例子,展示其应用。
  10. 此外,还讲了 Decision Tree 。Decision Tree 可以无限深度,来模仿黑盒子;但是,决策树太深了,也不便于解释,因此,如何限制决策树深度并且起到模拟作用的难题值得讨论。

 

 

小细节

Lee’s Point of View

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法
李老师观点:可解释机器学习可能不需要一定解释出来什么,但是要让人决定“爽”。

Local Explanation: Explain the Decision

我们期望知道,变量中哪些值起了作用。

如何做?把一些数据去掉,看看影响。
【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_02
如上图,如果把灰色方块放在狗头上,机器认为其是狗的概率大大降低了。

此外,还有一种方法,如下图,在某一个变量上加一个小小的扰动,看y值的变化。
【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_03
如上,根据每个值对目标值得偏微分,我们可以画出一个Saliency Map,可以看出,机器真的看出了什么是动物。

Limitation of Gradient based Approaches

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_04
如上,大象的鼻子对于机器来讲,可能很重要;但是对于Gradient based Approaches来讲,把大象鼻子长一点、短一点都是看不出影响的,因为在大象鼻子长度可能处于一个平滑区间,梯度是饱和的(Gradient Saturation)。

解决方案可以是用的别的指标,而非梯度,如右边两篇论文。

Attack Interpretation

此外,基于梯度与Saliency Map,可以进行些攻击行为。
【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_05

如上,可以像下面两张图一样,加一些人眼注意不到的noise,来误导机器认知,进而产生攻击作用。

Case Study: Pokemon v.s. Digimon

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_06
如上,网上有相关数据集。即便是人类,可能也很难分辨一些特殊物种,到底是数码宝贝还是宠物小精灵。

机器能否做到呢?

胡乱叠了几层 CNN ,训练集准确率98.9%;测试集98.4%。很惊人。

于是李老师做了Saliency Map。
【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_07
【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_08
发现机器更在意的是图片的边缘。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_09

李老师回去看了下数据,发现:

  • 宝可梦的图片大多是PNG;
  • 而Digimon大多是JPEG??????

非常幽默了,可以说是。

Regularization from Generator

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_10
如图,我们将问题转化为“找一个最好的z”。效果如下。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_11

USING A MODEL TO EXPLAIN ANOTHER

我们用一个具有解释能力的模型,去模仿一个不可解释的模型。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_12

但是难题在于,线性模型可能不能很好地模仿其他模型如神经网络的行为。

然而,我们可以模仿一个 local 部分,而非全貌。

Local Interpretable Model-Agnostic Explanations(LIME)

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_13
LIME四步如上,其中,注意第二部找到nearby的数据很重要。这个nearby的决定直接影响效果。

LIME: Image

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_14
如上,先手动将图片分成许多小部分,再随机丢掉某些部分,生成一个新数据,将新数据放入黑盒,查看分数。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_15
如图,如果想用线性函数,我们需要对输入数据降维:

  • 对于这个例子,我们可以用0-1变量表示某个小块是否存在。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_16
如上,我们现在则可以分析这些参数:

  • 如果权重接近0,则说明这个区域与青蛙无关;
  • 如果正数,则说明这个区域与青蛙相关;
  • 如果负数,则说明这个区域让机器认为其不是青蛙。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_17
如图,李老师用自己的照片做了个实验。

机器认为李老师的照片和服可能性0.25,实验袍可能性0.05。于是李老师进行了LIME。

最后得出与实验袍相关的segment;以及与和服相关的segment。

Decision Tree

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_18
如上,我们规定一个指标,描述决策树的深度。

【李宏毅2020 ML/DL】P26-33 Explainable ML_算法_19
如上,在训练神经网络时,就把“树的复杂度”考虑为优化目标。

但是,这个指标难以微分。于是这篇文章训练了另一个神经网络,那个神经网络用于把主神经网络的参数作为输入,预测树的深度,然后对主神经网络的参数做微分...