分类模型的可解释性

论文题目:《Why Should I Trust You? Explaining the Predictions of Any Classifier》
论文地址:https://chu-data-lab.github.io/CS8803Fall2018/CS8803-Fall2018-DML-Papers/lime.pdf
模型可解释性论文列表:https://github.com/oneTaken/awesome_deep_learning_interpretability

《Why Should I Trust You? Explaining the Predictions of Any Classifier》是2016年发表在KDD上的论文,至今被引用2984次。文中介绍了可以应用于任何分类模型的模型解释方法。

很多复杂的机器学习模型和深度学习模型,都被外界视为黑盒,如何对用户解释它的结果、评价其效果,让用户放心地使用,尤其是在医疗这种性命攸关的领域,对于模型推广至关重要。文中提出了用于解释分类模型的LIME方法。

在机器学习领域,一般在训练集上训练模型,用测试集(或验证集)评价模型,然后统计整体模型的准确性。但是测试集与实际场景中使用的数据往往存在一定差异。

对于单条实例,它的表现又如何?是否可以信任模型该次预测?例如对于准确率是80%的模型,如何确定本次的预测到底属于正确的80%,还是错误的20%。文中提出了解释和评价单次预测的方法LIME,并通过对多个典型的实例的评价,将该方法延伸到评价整个模型SP-LIME,并讨论了在什么情况下应该信任模型(模型的适用范围)。

人做决策时往往依赖其先验知识,以及知识背后的原因。评价模型有效性的重要方法是找到影响决策的关键特征,比如一段话中的重点单词,图片中的某些小块,如下图所示,LIME方法找出了影响某一次决策的重要特征,其中绿色为相关特征,红色为重要特征。

评价单个实例LIME

如果在建模的过程中出现一些泄露,比如X(假设是x1)里掺入了y的部分内容,或者数据集引起的偏差(如:男女不平等)。在实际应用中,这些x1又无法得到,那么在测试集中计算得出的模型准确度并不能说明模型的好坏。使用LIME方法寻找关键因素,如果发现x1是决定性因素,就很容易发现泄露问题。

另外,精确度并不是模型的唯一量度,有时需要从多个模型中选择出最佳模型,一般会选择整体正确率最高的模型,或者根据各个模型的准确率加权,最终方法对于单个实例未必是最优选择。对于单个实例,计算出决策的依据,并与人的先验知识印证,有利于选择对该实例效果最好的模型。在这样的交互过程中,开发者也能了解究竟哪些因素更能影响人的决策,从而优化模型。

开发者都希望在输入数据和输出数据间建立可解释的联系。但是复杂的机器学习模型或者深度学习建模中,相对比较困难,模型预测过程是成千上万参数共同作用的结果。希望最终呈现出来的是人能理解的,而非特征实际上怎么计算的细节,也不一定是输入的具体特征(如图片输入各像素点的颜色)。

实现LIME的具体方法是:在实例x附近加干扰,得到一些与它近似的实例z,用训练出的模型f对这些z进行预测f(z),作为解释模型g的label。代入模型,优化下面公式中定义的目标函数。对于邻近x的z给予较高的权重π,对于较远的z给予较低的权重π。

在分类问题中,f可看作是实例x属于某分类的概率,即f是预测模型;g是用于解释的模型;πx(z)通过衡量实例z与x的近似度赋予实例权重;L用于度量在局部范围π条件下,g用于解释f的不可信度(越小越好);Ω(g)是模型g的复杂度。简单地讲:LIME的目标是从众多的解释模型G中选择最合适的模型g,该模型对于人类的理解足够简单(Ω(g)小),且不可信度L也比较小(复杂模型f和简单模型g在x附近效果差不多)。

在直觉上看,下图示例是一个比较复杂的二分类,整体并不是线性可分的,通过训练得出了复杂的二分类模型f,不同分类分别使用蓝色和肉色表示;对局部实例x(粗红十字),通过在它附近模拟一些实例z(十字和圆点),并且根据它们与x的距离赋予不同权重,用z和x训练简单的线性模型g,用于在局部范围内拟合x。再从简单模型g中提取可描述的特征。

L的具体计算方法如下:

其中π根据距离赋予不同实例z权重,f(z)是模型对z的预测值 ,z’是根据z计算的可解释的特征,g(z’)是简单模型。

举个现实中的例子:假设最终训练出来了无比复杂强大的模型f,它可以识别各种动物。各种动物有其各自的特征,各不相同,但是对于单个实例“猪”,必定有一些与它相关的重要特征(它是全部重要特征的子集)。生成猪和其类似动物作为数据,训练简单模型g,用于学习与“猪”相关的重要特征。虽然g代表不了整个模型f,但它能很好地描述“猪”。

文中方法把基础模型f当作黑盒,因此LIME方法可应用于任何分类模型。该方法可能出现的问题是:简单模型g,即使在实例x附近也未必能完美地模拟f。但是可以评价g在x附近对f的拟合程度,同样也可据此选择更适合的g。

有些分类器虽然统计上看效果不错,但对于某类实例x可能效果并不好,如果通过上述方法提取的特征看起来并不合理,也可从而评价f对x实例预测的可信度,以便后期优化模型f。

评价整个模型 SP-LIME

上述方法用于评价对单个实例预测的可信程度,如果需要评价整个模型,则需要评价多个实例。SP(submodular pick)方法用于在大量数据中选择适当的实例。

开发者希望被选择的实例能覆盖各种label类型,覆盖尽可能多的情况,且不冗余(不重复)。如下例所示:

图中的行代表各个文档(实例),列代表文档中出现的关键词(特征),图中通过各个特征在各个实例的重要性构造了矩阵W。可以看到第二列特征对于每个文档都很重要(蓝色);第二行和第五行涵盖了除f1特征之外的所有特征。

在构造实例集的过程中,尽量使用对各种情况都重要的特征f2,也尽量减少纳入类似实例,如第二行和第三行就非常相似。这样,不会因为训练集中“猫”多,使猫相关的特征显得非常重要,而是相对均匀地选择重要特征。