如何向大规模预训练语言模型中融入知识?

描述

本文介绍了复旦大学数据智能与社会计算实验室 (Fudan DISC)在ACL 2021上录用的一篇Findings长文: K-Adapter: Infusing Knowledge into Pre-Trained Models with Adapters

文章摘要

本文关注于向大规模预训练语言模型(如RoBERTa、BERT等)中融入知识。提出了一种灵活、简便的知识融入框架K-Adapter,通过外挂知识插件的方式来增强原模型,缓解了知识遗忘的问题、且支持连续知识学习。本文提出的模型在三种知识驱动的任务,包括了命名实体识别、关系分类、问答等任务上取得了显著的效果。

研究背景

预训练语言模型,如BERT、GPT、XLNet、RoBERTa,可以通过无监督训练目标(如MLM)来从大规模文本语料中学习通用表示,并且在各种各样的下游任务上取得了SOTA的表现。尽管这些模型取得了巨大的进步,但是最近的一些工作表明这些通过无监督方式训练的模型很难学习到丰富的知识,如逻辑知识、事实类知识、语言学知识、特定领域的知识等等。因此这启发了本文来研究如何向预训练模型中融入知识。

最近出现了一些向预训练模型中融入知识的工作,如ERNIE、WKLM、KnowBERT等。下表中展示了本文工作和先前融入知识工作的对比。先前的工作通过多任务(multi-task)学习的方式训练模型,也就是在原有的MLM训练目标的基础上,额外增加了用于融入知识的训练目标,例如ERINE通过增加Entity Linking的训练目标学习相关知识。由于这些方法在预训练融入知识的阶段BERT不是固定的,需要更新模型的全部参数,会使得模型融入知识的代价较大。而且他们不支持连续学习,模型的参数在引入新知识的时候需要重新训练;对于已经学到的知识来说,会造成灾难性遗忘(catastrophic forgetting)的问题。为了更好地解决上述问题,本文提出了 K-Adapter,一种灵活、简便地向预训练模型中注入知识的方法。

方法描述

本文提出的方法如下图所示。图a是基于多任务学习融入知识的方法,图b是本文模型K-Adapter,通过外挂在原始模型外的adapter,融入不同种类的知识。

语言

1. Adapter结构

Adapter模型可以看做是知识特定模型,可以看做为插件,挂载在预训练模型外部。具体而言,每个Adapter模型由K个Adapter层(如下图所示,KIA)组成,其中每个Adapter层包含了N个Transformer层和两个映射层(Projection Layer)。对于Adapter模型,本文将Adapter层插入到预训练模型的不同Transformer层之间,将预训练模型的中间层输出的特征和前一个Adapter层的输出特征拼接作为Adapter层的输入。本文将预训练模型和Adapter的最后一个隐藏特征拼接作为最终的输出特征。

语言

本文采用RoBERTa作为backbone。需要注意的是,RoBERTa在融入知识的预训练过程中是固定的,但Adapter的参数是可训练的。这样的模型和训练设定,缓解了融入知识时灾难性遗忘的问题,不同知识的学习不受影响,融入知识效率更高;而且不同的Adapter间没有信息流、可以利用分布式的方式同时、独立地训练。

本文通过设置不同的预训练任务向Adapter中融入不同的知识。接下来介绍如何将不同种类的知识融入到特定的Adapter中。

2. 知识融入

下图展示了向知识特定Adapter中融入知识的框图。

语言

本文主要融入了2种知识——事实类知识和语言类知识,分别融入到了2种知识特定的adapter中:

(1)Factual Adapter:Factual Adapter融入了事实类知识。此处的事实类知识指文本中实体之间的关系,来源于Wikipedia和Wikidata之间自动对齐的文本-三元组对。本文在关系分类任务上进行预训练来融入知识,该任务要求给定1个句子和句子中的2个实体,然后要求模型预测出这两个实体的关系。如下图展示了融入事实类知识的示意图。

语言

(2)Linguistic Adapter:Linguistic Adapter融入了语言类知识。语言类的知识是自然语言中最基本的一类知识,比如说语义和语法信息。本文中的语言类知识指文本中词之间的依存关系。本文在依存关系预测任务上进行预训练来融入知识。这个任务要求模型预测出给定句子中,每个词的father的index。

