深入理解CNN:显著图、原型层解释与反事实解释

本文探讨CNN可解释性,重点介绍显著图、原型层解释和反事实解释,帮助理解模型决策的关键因素及影响。

原文标题:原创 | 机器学习模型的可解释性(三)

原文作者:数据派THU

冷月清谈:

本文深入探讨卷积神经网络(CNN)的可解释性,着重介绍了两种关键方法:基于原型层的事后解释和反事实解释。首先,文章解释了如何通过显著图来理解CNN关注的图像特征,并阐述了基于原型层的事后解释方法,包括如何利用影响函数来确定训练数据中对预测结果影响最大的样本点,以及解决计算效率和损失函数平滑性问题的方法。其次,文章详细介绍了反事实解释,通过寻找最小的改变来改变模型决策,并探讨了距离度量和可行域约束的重要性。最后,文章还提到了如何利用变分自编码器在潜在空间中进行反事实搜索,从而得到更合理的反事实解释。

怜星夜思:

1、文章提到了影响函数可以帮助确定对预测影响最大的训练样本,在实际应用中,如果训练数据量非常大,计算所有样本的影响函数是否可行?有没有更高效的近似方法?
2、反事实解释中,文章提到改变种族属性来获得贷款批准可能是不公平的,那么在实际应用中,如何平衡模型的可解释性和公平性?在设计反事实解释时,应该如何避免产生不公平的建议?
3、文章提到了使用自编码器在潜在空间中搜索反事实,这种方法有什么优势和局限性?在实际应用中,如何选择合适的自编码器结构和损失函数,以保证生成的反事实解释既合理又有效?

原文内容

作者:宋雨婷
本文约4300字,建议阅读8分钟
本文带你理解在CNN内部是如何区别捕捉图形信息。


文章的第二部分“”中对LIME、SHAP、Kernel SHAP 和Deep SHAP作了详细解读。


随着深度卷积网络现在成为大规模图像识别的首选架构,理解在CNN内部是如何区别捕捉图形信息变得尤为重要。


现有一个图像分类任务,给定一个训练好的卷积网络、一个图像I和一个感兴趣的类别c,我们希望从这个类别出发,探索它最感兴趣的特征。显著图是如何做的呢?


image.png是卷积网络的分类层为图像I计算的对于类别c的分数。在训练完网络之后,我们先初始化I为零图像,接着,以image.png为目标函数,不断迭代I,直至收敛到最大值点。在这里加入L2正则项的原因是为了防止图像I的像素值一味增大忽略任务的要求。在训练完成之后,会得到每个类别的显著图,如下:


图片 


单单得到每个类目的显著图是不够的,我们还想要知道,对于每一个样本,模型将其判断为某一个类别或不判断为另一个类别的原因。给定图像image.png图片、类别c和针对类别c的分数函数1749607706978.png图片的卷积神经网络,我们希望根据像素对1749607773997.png分数图片的影响对image.png图片的像素进行排序。


从例子开始,考虑类别c的线性分数模型:image.png图片,其中图像I以向形式表示,image.png图片image.png分别是模型的权重向量和偏差。在这种情况下,很容易看出元素image.png图片的大小定义了I中相应像素对类别c的重要性。


然而,在卷积神经网络中,类别分数图片1749607706978.png是I的高度非线性函数,因此上一段的推理不能立即应用,我们需要先利用泰勒展开对他进行一阶展开,image.png图片,其中,image.png图片


1. 基于原型层的事后解释方法


对于一个黑箱,他的这些参数是怎么来的呢?不难发现,都是通过训练集数据加之以反向求导更新迭代而来的。一个自然而然的问题就是,我们能否在训练数据这个层面去解释这个黑箱呢?问题就自然而然地变为了, 哪些训练点对这个预测是影响最大的?我们想知道,去掉哪个点,对图片的改变最大?如果我们把某个数据乘以权重,结果会如何变化?


把这个问题量化,设原先的image.png图片是由目标函数image.png图片,现在,我们把某一个数据点z的损失函数前面的权重拉大image.png图片,那么,现在的损失函数为

图片,我们想知道的是,在拉大这个权重之和,模型在测试集上面的改变会有多少?即图片image.png。为了解决上面那个问题(哪些训练点对这个预测是影响最大的),我们必须要去固定图片image.pngimage.png,去遍历训练集上面的所有的点,训练一个新的网络,那么,一共需要训练n次网络,这是一个很麻烦的过程,我们应该去尽量避免,对此,Pang Wei Koh提出了用影响函数去解决这个问题。


