作者 |疯狂的Max

NLP模型的搭建 nlp 模型训练_三元组

 

背景及动机

 

以BERT为基础的预训练模型在各项NLP任务获得巨大的成功,与此同时,如何在泛化的预训练模型基础上融入某些特定领域的知识图谱以获得在特定领域内让模型有更优秀的表现,这一课题也一直备受关注。

 

然而大部分之前的将知识图谱融入预训练模型的工作都是将知识图谱的知识转化为知识导向的训练任务,通过更新整个模型的参数来进行训练,来实现知识图谱的融入。

 

这种方法虽然可以提升下游任务的效果,但是新类型的知识图谱注入时,之前已经注入的希望得以保存的知识会被冲刷,并且不同知识之间混合在一起,所以难以进一步研究和分析每种知识图谱各自的效果。

 

针对这样的问题,K-ADAPTER过一种灵活且简单的框架将多种知识图谱融入预训练模型中。K-ADAPTER保留原本的预训练模型参数不变,通过在预训练模型的中间层之外加入额外的模型结构,这也就是文中提到的adapter。

 

具体而言,作者用RoBERTa作为基础预训练模型,融入了两种类型的知识图谱:一种是维基百科三元组构成的知识图谱,另一种是基于句法依存的语法类知识图谱。

 

两种知识图谱对应的adapter是分别训练的,同时因为adapter需要更新的参数远小于RoBERTa,因此训练过程高效。训练好的模型在relation classification,entity typing和question answering这3个知识导向的下游任务上效果都优于RoBERTa。

NLP模型的搭建 nlp 模型训练_三元组_02

 

将知识图谱融入预训练模型的几种模型

 

1.ERNIE:抽取WikiData的fact triples,并去除了少于3个实体的句子来进行预训练,其中实体的embedding是通过TransE基于WikiData的fact triples进行训练获得。

2.LIBERT:注入同义词和下义词关系的知识,将一对词语并用特殊字符分隔作为模型输入,预测两个词是否为某种特定关系。

 

3.SenseBERT:注入word-supersense的知识,通过预测输入的掩码词语的supersense的方式来注入知识。

 

4.KnowBERT:通过在BERT的原始模型两层之间加入KAR层结构,这种结构用来注入知识图谱信息。同时利用了输入文本抽取的span之间,span和entity之间,entity之间的attention来实现交互计算,进一步将知识图谱的信息融入到模型中去。

 

5.WKLM:通过将输入中出现的实体替换为同类型的另一实体,让模型任务变成判断实体是否为随机替换的,以此构造训练任务,达到知识的融入效果。

 

6.BERT-MK:从知识图谱中抽取fact triples,构造成训练任务,替换三元组中的头或尾,模型训练任务为判定是否为替换的负样本。

 

文中也对以上5种模型和k-adpater一起从融入知识的类型、训练目标、是否固定BERT参数以及是否又持续的知识融入几个方面进行了归纳总结。

NLP模型的搭建 nlp 模型训练_sed_03

 

NLP模型的搭建 nlp 模型训练_NLP模型的搭建_04

 

K-adapter模型结构

NLP模型的搭建 nlp 模型训练_维基百科_05

 

图(a)是之前大部分通过注入知识图谱相关的多任务学习来更新整个模型参数的框架,图(b) 是本文通过知识适配器引入知识的框架。

 

具体来说,K-ADAPTER保留了预训练模型原本的参数,使其参数固定,在融入某一种知识的时候,只更新对应的adapter,从而产出不同知识对应的不相互混淆的模型输出。

 

这些不同的adapter结构是在预训练模型的之外的,可以插入和抽取。其输入是预训练模型中间层的隐层输出结构。

 

这就是的每一个adapter在不同的任务上可以对应融入不同的外部知识,并保证原本的预训练模型的参数是被冻结,不被更新的。

 

本文采用RoBERTa作为预训练模型,融入了两种adapter:factual adapter和linguistic adapter,前者通过关系抽取任务融入预训练模型,后者通过依存关系预测任务融入预训练模型,两者独立训练。

 

1.K-ADAPTER的模型结构和训练方法

 

