新智元推荐
来源:数据实战派
作者:Keyur Faldu等
【新智元导读】本文由两位数据科学家 Keyur Faldu 和 Amit Sheth 所撰写,详细阐述了现代自然语言处理的兴起以及可解释性的必要,并结合对当前技术状况的调查,以更好地回答由 NLP 模型所引发的语言智慧相关的一些开放性问题。
在正式开篇前,先来了解下 “可解释性” 这个概念。
事实上,可解释性并没有数学上的严格定义,可以简单理解其为人们能够理解模型决策原因的程度。换句话说,对机器学习模型来说,它的可解释性越高,人们就越容易理解它为什么做出某些决策或预测。
英文中有两个词 “interpretable” 和 “explainable”,可以用来表达可解释性这个概念,但那是否完全一致呢?
在 NLP 兴起的时候,两个词默认同一个意思(即,解释模型的行为),可以交替使用。随着 NLP 的发展,两个名词渐渐出现了细微的差别。
其中,“interpretable” 可以理解为,使本就透明的白盒通俗易懂,所有经验水平的用户都可以明白模型的含义,偏重于理解;而 “explainable”,则强调研究者对于黑盒模型的行为作出人们所能理解的解释,更偏重于深层的解释。
厘清这两个概念后下面切入正题,本文是先前发表的名为“ Discovering the Encoded Linguistic Knowledge in NLP models” 文章的延续,之前的文章讨论了什么是 “探针”(Probes)、它与多任务学习的区别,以及两种类型的探针 基于表征的探针和基于注意力权重的探针。
本文将会提出更有趣的深层次问题,在先前工作的基础上,进一步揭示探针任务(或辅助任务)是如何用于评估 NLP 模型在其他初级任务训练上的语言能力的,旨在帮助大家深入了解 NLP 模型中编码的语言知识(Linguistic Knowledge)究竟是什么。
探针对语言任务的性能预测,或用于关联或比较神经网络和语言现象的支持模式,提供了对编码语言知识的内容和方式的独特见解。对于性能预测的指标,可以是分类准确性,相关系数或预测金标的平均倒数排名(MRR, Mean Reciprocal Rank)。
需要注意的是,模型在探针任务上的性能预测,可以与专为这类任务设计的、经过明确训练的模型的最新技术性能进行比较,以了解编码语言知识的程度。
当然,还有其他方面需要深入分析,例如:
更大的模型能够更好的编码语言知识吗?模型所捕获的语言知识在复杂性方面(维度大小,参数数量)如何变化?探索不同复杂度模型在辅助任务上的分类器性能,可以对此问题作出解释。
如何评估模型对语言知识进行编码的泛化能力?探针在编码语言知识上的成功可看作模型测试复杂数据时泛化能力的标志。例如,如果训练数据通常将 “主要助动词” 作为第一个动词,而广义的数据故意包含干扰因素,则 “主要助动词” 不再是第一个动词如何处理?在这种情况下,如果探针可以检测到 “主要助动词”,则可以将其归因于诸如语法解析树之类的语言特征,而非顺序位置特征。
我们可以解码语言知识,而不是依赖于浅层探针分类器标签吗?在探索解码语言知识的能力中发现,与解码或构建语言知识的任务相比,分类任务的复杂性相对较低,那能否使用内部表示构建一个完整的依存解析树呢?或许寻找恢复潜在语言知识的方法将会是一种非常有趣的体验。
探针的局限性是什么?当探针能够很好地完成辅助语言任务时,是由于某种相关性,还是有因果关系?考虑到深层而复杂的探针模型也具有记忆能力,很可能会导致过拟合现象。那么,如何验证探针所表达的语言知识的来源呢?可以尝试以下方案,在设计 “控制任务” 时,将探针的预测性能与控制任务的性能进行比较,便于揭秘探针的有效性和语言知识的来源。
我们可以注入语言知识吗?如果神经网络模型在训练端到端任务的过程中学习语言知识,那么,是否可以考虑注入语言知识(即语法解析树)来提高性能呢?
编码的语言知识是否捕获含义?语言知识,诸如词性标注,依存树等,本质上是句法层面上的。实际应用程序希望 NLP 模型能够理解语义。因此,评估模型编码语义含义的能力依旧至关重要。
带着以上问题,让我们更深入地研究与这些主题相关的研究论文都揭示了什么。
图 1 BERT 模型上的探针说明图
模型越大,效果越好?
早期正式探讨探索编码语言知识问题的研究中,有一篇题为 “Fine-Grained Analysis of Sentence Embeddings using Auxiliary Prediction Tasks” 的论文。该论文旨在更好地理解编码语言的句子表征。
文中,三个与句子结构相关的辅助任务考虑如下:
句子长度(Sentence length):句子嵌入是否在句子长度上编码信息?
单词内容(Word-content):是否可以根据句子嵌入来预测句子中是否包含某个单词?
单词顺序(Word-order)。给定句子嵌入和两个单词,能否确定两个单词的顺序?
这些探针基于句子嵌入,而该句子嵌入是由编码器 - 解码器模型和连续词袋模型(CBOW, Continuous Bag-of-Words Model)产生的最终表示的平均值来计算的。该论文的主要发现是 大的模型可以更好地对语言知识进行编码。
如下所示:
图 2 图片出处:ICLR 2017
一方面,增加维度会使某些任务的执行效果更好。如图 2 所示,(a)长度和 顺序测试获得了更大维度表示的效果提升,而内容测试在 750d 时达到峰值。
另一方面,CBOW 模型相比于编码器 - 解码器模型,参数要少得多,维度越小,在 “单词内容” 任务中也能表现得越好。
泛化能力
在泛化数据上测试模型以验证其学习的程度,不失为一种好的选择策略。而且经过精心设计的复杂泛化数据可以测试 NLP 模型学习语言智慧的极限。显而易见,模型在如此复杂的数据上进行泛化,其真正的语言能力将会呈现的淋漓尽致,而不再仅仅局限于记忆表面的模式。
Lin 等人在另一篇论文 “Open Sesame: Getting Inside BERT’s Linguistic Knowledge” 中,也进行了此类实验。
图 3 图片出处:ACL 2019
图 3 显示了对于压力测试模型编码的语言知识,泛化数据是如何包含故意干扰因素的。
“主要辅助任务” 用于识别句子中的主要助动词。一般而言,训练和验证数据集会把包含的 “主要助动词” 作为句子的第一个动词,而泛化数据集则将其 “藏匿” 在句子的更深处。
同样地,“主语名词任务” 用于识别句子中充当主语的名词,这是训练和验证数据集中的第一个名词,但在泛化集中对其进行了修改。
图 4 图片出处:ACL 2019
以训练集中的句子为例,“the cat will sleep” 中的主要助动词是 “will”。相比上个句子,“The can that can meow will sleep” 则算得上是复杂的概括性的句子了,若要对这句话分析,很容易发现句中存在干扰词 “can”,因此,很难预测主要助动词是 “ will”。
图 4(左)中的探针性能显示,BERT 层对语言信息进行了编码,能够很好地检测出泛化数据中的 “主要助动词”。
图 5 图片出处:ACL 2019
图 6 图片出处:ACL 2019
类似地,对 “主语名词” 任务的渐进式数据集进行泛化同样是一项相对困难的任务。不过,值得庆幸的是,随着连续层中探测分类器性能的提高,可以注意到编码语言信息的增加。
文中进一步研究了该模型的注意力机制及其对这些干扰因素的敏感程度。它提出了 “混淆分数(Confusion score)”,即候选令牌对目标令牌的关注度的二进制交叉熵。
下面的情况将观察下当干扰因素的复杂度降低时,混淆度是如何下降的:当 A1 的混乱度从 0.97 下降到 0.93,因为 A2 中的干扰项 “the dog” 相对较容易捕获,它与动词 “dose” 的奇异点不匹配。
同样,A3 中的混乱度也从 0.85 下降到了 A4 的 0.81。由于增加了关系从句,A1 的混乱度从 0.97 下降到 A3 的 0.85(和 A2,A4 的情况类似),这可能会更好地识别层次句法结构。
语言知识的解码能力
由于分类器探针的复杂度相对较低,因此研究是否可以整体解码编码的语言知识是很有趣的一个问题。比方说,我们能否完全依靠编码表示来构建依存解析树呢?
图 7 图片出处:NAACL 2019
Hewitt 和 Manning 在论文 A Structural Probe for Finding Syntax in Word Representations 中提出了 “结构性探针” 的概念,从经验上来说,将内部表示的空间转换为语言知识的空间是可能实现的。探针识别一种线性变换,在这个变换下,变换表示的 L2 平方距离编码解析树中单词之间的距离,而变换表示的 L2 平方范数编码解析树中的深度。
由此,我们可以得知,语言知识是逐层地从模型中学习,在顶层逐渐消失的,因为这些层更趋向于主要的目标函数。
本文还研究了转换空间维度的增加是否有助于表达语言知识,实验表明,解析依赖树的语言知识可以用约 32 或 64 个维度来表示,除此之外,增加维度并不会带来更多的价值效应。
图 8 图片出处:NAACL 2019
语言知识的局限和来源
监督模型 “训练有素” 的探针,其预测语言属性的功能已经在一系列的语言任务中取得了很高的准确性。
但这是否意味着这些表示形式对语言结构进行了编码,还是仅仅是探针学习了语言任务?可以使用语言任务准确性来有意义地比较模型各层的语言属性吗?一个足够深层次的探针模型可以记忆语言信息。那么我们如何解决这个限制呢?
Hewitt 和 Liang 在 “Designing and Interpreting Probes with Control Tasks” 一文中提出了 “选择度(Selectivity)” 的概念作为衡量探针有效性的一种方法。
控制任务旨在了解探测器如何学习与编码表示形式无关的语言信息,其中选择度定义为语言任务准确性和控制任务准确性之间的差异。
图 9 图片出处:EMNLP-2019
从图 9 可以看出,词性预测的控制任务将为某组单词单独分配某种单词类型(或标识),并且根据单词类型预测词性标注(完全忽略编码表示)。
因此,如果一个深层次的探针具有记忆功能,那么它也应该能够很好地执行控制任务。
图中清晰的显示了用于词性辅助任务及其控制任务的探针模型的复杂性和准确性,由此,选择具有高选择度和高精度的探针对得出结论是至关重要的。
图 10 图片出处:ICLR 2017
Adi 等人在 “Fine-Grained Analysis of Sentence Embeddings using Auxiliary Prediction Tasks” 一文中研究了句子结构知识的来源。尽管 CBOW 模型忽略了周围的上下文,但探针能够在辅助任务上提供较高的准确性以预测句子的长度。
但是,我们发现仅仅是句子嵌入向量的范数就表征了句子的长度(图 10(右)),所以信息的来源并非来自标记的编码表示形式。
然而,将这些表示形式进行汇总时,范数趋向于 0,这是由中心极限定理和霍夫丁不等式(Hoeffding‘s inequality)确定的。
在图 10(左)中可以注意到,合成句子(随机选择单词组成合成句子)的长度预测精度也接近合法句子。所以,决定句子长度的实际知识来源只是随机变量集合的统计性质。
因此,这需要进行更深入的研究和分析,以从探测结果中得出推论。
注入语言知识
上文已经研究了用于分析编码语言知识的探针的技术,接下来的问题是,可以为预期的结果注入明确的语言知识吗?
有一个关于释义生成(paraphrase generation)的令人兴奋的研究 Syntax-guided Controlled Generation of Paraphrases。Kumar 等人已经证明,如何利用示例句的语法来释义源句。生成的释义词应保留源句意思,但语法和句子结构应与示例句相似。
图 11 图片出处:TACL 2020
图 11 显示了在不同示例语句的语法指导下生成的释义。我们可以仔细的观察并探究该模型是如何从示例句子的语法中获得指导的。
请注意,只有示例句的语法是作为输入给出的,实际的单个标记则不会输入到模型。可以在不同的高度 H 处提取示例句的语法树,并将其作为编码器 - 解码器模型的输入。
由此,我们得出如下结论:高度越小,释义灵活性就越大,而高度越高,就越能显式地控制释义的句法结构。
图 12 图片出处:TACL 2020
编码语言知识能否捕获其含义?
编码的语言知识对于理解自然语言的意义至关重要,现在大多数探针都涉及句法语言知识。我们需要开发框架来评估像 BERT 这样的 NLP 模型的功能,机器阅读理解、文本相似度、问答系统、神经机器翻译等应用示例表明,模型的真正性能是以其编码语义的能力为基础的。
开发诸如 GLUE(General Language Understanding Evaluation)和 SuperGLUE 之类的基准,可以用来评估经过微调的 NLP 模型执行自然语言理解任务的能力。通常,将 NLP 模型的性能与验证准确性的结果进行比较。需要注意,使用验证准确性存在固有的局限性,例如过拟合,验证集的数据分布不同等均可能干扰正确的判断。
而在 ACL 2020 年的 Best Paper 论文 “Beyond Accuracy: Behavioral Testing of NLP Models with CheckList” 中,作者提出了一个框架,一种新的 NLP 模型评测方法:CHECKLIST。
CHECKLIST 借鉴了传统软件工程的测试准则,通过模板快速生成大量样例,全面测试模型的各种能力,可以用于几乎所有 NLP 任务。(附:作者提供了开源工具用于生成测试样例:https://github.com/marcotcr/checklist)
CHECKLIST 建议使用三种不同的测试方法:
最小功能测试(MFT, Minimum Functionality Tests),其中使用预期的金标生成示例;
不变性测试(INV, INVariance Tests),其中从给定的示例中,创建新示例,其中金标被翻转;
方向预期测试(DIR, Directional Expectation Tests)对原始句子进行修改,金标往期望的方向(正向 / 负向)变化。
作者建议对于 NLP 模型的每一种能力,都尽量采用这三种测试方法测试一遍。
示例如下:
图 13 图片出处:ACL 2020
令人惊讶地是,尽管像 Roberta 和 BERT 这样的模型超过了人类基线(准确度分别为 91.1%和 91.3%),但在基于验证数据集的简单规则泛化上却 “一塌糊涂”。也就是说,要实现人类水平的自然语言理解,仍任重道远。
最后,通过评估探针对 NLP 模型中的编码语言知识,我们总结了以下几点:
NLP 模型确实可以对语言知识进行编码,以解决某些下游 NLP 任务。
较大的模型或表示形式不一定更好编码语言知识。
为句法任务编码的语言知识可以泛化到具有复杂句子结构的测试数据,这归因于模型对语言语法的编码能力。
较深层次的探针可能会过度拟合并潜在地记忆辅助任务,从而导致我们对编码语言知识的估计过高,得出误判,所以,建议设计探针的控制任务。
提供语言知识后,模型可以更好地完成从此类知识中寻求指导的任务。
句法语言知识不足以捕捉自然语言理解的含义,甚至目前最前沿的模型离实现 NLP 任务所需的理解也尚有差距。
总而言之,编码的语言知识本质上主要是语法上的,正如 “CHECKLIST” 所证实的那样,模型在语义的泛化上基本是失败的,最先进的 NLP 模型主要是在未标记的数据上以自我监督的方式进行预训练,并在有限的标记数据上进行了微调以用于下游任务。而从未标记的数据或有限的标记数据中获取与任务或领域相关的语义知识无疑是很困难的。
注入语义和领域两方面的知识可以提高 NLP 模型对两者的编码能力,因此也内在地提高了模型的推理能力,并产生了合理可信的解释。
补充一下,Guar 等人 在 Semantics of the Black-Box: Can knowledge graphs help make deep learning systems more interpretable and explainable?” 中描述了知识图谱(Knowledge Graphs)是如何帮助深度学习系统更具理解性和可解释性的,感兴趣的读者可以选择阅读。
如何跨越语言知识的鸿沟,仍将是一个具有挑战性的研究课题。