1.1. 增加训练点权重对损失的影响函数


我们想知道的是,当image.png图片时,图片image.png如何变化?Cook & Weisberg先前提出,增加z的权重对模型参数图片的影响由下式给出:


图片 image.png


其中,image.png图片是海瑟矩阵(并假定它正定),接着,考虑增加z的权重对测试点image.png图片的损失的影响,有:

图片 

image.png


1.2. 训练输入扰动对损失的影响函数


假设我们不是增加训练点的权重,而是通过一个小量扰动图片image.png训练输入x,即我们考虑图片image.png。我们将图片image.png从z移动到图片image.png,新的参数估计值为:

图片 

image.png


增加图片image.png的权重(同时减少z的权重)对参数image.png图片的影响由下式给出:

图片 

image.png


如果x是连续的并且1749609753740.png图片很小,我们可以进一步近似为:

图片 

image.png


接下来,我们考虑这种扰动对测试点image.png图片的损失的影响。通过链式法则,我们有:

图片 

image.png


代入的表达式,我们得到:

图片 

image.png


如果我们令图片1749609753740.png指向image.png图片的方向,那么图片image.png将达到最大值。


在计算影响函数时,我们通常会碰到三个问题:Computational efficiency、Smoothness、Finding the ERM.


  • Computational efficiency


我们想要计算影响函数则必须要计算黑塞矩阵的逆,然而对于大规模数据集和复杂模型,这通常非常耗时的操作。为了解决这个问题,我们不直接计算矩阵的逆,取而代之的是,先利用Pearlmutter trick计算海瑟矩阵与v(loss的梯度)的点乘,这个过程基本是在线性时间内完成的。然后再用共轭梯度法或泰勒展开去近似计算image.png图片。这个过程避免了显式地计算海森矩阵,大大降低了计算复杂度和内存需求。

图片图片图片 


  • Smoothness


如果损失函数在某处不可微呢?我们MNIST 任务上训练了一个SVM模型。SVM 的损失函数涉及到 hinge 损失Hinge(s)=max(0,1-s),这是一个分段线性函数,会导致不可微性。我们将 hinge 处的导数设置为 0 并计算图片image.png。结果不准确,二阶导数无法提供关于支持向量z与 hinge 的接近程度的信息,因此的二次近似是线性的,这导致图片image.png高估了z的影响。


图片 image.png


那如何去解决这个问题呢?一个常见的的思想是找到一个平滑的函数去代替原先的hinge函数,我们用图片image.png函数来近似,并分别设置t=0.1和0.001来比较预测值与真实值的差异,结果如下图,在用SmoothHinge替代Hinge之后,预测结果好了很多。

图片 


  • Finding the ERM


我们的分析都是基于找到了一个全局最优解image.png图片,然而,在大多数情况下, 函数是非凸的,导致它不一定会收敛到全局最小值上。假如影响函数收敛到了局部最小值上面,应该如何处理呢?这里的核心思想是:从找到的局部最小值图片开始重新训练模型,分析影响函数与真实值之间的大小关系。

图片 

image.png


结果发现,尽管模型处于非收敛且非凸的困难设置下,但令人惊讶的是,预测的损失变化图片image.png和实际的损失变化仍然高度相关。这说明影响函数在实际复杂的训练场景中(如非凸优化和非收敛情况)具有一定的鲁棒性。


2. 反事实解释


在现实情境中,借贷公司常作出如下表述:“鉴于您的年收入仅为 30000 元,本公司将不予提供贷款;若您的年收入达 45000 元,本公司则会考虑放款。”此论述具有反事实属性,即探讨被观测个体应如何进行改变,以促使期望结果的达成。


反事实情形通常具有多元性特征。就该实例而言,欲使借贷公司的决策由拒绝转变为接受,并非仅能通过提升年收入这一途径实现,学历、住房面积、年龄等因素的变动亦可能产生相同效果。


我们也可以通过考虑反事实中主体属性的变化对决策的影响来评估算法是否公平。同样在这个例子中,假如我们发现一个反事实情况:如果一个少数族裔申请人的种族属性被改变为多数族裔(其他条件不变),其贷款申请就会被批准。那么,这个算法存在潜在的不公平性,因为它对种族这一变量存在明显的依赖。


