英文题目:DKPLM: Decomposable Knowledge-enhanced Pre-trained Language Model for Natural Language Understanding

中文题目:DKPLM: 可分解的利用知识增强的预训练语言模型

论文地址:https://arxiv.org/abs/2112.01047

领域:自然语言处理, 知识图谱

发表时间:2021.12

作者:Taolin Zhang 等,华东师范大学,阿里团队

出处:AAAI-2022

代码和数据:https://github.com/alibaba/EasyNLP(集成于 EasyNLP)

阅读时间:2022.09.11

读后感

自然语言和知识图结合的一种新尝试,几种优化方法比较有意思。尤其是他对长尾信息的分析,很有启发性:即使在无监督学习的情况下,也要尽量使用重要的数据训练模型。另外,还给出了具体方法,比如实体出现频率高于均值,则忽略它…

介绍

加入知识增强的自然语言模型简称 KEPLM,它将知识图中的三元组注入 NLP 模型,以提升模型对语言的理解能力。在模型使用时需要知识搜索和编码,运算量大。

本文提出可分解的知识增强名为 DKPLM,具体方法是使用长尾实体作为知识注入的目标,还在训练时设计了重建知识三元组的知识解码任务。它只在预测训练时注入了知识,在精调模型和预测时用法与 BERT 一致,相对节省资源。如图 -1 所示:

Pasted image 20220911114024.png

在预训练时使用以下主要技术:

  • 基于知识的长尾实体探测
  • 利用知识图中三元组做成伪实体替换长尾实体训练模型,模型无需增加参数。
  • 利用三元组中的关系,通过对实体及其谓词来解码对应实体中的每个 token。

实验证明对于 zero_shot 任务,以及预测速度都有明显提升。

方法

整体架构如图 -2 所示:

Pasted image 20220911114950.png

长尾实体检测

通过对 wiki 数据分析可以看到实体出现的频率服从幂律分布,如图 -3 所示:

Pasted image 20220911132256.png

只有很少的实体高频出现,多数实体出现次数少,这使用自然语言模型难以从上下文中有效学习。之前论文提到注入高频三元组不总是有利于对下游任务,反而更容易注入负面知识。因此更好的方法是注入长尾实体,同时还需要考虑实体在知识图中和句中的重要性。具体考虑以下三点(图 -2 第二层右侧):

  • 实体频率:实体在预训练数据集中出现的频率,记作:Freq(e)。
  • 语义重要性:实体在句中的重要性,记作:SI(e)。计算 SI 可以使用语义相似度,通过去掉句中的实体 e 后的编码 hrep 与原句编码 ho 比较,识别该实体的重要性。
Pasted image 20220911133935.png
  • 知识连接:实体在知识图中多跳邻居的个数,记作:KC(e)。如下式所示,其中 Rmax,Rmin 是预定义的阈值,|N|表示邻居个数,Hop 指跳数。
Pasted image 20220911134055.png

最终基于知识的长尾系数 KLT 计算如下:

Pasted image 20220911134556.png

其 I{x}为布尔性的指示函数,当实体出现频率高于均值时,则忽略该实体。

(我理解是:在训练集中出现次数太多的去掉,在知识图中邻居太多的去掉,在句子里有它没它都一样的去掉)

伪 Token 嵌入的注入

为了提升模型对长尾实体的理解,将知识图中的关系代入模型训练。如果预测训练数据中出现了头实体 eh,则用它相关的关系谓词和尾实体替换它的嵌入:

Pasted image 20220911135659.png

同理,如果出现尾实体,则用谓词加头实体来表示。

以替换头实体为例,对关系和尾实体编码:

Pasted image 20220911140706.png

其中 F(e) 是预训练模型 PLM 的输出,fsp 是自注意力池化,LN 是标准化层,W 是模型参数。

由于尾实体和关系谓词通常都比较短,生成的表示可能是无效的,因此还加入了对头实体的描述文本记作 e_h^des,使用预训练模型对其编码,最终的伪实体表示如下:

Pasted image 20220911141118.png

这里的⊕表示串联。通过上述方法,促进模型学习知识图中的三元组。

相关知识解码

为了更确定地让模型学习注入信息,又调整了解码层逻辑。在最后一层,利用自注意力池化获取跨实体的实体掩码表示。

Pasted image 20220911151343.png

用头实体本身通过上述方式生成表示 h_eh^o,再加入 hr,目标是解码尾实体,用 h_d^i 表示预测尾实体的第 i 个 token。

Pasted image 20220911151730.png

上式中δ是缩放因子,h_d^0 等于 h_eh_o 作为初始的启发。

由于词表较大,使用采样的 SoftMax 来对比预测值与实际值。损差函数计算方法如下:

Pasted image 20220911152100.png

这里 yi 是实际 token,yn 是采样的负 token,Q 是负采样函数,N 为负例个数。

训练目标包含两项任务:相关的知识解码和 BERT 自带掩码模型任务,最终损失函数计算如下:

Pasted image 20220911152411.png

实验

模型底层框架基于 RoBERTa,使用英文 Wikipedia 作训练数据,知识图包含 3085345 个实体,822 种关系。由于实体太多,使用 PEPR 算法选择负实体,并将 N 设为 20,λ1 最终取值为 0.5。主实验结果如下:

Pasted image 20220911153208.png

从表 -4 可以看到,DKPLM 速度明显优于其它知识注入模型:

Pasted image 20220911153609.png

从图 -5 的消融实验可以看到,三种优化方法各自的贡献:

Pasted image 20220911153712.png