(1)每层adapter的内部结构:

NLP模型的搭建 nlp 模型训练_三元组_06

 

结构说明:

每个Adapter模型包含K个adapter层,每个adapter层包含N 个transformer层,2 个映射层和1 个残差连接。每个adapter层连接到预训练模型中不同的transformer层上。

 

输入输出说明:

每个adapter层的输入:当前adapter层的输入为连接的 transformer层隐藏层的输出和前一个adapter层的输出,这两个表示进行拼接之后进入adapter层。

 

整个K-ADAPTER模型的输出:将预训练模型最后一层的隐藏层输出和最后一个adapter层的输出,进行拼接作为最终的输出。

 

(2)训练方法:

 

使用RoBERTa-Large模型作为本文实验中的预训练模型,共计335M参数。

 

在其第0层、11层、23层的transformer层之后加入adapter层,每个adapter层中的transformer层数 、隐层维度和自注意力头为2,768,12,两个映射层维度分别是 1024 和 768。

 

并且,不同的adapter层之间不共享参数,最终一种adapter包含的参数量为42M。

 

2.2种adapter:factual adapter和linguistic adapter

 

Factual adapter对应Factual Knowledge ,主要来源于文本中实体之间的关系,数据量为5.5M,430种关系,对应的预训练任务是关系分类,给定context和一对实体,对其间关系标签进行分类。

 

Linguistic adapter对应Linguistic Knowledge, 主要来源于文本中词之间的依存关系,数据量为1M,其预训练任务是依存关系分类,预测给定句子中每个token在依存分析结果中的head index。

NLP模型的搭建 nlp 模型训练_三元组_07

 

知识导向相关的3个下游任务实验结果分析

 

本文作者将K-ADAPTER模型在以下三种知识导向的下游任务中进行实验,分别是: relation classification,entity typing和question answer。

 

融入factual knowledge为K-ADAPTER(F),融入linguistic knowledge的为K-ADAPTER(L),融入两种的为K-ADAPTER(F+L)。

 

同时也将这3个模型和BERT-Base,ERNIE,KnowBERT,RoBERTa,以及仅仅添加K-ADAPTER结构并没有进行知识融入的K-ADAPTER等模型效果进行了对比和罗列。

 

从下图的三个下游任务实验结果可以看到,K-ADAPTER(F+L)在3种任务上表现都由于其他模型。

NLP模型的搭建 nlp 模型训练_sed_08

 

NLP模型的搭建 nlp 模型训练_NLP模型的搭建_09

 

NLP模型的搭建 nlp 模型训练_三元组_10

 

NLP模型的搭建 nlp 模型训练_维基百科_11

 

模型的个例分析

 

本文的个例分析将K-ADAPTER和RoBERTa在关系分类的数据集TACRED给出了案例结果对比。

 

大部分实验结果表明RoBERTa在错误分类结果和正确结果之间的逻辑输出值是很接近的。比如,给定的句子“New Fabris closed down June 16”, RoBERTa 预测New Fabris和June 16为“no relation”, 但是正确标签是 “city of birth”,预测结果被排列到第二位。

 

但如果模型知道 “New Fabris” 是一家公司,那么就能正确预测 “New Fabris” and “June 16”之间的关系。K-ADAPTER通过factual knowledge学习到了这个关系,就可以做出正确的预测。

 

这也可以证明K-ADAPTER可以获得比RoBERTa更丰富的factual knowledge,而这个knowledge是有助于帮助模型正确预测与之相关的下游任务的。

NLP模型的搭建 nlp 模型训练_三元组_12

 

结论与研究思考

 

K-ADAPTER保留预训练模型的原有参数,支持持续的多种知识的融入,并且新融入的知识不会对旧知识学习到的参数产生影响。

 

Factual knowledge和Linguistic knowledge的分别融合到RoBERTa中,多种下游任务实验结果都证明了两种知识的注入分别都可以提升模型效果,两者加成在一起效果更好。

 

在接下来的研究和应用中,可以将某些特定垂直领域或者特定任务相关的外部知识通过K-ADAPTER的模式加入训练,以提升与之相关下游任务的效果。