论文阅读_ 解释黑盒模型方法综述

论文:《A Survey of Methods for Explaining Black Box Models》
论文地址:https://arxiv.org/abs/1802.01933v3
(本文为论文核心内容提炼,并非逐段翻译)

《A Survey of Methods for Explaining Black Box Models》是2018年发表在ACM Computing Surveys上的一篇综述性论文,正文37页,介绍了七十多种模型解释相关论文,参数文献144篇。它列出了每种方法的相关论文,作者,发表时间,解释模型,被解释模型,解释何种类型数据,是否提供代码,数据等信息,如下图所示:

论文的前五章介绍了为什么需要使用可解释模型,第六到九章分类别介绍了各种解释方法及相关论文,并对每一种方法进行了简要介绍。

如何评价模型

无论是写论文,还是和客户沟通,描述下列几点都是必不可少的。

• 模型评价指标
一般数据分析时都会使用:敏感性、特异性、F1 score、AUC曲线等方法。

• 被多少数据支持
训练数据和测试数据的数据量也是重要量度,10000个实例训练出的模型相对于100个实例训练的模型更加可靠。

• 泛化能力
在某些比较敏感的领域,数据往往不被公开,使用A机构数据构建的模型,不一定能在B机构正常工作,此时需要考虑训练数据是单中心还是多中心,单中心数据可能包含的一些本地因素,导致难以泛化,有时需要对比数据运行在不同场景中的测试效果,以展示其泛化性能。

• 健壮性
健壮性主要指当数据缺失时,模型能否正常工作。

• 一致性
如果使用多模型预测,对比各个模型结果是否一致,也是一种对模型准确性的量度。

• 可解释性
可解释性在下文详述。

为什么解释模型

• 安全性、可靠性 精确度都是自己说的,数据处理方法不同,纳入训练集和测试集的数据不同,定义的因变量不同,算出的精确度也不同,因此不能作为模型的唯一量度和对比模型效果。 对于医疗、自动驾驶,这些生死攸关的领域,除了提供准确率和最终预测结果,还需要提供做出判断的依据,使模型具有可解释性才能被接受。

隐藏的问题

• 建模数据和实际数据不一致
有些数据和类别在训练时无法获取,但实际应用中又必须使用;另外,有时test与train分布一致,但与实际场景中数据不一致。这些都使得评价模型和评价实际效果之间存在差异。

• 结果正确,但依据不对
在狼与狗的分类器中,分类的依据可能是图片的背景,而不是动物本身,尽管模型准确率很高,但当狗出现在野外时,很可能被识别为狼。

• 无法察觉的攻击
在深度学习领域,有时对抗攻击仅通过人眼不可查觉的微小调整即可骗过模型,这使得模型变得不可靠。

• 获取数据与现实不一致
有些数据处理时,在训练集和测试集中都去掉了缺失数据和脏数据。但实际情况下,这些数据可能无法被识别,或者也需要被预测,这使得模型计算得出的准确率比实际应用高很多。

科研中的回归和解释

科研项目中有时需要提取出可以简单地识别和表达的规律。

模型选型

在一些重要领域,模型的可解释性也是选型的重要考虑因素,有时为了可解释性也可以牺牲一些精确度。

偏差

• 错误数据引起
训练数据中可能包含错误数据,且清洗时并未发现,这些数据造成了建模的偏差。

• 模型引起
有些偏差是模型本身的特性造成的,比如使用线性模型拟合非线性数据,结果误差很大。

• 人类偏见
有些数据虽然客观存在,但也蕴含了偏见,如果某一招聘网站计算出女程序员数量少,则可能认为女性不适合从事该工作,从而使模型失去了公平性。伦理和隐私问题目前也是模型正在面对的问题。

寻找错误原因

通过分析模型错误预测的原因改进模型。

哪些模型需要解释

一般情况下复杂的模型都需要解释,比如组合树模型、深度学习模型、非线性模型等等。

怎么解释模型

解释是阐明自变量X和因变量Y之间的关系,一般包括解释模型的内部逻辑和决策的原因。常用的方法是统计和归因。同时需要遵循以下原则:

• 可认知的特征
需要概念层的解释:易于理解。比如深度学习网络的隐藏层虽然也是一种权重但很难向用户解释其含义。

• 符合常识
解释必须符合专家背景知识,否则即使结果正确,也常被认为是“蒙的”。

• 只解释起决定作用的因素
代入模型的数据很多,解释应力求简约,一般只解释最重要的前N个特征,以及对重要类别进行解释。

• 易于理解,便于决策
规则不能太多,树不能太深,线性的非零参数不能太多;特征之间不能过度组合;对于不同背景知识用户,可使用不同解释方法。

常用解释方法

• 规则模型(用于纯数据)
规则是最终提炼出的一组或多组类似if-else的逻辑,某一实例可能符合多条规则得出不同结论、或者不符合任何规则。此时,可使用多条规则的优先级,如top-k rules投票方法。

