NTU ML2023Spring Part2.11 可解释的 ML 模型
有时在某些可能带来严重后果的任务(比如医疗,法律、自动驾驶)上,我们不止希望机器学习模型给出一个答案,更希望它给出相应的理由。
那能不能直接用更容易解释的模型呢?可以,但问题是效果不好。
interpretable 和 explainable 这两个词经常被混用,前者指它本来不是黑箱,后者指它是黑箱但可以解释。
decision tree 就是这样一种模型:它比线性模型更强大,比 deep learning 更容易解释。所以 decision tree is all you need,本文结束。(?)
然而并不是这样。当规模变大的时候,decision tree 也会逐渐难以解释。
explainable ML 的目标是什么?不像之前的作业都有一个量化的分数和 leaderboard,这一节基本都是比较感性的。
(这一段比较偏 LHY 的主观感受)我们能彻底知道 ML model 每一步为什么这样做吗?类比人类,我们现在还没有完全知道人脑的运行原理,但这不影响我们相信另一个人做出的决断。我们为什么会相信他人?一部分原因是他人可以给出解释。因此,只要机器能对每一步行为给出相应的解释,就可以认为它是 explainable 的。
explainable ML 又分为 local explanation 和 global explanation.
-
local explanation
给机器一张图片,它认为这是猫,并且给出了原因。
-
global explanation
不给机器图片,问它怎么判断一只猫。
Local explanation
假设模型的输入是 \(x\),它由多个 components 组成(例如图像的 pixel,文本的 token 等)。如何知道一个 component 的重要性?只要看改动某个 component 后模型输出的变化情况就行了。
还有一种更进阶的方法,就是算 loss。把输入的某一个 component 做一个小的变化(\(\Delta x\)),看 loss 的变化程度(其实就是偏导)。可以画出 saliency map,代表每个点的重要程度。
LHY 还当场举了一个例子:他训练了一个 pokemon 和 digimon 的分类器,然后在训练和测试集上都达到了很高的准确率。本来这就结束了,但是当他尝试做 explainable 的时候才发现机器是通过看两种图片的背景实现的,一种是透明背景(机器看到的是黑色),另一种是白色背景。所以其实根本就没达成想要的目标,机器只是学会了取巧的方法。
smoothgrad:在图片上加噪音之后画出平均情况下的 saliency map.
然而光看 gradient 也有局限性,因此有 integrated gradient (IG)。
global explanation
如果对于一张图片,卷积层的某些 filter 有比较大的输出,那可能说明这张图片里有它负责检测的特征。基于此,我们可以人工创造出一张图片,让它输出达到最大,这张图片上的内容就可以告诉我们这个 filter 负责什么了。
对于总的输出结果也是一样的道理。以手写数字识别为例,假设我们想知道机器眼里的数字 1 是什么样的,那就可以人工找一张图片来最大化它输出 1 的概率。但实际做出来的结果并不如此,你看到的全是噪音。(其实和 adversarial attack 比较像?)
为了解决这种问题,可以考虑不手动调输入,而是训练一个 generator 产生 classifier 的输入,然后手动调 generator 的输入,得到 generator 的输出就是 classifier 心里想的大致图像。
这种调整方式像是强行找一个人看起来比较好的结果,事实上也确实如此,explainable AI 现在都在干这种事。

浙公网安备 33010602011771号