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

一、前言



关于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进行细分任务也可以取得较为不错的效果。
让我如何相信你 -- NLP模型可解释性的6种常用方法
然而,对于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)和方向性。并且提出了一个工具能够快速生成大量的测试数据。
让我如何相信你 -- NLP模型可解释性的6种常用方法
笔者认为,这种checklist的方法,具有较低的成本,并且能够较为完善的构造对抗数据集。
虽然其无法解释出模型的推理过程,但是它可以解释出模型是“怎样看数据”的。即,哪些类型的数据扰动会对模型产生较大的影响,模型更关注哪些类型的扰动信息等等。这在实际业务场景中,可以作为模型鲁棒性保证的方法。目前我们也已经尝试用这种方法进行模型评测。

七、局部代理模型 



局部代理模型是一种“事后分析”的方法。它可以适用于所有的模型。它的基本思想是,用一些可解释的模型,去局部拟合不可解释的黑盒模型,使得模型结果具有一定的可解释性。
2016年,Ribeiro等人提出了LIME方法。对于每一条数据,对其进行微小的扰动,生成一个数据子集,并且得到模型对于这个子集中的数据的预测结果。然后,用可解释的模型(例如线性回归),对这个子集中的结果进行拟合,以此就可以局部解释这条数据的结果。
让我如何相信你 -- NLP模型可解释性的6种常用方法
类似的方法还有SHAP。然而,这种方法得到的解释并不具有鲁棒性。
因为我们认为,微小的调整并不会对结果造成很大的影响,而这对于局部代理模型而言并不总是成立。并且,如果训练数据和测试数据的分布不同,局部代理模型的结果就不可信。
Rahnama等人的研究《A study of data and label shift in the LIME framework》就提出了这一点。
他们通过实验发现,通过LIME的扰动过程得到的数据和训练数据的分布有较大的差异。此外,LIME的解释很大程度上依赖于超参数的选择。例如,应该选择多少个扰动数据点?如何设置这些点的权重?正则化的强度需要多少?
笔者认为,局部代理模型虽然能够对所有模型进行解释,但这个解释并不能反映模型的推理过程,而是“人们认为的模型推理过程”。在业务场景中,对于决策支持的模型(例如智能投顾)也许有效,但是这种方法的faithfulness仍然值得讨论和研究。


上一篇:第六周:论文泛读(一)


下一篇:【论文阅读】Joint_Self-Attention_and_Multi-Embeddings_for_Chinese_Named_Entity_Recognition[BigCom2020]