让我如何相信你 -- NLP模型可解释性的6种常用方法

导语 | 深度学习是黑盒模型。虽然它能在一些任务上表现得十分出色,但是人们却无法理解它是如何做出的决策。近年来,越来越多的研究者对于如何解释深度学习的推理过程产生了很大的兴趣,模型的可解释性方法也成为了学术界研究的热点。2020年ACL就新增了一个“可解释性和模型分析”的通道。本文总结梳理了一些NLP领域可解释性方法,以及对于如何将可解释性落地应用在实际业务中,提出一些笔者的拙见。文章作者:许元博、周磊,腾讯CSIG质量部评测研究员。

一、前言

关于NLP模型可解释性的方法有很多种,有一些需要深入到模型内部,透视出参数的传递过程,我们可以将其归类为“白盒方法”。

而有一些方法,则不需要模型内部的参数,是通过输入和输出的关系,来“猜测”模型可能的推理过程,我们可以将其归类为“黑盒方法”。

两种类型的方法具有各自的优缺点和不同的目标。“白盒方法”由于其透视模型内部的结构和参数传递过程,其目的是为了解释出模型“真正的”推理过程。

然而,很多白盒方法仅限于特定的模型,且当模型内部参数不可获得时,这些方法就不适用。“黑盒方法”由于不知道模型内部的参数,因此无法解释模型真正的推理过程。

这种方法更多的是“猜测”模型的推理过程,并且可以对模型的能力进行解释。相比之下,“黑盒方法”在业务场景中,能更快的落地并发挥出价值。

本文分别介绍了三种常见的“白盒方法”和三种“黑盒方法”。“白盒方法”包括神经元分析、诊断分类器、Attention。“黑盒方法”包括“对抗数据集”、“Rationales”、“局部代理模型”。

二、神经元分析

2015年,斯坦福大学Karpathy & Johnson对比了不同的循环神经网络,并且将LSTM的不同的memory cells 的值按照charactor可视化出来,有一些有趣的发现。 

他们发现,在LSTM中, 不同的memory cells有着不同的功能。有的cell可以判断句子是否是在引号内,有的cell可以判断句子的长度。如果输入的是代码文本,则有的cell可以判断是否是if语句或注释,有的cell可以判断缩进量。

同时,他们分析了forget gate, in gate和out gate的开关情况,若gate值低于0.1则认为是“左饱和”,若gate值高于0.9则认为是“右饱和”。他们发现,在forget gate中,存在“右饱和”的gate去记录远距离的信息,而在output gate中,则不存在连续饱和的gate。这个发现与LSTM的特性吻合。

2017年,OpenAI的研究者们发现,在循环神经网络中,存在一个对于情感十分敏感的神经元。

他们证明了这个神经元的数值对于情感分类任务十分重要。并且,如果仅仅用这个神经元进行情感分类,也可以取得非常好的效果。下图展示了该神经元在charactor level的数值大小,绿色表示正向情感,红色表示负向情感。

笔者认为,神经元的可视化可以很客观的体现模型推理的过程。然而,这种方法也存在一些问题。

其一,并非所有的神经元可视化出来都能让人发现规律。大多数神经元看起来都是没有规律的。因此,可视化的方法需要人为判断它可能表示哪些信息,这并不具有普遍性。

其二,可视化的方法虽然可以直观看出神经元的功能,但是却无法通过一个量化指标来评判。其三,这种方法具备很多不确定性,在业务场景中很难发挥价值。


三、诊断分类器

通过可视化的方法有时很难看出一个向量包含什么样的信息。因此我们可以换一个思路。即:如果一个向量包含某个信息,那么它就有能力去做需要这个信息的任务。

因此,另一个常用的方法是:对于模型内部的一个向量,我们可以训练一个简单的模型(通常是线性分类器)去预测一些特征(通常是一些语言学特征)。用这种方法,我们就可以知道,在模型内部的每一层究竟学到了什么。

2019年,Google的研究员用这种方法对Bert进行了分析。他们将Bert每一层输出的embedding提取出来,在8个任务上用诊断分类器进行试验。

实验表明,Bert在它的transormer层中,进行了传统NLP的pipeline(pos tagging, 指代消解等)的任务。

同时还表明,这些pipeline中的细分任务可以动态调整自己以获得更好的表现。下图展示了完成这些任务所需要信息在哪一层的期望值,以及这些层的“重心”在哪里。

从结果可以看出,对于一些底层的任务(例如pos tagging,实体识别等),会在较低层就获得了需要的信息,而对于一些复杂任务(例如指代消解)则在较高层才能获得需要的信息。这和我们的预期相符合。

笔者认为,诊断分类器这种方法可以较为简单地对模型的训练过程进行剖析,并且更适合于深层模型。

同时,这对于模型的优化能起到启发作用。2020年Jo & Myaeng的ACL文章指出,在使用Bert时,若选择中间层的一些embedding和最后一层的embedding一起进行任务,比仅仅用最后一层能够取得更好的效果。


四、Attention

由于Attention本身的特点,词与词之间会有一个权重,这个权重也许能够表达出模型的推理过程。

2019年,斯坦福大学和facebook的研究人员对Bert中的attention的head进行分析,发现不同的head会提取到不同的信息,且直接用head进行细分任务也可以取得较为不错的效果。

然而,对于attention是否能够表示模型的推理过程,还存在很多的争议。

同样在2019年,Jain & Wallance的文章《Attention is not explaination》,指出attention和gradient-based分析方法得出的结论不同,且不同的attention weight可以导致相同的预测。

因此主张attention和输出结果没有直接的联系。而Wiegreffe & Pinter 的文章《Attention is not not explaination》反驳了J&W的观点,认为其实验设计不充分,不能证明其结论。

