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

1、前言网络



关于NLP模型可解释性的方法有不少种,有一些须要深刻到模型内部,透视出参数的传递过程,咱们能够将其归类为“白盒方法”。
而有一些方法,则不须要模型内部的参数,是经过输入和输出的关系,来“猜想”模型可能的推理过程,咱们能够将其归类为“黑盒方法”。
两种类型的方法具备各自的优缺点和不一样的目标。“白盒方法”因为其透视模型内部的结构和参数传递过程,其目的是为了解释出模型“真正的”推理过程。
然而,不少白盒方法仅限于特定的模型,且当模型内部参数不可得到时,这些方法就不适用。“黑盒方法”因为不知道模型内部的参数,所以没法解释模型真正的推理过程。
这种方法更多的是“猜想”模型的推理过程,而且能够对模型的能力进行解释。相比之下,“黑盒方法”在业务场景中,能更快的落地并发挥出价值。
本文分别介绍了三种常见的“白盒方法”和三种“黑盒方法”。“白盒方法”包括神经元分析、诊断分类器、Attention。“黑盒方法”包括“对抗数据集”、“Rationales”、“局部代理模型”。
并发

2、神经元分析app



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的数值大小,绿色表示正向情感,红色表示负向情感。

笔者认为,神经元的可视化能够很客观的体现模型推理的过程。然而,这种方法也存在一些问题。
其一,并不是全部的神经元可视化出来都能让人发现规律。大多数神经元看起来都是没有规律的。所以,可视化的方法须要人为判断它可能表示哪些信息,这并不具备广泛性。
其二,可视化的方法虽然能够直观看出神经元的功能,可是却没法经过一个量化指标来评判。其三,这种方法具有不少不肯定性,在业务场景中很难发挥价值。


3、诊断分类器ide



经过可视化的方法有时很难看出一个向量包含什么样的信息。所以咱们能够换一个思路。即:若是一个向量包含某个信息,那么它就有能力去作须要这个信息的任务。
所以,另外一个经常使用的方法是:对于模型内部的一个向量,咱们能够训练一个简单的模型(一般是线性分类器)去预测一些特征(一般是一些语言学特征)。用这种方法,咱们就能够知道,在模型内部的每一层究竟学到了什么。
2019年,Google的研究员用这种方法对Bert进行了分析。他们将Bert每一层输出的embedding提取出来,在8个任务上用诊断分类器进行试验。
实验代表,Bert在它的transormer层中,进行了传统NLP的pipeline(pos tagging, 指代消解等)的任务。
同时还代表,这些pipeline中的细分任务能够动态调整本身以得到更好的表现。下图展现了完成这些任务所须要信息在哪一层的指望值,以及这些层的“重心”在哪里。

从结果能够看出,对于一些底层的任务(例如pos tagging,实体识别等),会在较低层就得到了须要的信息,而对于一些复杂任务(例如指代消解)则在较高层才能得到须要的信息。这和咱们的预期相符合。
笔者认为,诊断分类器这种方法能够较为简单地对模型的训练过程进行剖析,而且更适合于深层模型。
同时,这对于模型的优化能起到启发做用。2020年Jo & Myaeng的ACL文章指出,在使用Bert时,若选择中间层的一些embedding和最后一层的embedding一块儿进行任务,比仅仅用最后一层可以取得更好的效果。


4、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的可解释性如何应用在模型优化上,还须要更多的思考。


5、Rationals测试



Rationals能够认为是作一项任务的"Supporting evidence", 能够理解为“关键词”组合。
2019年,DeYoung等人提出一个benchmark,叫作ERASER(Evaluating Rationals and Simple English Reasoning). 
他们认为,人们在进行NLP相关任务时,会重点关注一些“关键词”。将输入文本的部分词语抹去,会致使任务的置信度降低甚至失败。而使得任务置信度降低最大的关键词组合,就能够认为是模型认为的“关键词”。
他们提出了7个任务的数据集,其中包含了人为标注的“关键词”。经过判断模型认为的“关键词”和人工标注的“关键词”之间的关系,就能够判断出模型是否在用人们认为的关键信息进行任务。
以下图所示,第一个图展现了4个任务的人为标注的“关键词”,第二张图展现了判别模型认为的“关键词”的方法。

笔者认为,这种方法虽然不能解释出模型的推理过程,可是能够探究出对模型而言的关键词有哪些。 而且,这种方法适用于全部的模型。
此外,这种方法的成本在于人为标注“关键词”,而做为评测的数据集,并不须要大量的数据,且能够重复利用。所以,这种方法在模型质量保证方面,能够较好的落地。


6、对抗数据集优化




将数据进行一些微小的改变,根据这些扰动是否会对模型结果形成干扰,能够分析出模型的推理过程。
例如,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的方法,具备较低的成本,而且可以较为完善的构造对抗数据集。
虽然其没法解释出模型的推理过程,可是它能够解释出模型是“怎样看数据”的。即,哪些类型的数据扰动会对模型产生较大的影响,模型更关注哪些类型的扰动信息等等。这在实际业务场景中,能够做为模型鲁棒性保证的方法。目前咱们也已经尝试用这种方法进行模型评测。
ui

7、局部代理模型 lua



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

相关文章
相关标签/搜索