在这个情形下,若年收入提升至 50000 元,无疑亦会致使决策发生改变。然而,在一般情形下,人们往往倾向于探寻达成模型决策改变所需的最小变动,即通过最易于实现的目标改变来影响目标值。 


Sandra Wachter首次提出了反事实解释,在他的理论中,我们需要在保证目标决策会改变的情况下最小化距离度量,则将该问题转化成了一个带约束的最小化问题,如下:

图片 

image.png


对于带约束的优化问题,常见的思路是将其转化成无约束优化问题来求解,因此,原式被转化为:

图片 

image.png


这个公式的目标是找到一个image.png图片,使得在最大化image.png图片的情况下,表达式图片image.png的值最小。表达式中的image.png图片部分通常用于衡量预测值image.png图片与目标值图片image.png之间的差异,并且通过image.png图片来调节这个差异的权重。image.png图片部分则用于衡量图片image.png与另一个数据点图片image.png之间的距离。 


其中,image.png图片的计算公式如下:

图片 

image.png


其中,分子为曼哈顿距离,分母为:

图片 

image.png


L1 范数加权逆中位数绝对偏差具有捕捉数据空间内在波动性、对异常值更稳健和诱导稀疏解等优点,使反事实解释更易于理解和传达。具体来说,如果一个特征在数据集中变化很大(即较大),那么在计算距离时,该特征的权重相对较小;反之,如果一个特征变化较小(较小),其权重相对较大。


在机器学习文献中,生成反事实解释的技术与 “对抗性扰动” 密切相关。对抗性扰动是指通过计算使现有分类器产生不同分类结果的合成数据点。反事实解释在尝试寻找一种改变,使得决策结果发生改变,这和对抗性扰动的思路是相似的。在当前对抗性扰动的相关研究中,针对距离函数的选取存在一定缺陷。具体而言,现有的对抗性扰动往往倾向于多变量出现小幅度变化的情况,而并非聚焦于生成那些稀疏的、便于人类理解的解决方案。然而,对于反事实解释来说,距离函数的选择起着至关重要的作用,因为不同的距离函数会引导出不一样的反事实解释结果。


回到上文提及的反事实情况:如果一个少数族裔申请人的种族属性被改变为多数族裔(其他条件不变),其贷款申请就会被批准。但是,人的种族是很难更改的,尽管两向量之间的距离相比于修改其他因素的值要小。同时,为了得到更可行的解释,我们在做扰动的时候,应该只在可行域内进行。


图片在BERK USTUN的研究中,用损失函数cost替代距离d,并且将扰动之后的向量图片约束在可行域范围内。即:


image.png


这个公式的目的是在因果可行的反事实集合A中,找到一个x’,使得它与x的成本(cost(x,x’))最小,同时满足f(x’)=y’,即经过函数f作用后得到目标值y’。


这里A是根据给定的结构因果模型(SCM)所允许的因果可行反事实的集合。


但是,如果我们无法获取结构因果模型会怎样?这意味着在实际操作中,如果没有结构因果模型A来确定反事实的可行性集合,那么上述的优化问题就无法直接求解。因为A是依赖于结构因果模型的,没有它就无法确定哪些反事实是因果可行的。


为解决这个问题,Sahil Verma提出构建变分自编码器来将输入实例映射到潜在空间,在潜在空间中搜索反事实之后,使用解码器将其映射回输入空间。数据在高维空间中往往集中在一个低维流形上,反事实也应该在这个数据所在的流形上才有意义。与此同时,在潜在空间中进行搜索可能更容易,因为潜在空间通常具有更低的维度,且数据在潜在空间中的分布可能更规则。在找到潜在空间中的反事实后,需要通过解码器将其转换回原始的数据输入空间,这样就能得到在原始数据空间中有意义的反事实。


不妨看下面这张图:

图片 


对蓝色的点X进行反事实操作,即使红色的点CF1与X更近,然而由于它不处于数据流型之中,模型会更倾向于用绿色的点CF2来进行解释。


在CNN内部,基于原型层的事后解释和反事实解释是两种基本的解释方法,在后续文章中将进一步详细解读机器学习模型的可解释性。


编辑:于腾凯
校对:林亦霖




欢迎大家扫码加入粉丝群(任选其一即可)




图片


欢迎在评论区留言与本文作者互动交流!



作者简介