2020年的ACL文章中,关于attention的讨论依旧是热点。Abnar & Zuidema提出一种可以使attention更加具有解释性的方法。

由于在第一层Transformer之后,不同token的信息被混合了起来,因此他们提出一种rollout的方法可以将混合的信息抽离出来。

Sen 等人提出,将模型的attention和人为标注的attention进行比对,并提出计算二者相似程度的方法。而Pruthi等人认为,基于attention的解释不具有可靠性,因为可以通过人为操纵的方法使人人为模型是无偏的,而事实却并非如此。

笔者认为,attention自带可解释的特性,相较于其他模型有着天然的优势。而如何运用attention进行解释,还需要更多的研究。并且,这种方法局限在模型本身,并不适用于其他的模型。此外,有关attention的可解释性如何应用在模型优化上,还需要更多的思考。


五、Rationals

Rationals可以认为是做一项任务的"Supporting evidence", 可以理解为“关键词”组合。

2019年,DeYoung等人提出一个benchmark,叫做ERASER(Evaluating Rationals and Simple English Reasoning). 

他们认为,人们在进行NLP相关任务时,会重点关注一些“关键词”。将输入文本的部分词语抹去,会导致任务的置信度下降甚至失败。而使得任务置信度下降最大的关键词组合,就可以认为是模型认为的“关键词”。

他们提出了7个任务的数据集,其中包含了人为标注的“关键词”。通过判断模型认为的“关键词”和人工标注的“关键词”之间的关系,就可以判断出模型是否在用人们认为的关键信息进行任务。

如下图所示,第一个图展示了4个任务的人为标注的“关键词”,第二张图展示了判别模型认为的“关键词”的方法。

笔者认为,这种方法虽然不能解释出模型的推理过程,但是可以探究出对模型而言的关键词有哪些。并且,这种方法适用于所有的模型。

此外,这种方法的成本在于人为标注“关键词”,而作为评测的数据集,并不需要大量的数据,且可以重复利用。因此,这种方法在模型质量保证方面,可以较好的落地。


六、对抗数据集


将数据进行一些微小的改变,根据这些扰动是否会对模型结果造成干扰,可以分析出模型的推理过程。

例如,2019年,Niven & Kao在Bert进行推理任务的数据集中,加入了not,导致Bert的推理能力直线下降到盲猜水平。由此可以看出,Bert在进行推理时,是将not作为一个明显的“线索”。若将这个线索改变,模型的能力就会大幅下降。

然而,对抗数据集的构造比较有难度,在某些任务中,需要大量语言学知识。因此,对抗数据集的构造成本很高。

2020年ACL最佳论文《Beyond Accuracy: Behavioral Testing of NLP Models with CheckList》提出了一套NLP模型诊断的方法。

他们提出一个常用语言学特征的capabilities和test types的矩阵,可以帮助较为完善的构造测试数据集。他们根据软件测试的方法,提出了三个capabilities, 即,最小单元(MFT)、不变性(INV)和方向性。并且提出了一个工具能够快速生成大量的测试数据。

笔者认为,这种checklist的方法,具有较低的成本,并且能够较为完善的构造对抗数据集。

虽然其无法解释出模型的推理过程,但是它可以解释出模型是“怎样看数据”的。即,哪些类型的数据扰动会对模型产生较大的影响,模型更关注哪些类型的扰动信息等等。这在实际业务场景中,可以作为模型鲁棒性保证的方法。目前我们也已经尝试用这种方法进行模型评测。

七、局部代理模型 


局部代理模型是一种“事后分析”的方法。它可以适用于所有的模型。它的基本思想是,用一些可解释的模型,去局部拟合不可解释的黑盒模型,使得模型结果具有一定的可解释性。

2016年,Ribeiro等人提出了LIME方法。对于每一条数据,对其进行微小的扰动,生成一个数据子集,并且得到模型对于这个子集中的数据的预测结果。然后,用可解释的模型(例如线性回归),对这个子集中的结果进行拟合,以此就可以局部解释这条数据的结果。

类似的方法还有SHAP。然而,这种方法得到的解释并不具有鲁棒性。

因为我们认为,微小的调整并不会对结果造成很大的影响,而这对于局部代理模型而言并不总是成立。并且,如果训练数据和测试数据的分布不同,局部代理模型的结果就不可信。

Rahnama等人的研究《A study of data and label shift in the LIME framework》就提出了这一点。

他们通过实验发现,通过LIME的扰动过程得到的数据和训练数据的分布有较大的差异。此外,LIME的解释很大程度上依赖于超参数的选择。例如,应该选择多少个扰动数据点?如何设置这些点的权重?正则化的强度需要多少?

笔者认为,局部代理模型虽然能够对所有模型进行解释,但这个解释并不能反映模型的推理过程,而是“人们认为的模型推理过程”。在业务场景中,对于决策支持的模型(例如智能投顾)也许有效,但是这种方法的faithfulness仍然值得讨论和研究。

参考资料:

[1]  Visualizing and Understanding Recurrent Networks:

https://arxiv.org/pdf/1506.02078.pdf

[2] Learning to Generate Reviews and Discovering Sentiment:

https://arxiv.org/pdf/1704.01444.pdf

[3] BERT Rediscovers the Classical NLP Pipeline:

https://www.aclweb.org/anthology/P19-1452.pdf

沙龙预告

今晚20:00,腾讯云高级工程师钟华、苗艳强,两位将联袂出席云加社区沙龙直播间,分享腾讯云服务网格的架构演进,扫描海报二维码或者点击文末「阅读原文」,即可预约观看今晚直播~

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值