• 简单决策树(用于纯数据)
不同于规则模型,树模型中单个实例只可能落入一个分支。

• 特征重要性(用于纯数据)
很多模型自带特征重要性输出。

• 划出重点区域(用于图片,文字)
常使用Attention方法,画出图中的重要区域,或者文本中的关键词,以解释决策原因。

• 可视化方法(用于纯数据)
分析某一特征与结局变量的关系,类似单因素分析。

• 结局与特征组合的关系(用于纯数据)
目的往往是去掉不重要的特征

• 使用元数据解释(所有)
使用某个类别的典型数据,寻找某一类别的共性,相近实例分析。

• 最大激活(用于神经网络)
分析单层最大激活,倒推哪部分特征更重要。

• 注意事项
注意限制复杂度,并在精确和解释间取得平衡。

不同模型方法不同

不同模型使用不同的解释方法,当模型本身就具有可解释性,如树模型或线性模型能解释自身逻辑,但需要考虑如何展示这些规则(TRANSPARENT BOX DESIGN);反之,如果是黑盒模型,则需要考虑如何解释模型整体(MODEL EXPLANATION),解释单个实例预测结果(OUTCOME EXPLANATION),以及模型检测问题(MODEL INSPECTION),下面将一一介绍。

解释整体模型

论文的第六部分主要介绍了解释整体模型的方法,一般情况下,从解释具体实例开始,再具体实例到各个类别,各个类别又组成了对整体模型的解释。具体方法如下:

• 决策树
早在1996年,就已使用决策树模型解释深度网络。
举例一:使用自上而下的解释方法,先根据各个类别选择元型数据,选取每个元型其及附近数据构造针对每一类别的简单模型并提取特征,用简单模型构造复杂模型。比如一个复杂模型可以识别汽车、行人、长颈鹿等多种物体,而针对其中类型长颈鹿的模型比整体模型简单很多。
举例二:从森林模型提取主要树模型,可以使用聚类方法,也可以选择其中误差最小的树,或者最重要的树。

• 规则
举例一:可为每一类别分别建立一组或多组规则,当规则重叠时,使用支持率更高的规则,或者复杂度较使的规则。
举例二:可以使用自下而上的解释方法:先对数据聚类,找到元型,再产生规则。

• 简单模型解释复杂模型
人们希望找到一种对所有模型都适用的解释方法:用一个简单模型c解释复杂模型b。具体方法如下:

(1) 设黑盒模型为b,解释模型为c。
(2) 用迭代方法模拟实例x附近实例代入模型b得到标签y’(遗传、蒙特卡罗、增化学习,倒推)
(3) 代入模拟的数据和y’训练模型c。
(4) 计算可信度:尽量减少b与c的差异(match比例)。
(5) 提取模型c的重要特征,分析路径,分析错误实例。

解释预测结果

解释单个实例,是一种局部解释,它只涉及输入的单个实例和模型b。且只与模型b的部分实例有关。具体方法如:

• 寻找重要特征子集
• 计算特征变化对结局变量影响
• 神经网络越往后层包含的无关信息越少,以此倒推重要特征。
• 使用线性解释非线性(但并非所有情况都能使用线性拟合)。

下例展示了图像识别中影响最终判断的重点区域,方法是计算对用最后一层(线性层),具有最大影响的图像区域(最大平均池化)。

模型检查

模型检查使用了一些做图方法来解释模型,例如:

• 改变一些属性,对照预测结果变化,并用图片展示分析结果。
下图展示了一些作图方法,左图使用PDP(Partial Dependence Plot)图,其横轴是酒的PH值的高低,纵轴是酒的价值,它解释了部分特征对结局的影响。右图是年龄对风险的影响。

• 基于树可视化
可用决策树解释RNN,并将特征分组。

• 基于最大激活
根据某个实例激活的神经元,展示各层激活的位置和区域。

• 其它做图方法
单因素分析(连接、离散)、多因素分析、组合特征分析等。

透明模型

有些模型自带可解释性,比如树模型,规则模型,线性模型等,但具体解释时也需要一些技巧。

简单树模型

树模型本身就是对模型的全局解释,而解释具体实例则使用树中的某一路径,注意限制树的复杂度(深度)。

规则模型

使用规则时,可使用贪婪算法、贝叶斯算法简化规则,缩小特征空间;通过规则分析错误原因,规则最好相互独立。

元型选择

• 典型数据
对于每一类别,可使用均值、聚类中心等方法选取元型数据。

• 每一类别可能不止一个元型
比如手写数字识别时,数据7的典型写法可能不止一种,此时需要使用聚类方法选择多个元型。

• 人机交互调整
生成元型数据时,往往模型选择和专家纠正相互迭代进行,以便尽快达到最佳效果。

• 元型反例
有时也可使用元型反例,描述与典型规则不一致的特殊情况,比如“鲸鱼不是鱼”。

• 图像重建
通过对某一类型数据的学习,如对“狗”图片的学习,用生成对抗的方法生成更为典型的狗图片(忽略背景)。