宋雨婷,苏州大学,未来科学与工程学院数据科学与大数据技术专业在读,对可解释性机器学习、计算机视觉等领域感兴趣。

数据派研究部介绍




数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:


算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。


点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~



转载须知


如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。





关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。




新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织


平衡可解释性和公平性确实是个难题。我觉得关键在于设计目标函数的时候要考虑到公平性约束。比如,在计算反事实解释时,可以加入一个惩罚项,对那些涉及敏感属性(如种族、性别等)的变动进行惩罚。这样模型在寻找最佳的反事实解释时,就会尽量避免修改敏感属性,从而减少不公平建议的产生。不过,具体怎么设计这个惩罚项需要根据实际情况来调整,太严厉可能会影响模型性能,太宽松又起不到作用。

我觉得除了模型本身,更重要的是对反事实解释进行评估。比如,可以让人工专家来判断生成的解释是否合理、是否符合逻辑。还可以设计一些自动化指标,比如,计算生成样本与原始样本之间的距离,或者评估生成样本对模型预测结果的影响。只有经过充分的评估,才能确定生成的反事实解释是否真的有效。

从学术角度来看,可以使用因果推理的方法来识别和消除模型中的偏差。例如,可以使用do-算子来干预模型,观察改变敏感属性对预测结果的影响。此外,还可以使用对抗训练的方法来提高模型的鲁棒性,使其不易受到敏感属性的影响。从技术层面讲,保证训练数据的质量也很重要,需要对数据进行预处理,纠正数据中的偏差。

其实我觉得可以结合实际业务场景来考虑。如果目标是找出对特定类型预测影响最大的样本,可以先根据业务知识筛选一部分“嫌疑”样本,再计算这些样本的影响函数。比如,在风控模型中,如果想找出导致高风险用户被错误分类的样本,可以先筛选出与该用户特征相似的历史样本,再计算它们的影响函数。这样能大大缩小搜索范围,提高效率。

影响函数虽然理论上很棒,直接计算所有训练样本的影响还是太耗资源了。我觉得可以考虑先用聚类算法对训练集进行降维,找出最具代表性的样本,然后只计算这些代表性样本的影响函数。这样能大大减少计算量,同时也能抓住关键的影响因素。当然,聚类本身也需要时间,所以选择合适的聚类算法也很重要,比如K-means或者Mini-Batch K-means这种速度比较快的。

用自编码器在潜在空间找反事实,我觉得最大的优势就是能保证生成的数据点更“自然”。毕竟,直接在原始空间搜索,很容易找到一些Out-of-Distribution的点,解释起来就很牵强。但是,自编码器的局限性也很明显,就是它的效果很大程度上取决于训练数据的质量和自编码器的结构。如果数据本身就有很多噪音,或者自编码器没训好,那生成的反事实解释可能也不靠谱。我觉得选择自编码器结构的时候,可以考虑VAE,因为它能生成连续的潜在空间,方便搜索。损失函数的话,除了重构误差,还可以加一些正则化项,让潜在空间更平滑。

我觉得应该多听取领域专家的意见。毕竟,哪些属性是敏感的、哪些变动是可行的,这些都涉及到伦理和法律问题,不是算法工程师能单独决定的。而且,在向用户展示反事实解释时,也要注意措辞,避免给用户造成误导或歧视。比如,可以强调这些解释仅仅是模型的一种假设,并不代表用户的实际情况。

从学术角度分析,选择自编码器结构时,需要考虑模型的表达能力和泛化能力之间的平衡。过强的表达能力可能导致模型记住训练数据中的噪声,从而影响生成反事实解释的质量。可以尝试使用一些先进的自编码器结构,例如,变分自编码器(VAE)或对抗自编码器(AAE),这些模型能够在潜在空间中学习到更加结构化的表示。在选择损失函数时,可以尝试使用一些能够提高生成样本质量的指标,例如,FID(Fréchet Inception Distance)或Kernel Inception Distance(KID)。

从学术角度讲,可以使用随机梯度下降(SGD)的变体来近似计算Hessian矩阵的逆,避免直接计算海森矩阵。还可以考虑使用更高效的近似方法,例如,随机选择一部分训练样本来估计影响函数,或者使用一些基于梯度的优化技巧来加速计算过程。 此外,还可以考虑使用一些并行计算框架,例如,在GPU上进行计算,从而加速影响函数的计算过程。