下图展示了如何将Adapter应用在下游任务中。此处关键的点是预训练模型特征+知识特征,即一方面利用预训练模型的通用信息,一方面利用Adapter中的特定知识。

语言

实验

本文在3种知识驱动的下游任务上进行实验,包含命名实体识别,问答和关系分类。此外,还通过案例分析和探究性实验对模型学习事实类知识的有效性进行了分析。K-ADAPTER (F+L) 代表同时外挂事实类(factual) adapter和语言类(linguistic) adapter;K-ADAPTER (F) 代表外挂事实类(factual) adapter,K-ADAPTER (L) 代表外挂语言(linguistic) adapter。实验中RoBERTa均指RoBERTa-Large。

1. 命名实体识别(Entity Typing)

命名实体识别任务是给定一个文本和指定的实体,让模型预测出指定实体的类别。在OpenEntity和FIGER数据集上的结果如下表所示。在OpenEntity数据集上,本文模型K-ADAPTER(F+L)相比于RoBERTa进一步提高了1.38%的Mi-F1。在FIGER数据集上,与WKLM相比,K-ADAPTER (F+L)提高了2.88%的Ma-F1,提高了2.54%的Mi-F1。

2. 问答(Question Answering)

问答任务的目的是给定一个问题和一个文本,来让模型做出回答,有时还会提供问题的上下文信息。在问答任务上的实验结果如下表所示。在CosmosQA上,与BERT-FTRACE+SWAG相比,本文的RoBERTa在准确率上显著提高了11.89%。与RoBERTa相比,K-ADAPTER(F+L)进一步提高了1.24%的准确率,这表明K-ADAPTER可以获得更好的常识推理能力。在开放域的QA数据集(SearchQA和Quasar-T)上,与其他baseline相比,K-ADAPTER取得了更好的结果。这表明K-ADAPTER可以充分利用融入的知识,有利于根据检索到的段落来回答问题。具体来说,在SearchQA上,K-ADAPTER(F+L)WKLM相比,显著提高了4.01%的F1,甚至比WKLM+Ranking略高。值得注意的是,K-ADAPTER没有建模检索到的段落的置信度,而WKLM+Ranking额外利用了另一个基于BERT的ranker为检索到的段落进行打分、排序。

3. 关系分类(Relation Classification)

关系分类任务是指给定一个文本和文本中的两个实体,要求模型预测出这两个实体之间的关系。在关系分类任务上的实验结果如下表所示。结果表明,K-ADAPTER明显优于所有baseline。特别地,(1)K-ADAPTER模型优于RoBERTa,证明了利用Adapter进行知识融入的有效性;(2)与RoBERTa+multitask相比,K-ADAPTER取得了更大的提升,这直接说明了K-ADAPTER相比于多任务学习方式融入知识的效果更好,有助于模型充分利用知识。

4. 案例分析(Case Study)

下表中展示了在TACRED数据集上,K-ADAPTER和RoBERTa的定性比较。结果表明,K-ADAPTER中的事实知识可以帮助模型从预测“no_relation”转换到预测正确的类别标签。

为了检验模型学习事实类知识的能力,本文在LAMA数据集上进行了探究(Probing)实验。具体来说,该实验是在zero-shot的设定下进行的,要求模型不在微调的情况下完成关于事实知识的完型填空,例如将“The native language of Mammootty is [MASK] ”作为输入,让模型预测出 [MASK]是什么。

总结

提出了一种灵活而简单的方法K-Adapter,支持将知识注入到大规模预训练语言模型中。

K-Adapter保持原有预训练模型参数不变,使用不同的知识特定"插件"学习不同类别的知识,支持连续知识学习,从而缓解“知识遗忘”问题,即融入新的知识不会影响原有的知识;且由于不同adapter间没有信息流,所以adapter可以用分布式的方式进行高效地训练。

在三种知识驱动的任务上取得了显著的效果,包括了命名实体识别、关系分类、问答。详细的分析进一步证明K-Adapter可以学习到更为丰富的事实类知识,为如何有效地进行知识融入提供了一些见解。

责任编辑:lq6

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分