背景
现有机器学习解释方法专注于后验解释。主要通过:
- 无法获取模型内部信息,对每个样本进行局部分析;
- 构造query来获取模型输入输出之间局部的关系。
现有的困难主要包括:
- 如何定义局部性(如结构化的数据);
- 解释的可辨识性;
- 计算代价(有些算法需要复杂的优化过程)。
然而,逐样本的解释无法在邻域输入中进行比较,导致解释不稳定,甚至相矛盾。
本文自底向上构建可解释模型,维持理想的简单的由特征和系数组成的线性模型的特点,同时维持模型效果。self-explaining是说给定一个输入,模型对这个输入进行一个变换,变成了一堆人类更好直观理解的concept,人直接观察concept就可以了。
self-explaining models
参考利普西茨连续(Lipschitz continuity),定义函数f:X⊆Rn→Rm" role="presentation" style="font-size: 100%; display: inline-block; position: relative">被h:X⊆Rn→Rk" role="presentation" style="font-size: 100%; display: inline-block; position: relative">差异约束(difference-bounded),当存在L∈R" role="presentation" style="font-size: 100%; display: inline-block; position: relative">使任意x,y∈X" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,‖f(x)−f(y)‖≤L‖h(x)−h(y)‖" role="presentation" style="font-size: 100%; display: inline-block; position: relative">。L" role="presentation" style="font-size: 100%; display: inline-block; position: relative">为常数。也就是说,f" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的输出之间的差异被h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">输出的差异限制。
这里的difference bound相当于使两个函数的输出变化方式类似。这样保证了f" role="presentation" style="font-size: 100%; display: inline-block; position: relative">与h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的变化始终不会出现太大差异,保证了解释的鲁棒性。
实践中这样的限制太严格,很难实现。上述定义改为局部情况(locally difference-bounded),则为对任意x0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,总存在δ>0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">和L∈R" role="presentation" style="font-size: 100%; display: inline-block; position: relative">使得‖x−x0‖<δ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">满足‖f(x)−f(x0)‖≤L‖h(x)−h(x0)‖" role="presentation" style="font-size: 100%; display: inline-block; position: relative">。
讲人话,也就是不要求所有的输入变化都被约束,只要每个输入x0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">附近一段空间x−x0<δ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的变化能比较平稳地表示就行。
使x∈X⊆Rn" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,Y⊆Rm" role="presentation" style="font-size: 100%; display: inline-block; position: relative">分别为输入和输出空间,定义f:X→Y" role="presentation" style="font-size: 100%; display: inline-block; position: relative">为自解释预测模型(self-explaining prediction model),当f" role="presentation" style="font-size: 100%; display: inline-block; position: relative">满足f(x)=g(θ(x)1h(x)1,⋯,θ(x)kh(x)k)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,其中
-P1 g" role="presentation" style="font-size: 100%; display: inline-block; position: relative">单调且完全加性可分
-P2 对任意zi:=θ(x)ih(x)i" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,g" role="presentation" style="font-size: 100%; display: inline-block; position: relative">满足∂g∂zi≥0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">
-P3 θ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">被h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">局部差异约束
-P4 h(x)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">是x" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的可解释表示
-P5 k" role="presentation" style="font-size: 100%; display: inline-block; position: relative">比较小
P1P2是为了限制聚合函数g" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的选择,加性条件让concepts之间相对独立,偏导的约束使g(z1,⋯,zk)=∑iAizi" role="presentation" style="font-size: 100%; display: inline-block; position: relative">中的权重部分Ai" role="presentation" style="font-size: 100%; display: inline-block; position: relative">总为正。
P5的约束让用作解释的concepts不要太多,实际应用中来决定。
这样,对于给定输入x" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,用集合
Ef(x)≜{(h(xi),θ(x)i)}i=1k" role="presentation" style="font-size: 100%; display: inline-block; position: relative">
表示基础概念basis concepts和对应概念的影响力(权重)。
每个h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">分别从一个角度解释了输入,也就是得到了输入从一个角度看会对预测结果产生什么影响。θ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">被h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">局部差异约束,说明θ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">不会完全改变h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">对结果的影响,只是作为参数对它进行微调。
θ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">作为参数应该具有稳定性(不会因为输入微小的改变导致解释的巨大变化),看看f" role="presentation" style="font-size: 100%; display: inline-block; position: relative">在θ" role="presentation" style="font-size: 100%; display: inline-block; position: relative">为常数时会如何表现。设f" role="presentation" style="font-size: 100%; display: inline-block; position: relative">为关于h(x)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的函数f(x)=g(h(x))" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,设z=h(x)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,通过链式法则可得∇xf=∇zf⋅Jxh" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,其中Jxh" role="presentation" style="font-size: 100%; display: inline-block; position: relative">为h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">关于x" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的雅可比矩阵(就是一个系数)。在给定点x0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">,我们希望θ(x0)≈∇zf" role="presentation" style="font-size: 100%; display: inline-block; position: relative">(看看上面的局部差异约束定义)。把这个假设代入∇xf=∇zf⋅Jxh" role="presentation" style="font-size: 100%; display: inline-block; position: relative">可得
Lθ(f(x))≜‖∇xf(x)−θ(x)⊤Jxh(x)‖≈0" role="presentation" style="font-size: 100%; display: inline-block; position: relative">
其中的三个元素都可以计算,作为优化目标中的正则项。
为了让∇xf=∇zf⋅Jxh" role="presentation" style="font-size: 100%; display: inline-block; position: relative">成立,全部移到等式左边作为正则项,让它等于0。
学习可解释的concept
一个合理的可解释concept应该满足以下几点:
- fidelity精确:x" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的概念表示应该保留相关信息;
- diversity差异:输入应该能被表示为几个不重叠的概念;
- grouding基础:概念应该能直接被人类理解。
为了实现以上内容,SENN学习概念的过程满足:
- h" role="presentation" style="font-size: 100%; display: inline-block; position: relative">相当于自编码器,把原始输入映射到可解释的concepts空间;
- 通过稀疏性来满足diversity,使得一个输入尽可能用独立的concept来表示,而不是所有输入都与所有concepts有关;
- 通过prototyping来给概念提供可解释性,即提供一个最小训练集来最大程度激活每个概念,方便我们观察每个concept对应的输入有什么特征。
concept encoder把输入变为一组可解释的基础概念;
relevance parametrizer生成对应的分数;
aggregation function把对应的概念和分数(权重)组合起来(加权求和)作为最后的输出。
robustness loss鼓励整个模型局部表现为h(x)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">参数为θ(x)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">的线性模型。
整体的损失函数为:
Ly(f(x),y)+λLθ(f(x))+ξLh(x,x^)" role="presentation" style="font-size: 100%; display: inline-block; position: relative">
实验
可解释性:
可以看出SENN把mnist数据集的输入用5个concepts来表示,相比以前的方法更加直观,这五个concepts进行prototyping后可以看出每个concept对应输入的特征。
可信度:
左图把解释出来每个特征对结果的影响和真实实验得到的每个特征对结果的影响的相关性,越高表示解释的越好。右图是移除某个特征对结果准确率下降的影响。通过删去特征导致模型预测准确率下降的程度可以分析模型给出解释的可信度。由于SENN是直接把concepts进行加权求和,把对应权重设为0就可以轻松删除对应concept的特征,便于分析模型可信度。
稳定性:
图中不同颜色代表对应像素与预测结果的相关性,也就是对输入的解释。通过在输入中随机添加噪声点,我们可以看到现有方法的解释产生了较大的变化和干扰,而SENN很好的保留了给出的解释,体现了模型的稳定性。
本文给模型加上了梯度正则项来增强解释的鲁棒性。Fig.5(A/B)的结果体现了稳定性和预测精度之间存在取舍,更严格的正则会导致模型精度下降。从Fig.5C可看出SENN全面超越了LIME和SHAP。
来自为知笔记(Wiz)
附件列表