今天给大家介绍发表在AAAI 2020上的文章“K-BERT: Enabling Language Representation with Knowledge Graph”,该工作由清华大学Weijie Liu等人完成。文章提出将知识图谱与预训练语言表示模型BERT相结合,使机器在阅读特定领域文本时,能够利用相关领域知识进行推理。
1
研究背景
BERT曾被应用在多项NLP任务中,并且取得了很好的结果。它通过在大规模开放语料库上进行预训练以获得通用的语言表示,然后在特定的下游任务中进行微调,吸收特定领域的知识。但这些模型在不同的领域执行知识驱动任务时,效果不佳。为了解决这个问题,可以在特定领域的数据集上进行预训练,或者在预训练时注入特定的领域知识。但这些方法一般非常耗时且昂贵。
有些学者提出将知识图谱(KG)集成到语言表示(LR)中,为模型配备领域知识,提高模型在特定领域任务上的性能,同时降低大规模预训练成本。但在知识整合的同时,存在两个不可避免的问题:1)异构嵌入空间(HES),文本中的词和KG中的词嵌入向量空间不一致;2)知识噪音(KN),过多的知识融合会使句子偏离正确的意思。为了解决这些问题,文章提出一种基于知识图谱的语言表示模型——K-BERT。K-BERT能够与BERT模型兼容,加载任何预先训练好的BERT模型,并且通过配置KG可以很容易地将领域知识注入到模型中,而不需要预训练。另外,该模型引入了软位置和可见矩阵来限制知识的影响以克服知识噪音。
2
方法
文章详细介绍了K-BERT的实现,K-BERT的模型体系结构主要由四个模块组成,即知识层、嵌入层、视图层和掩码转换。其总体框架如图1所示:
图1 K-BERT的模型结构
K-BERT模型的每一部分都有着不可或缺的作用。对于输入的句子,知识层首先从KG向其注入相关的三元组,将原始句子转换为知识丰富的句子树。然后将句子树同时馈送到嵌入层和视觉层,然后将其转换为符号级嵌入表示和可视矩阵。可见矩阵用于控制每个符号的可见区域,防止由于注入过多的知识而改变原句的意思。
2.1 知识层
知识层(KL)用于句子知识注入和句子树转换。给定输入句子s={w0,w1,w2,...,wn}和知识图谱K,KL输出句子树t={w0,w1,.,wi{(ri0,wi0),...,(rik,wik)},...,wn}。这个过程可以分为两个步骤:知识查询(K-Query)和知识注入(K-Inject)。
在K-Query中,从K-Query中选出句子s中涉及的所有实体名称来查询其对应的三元组。K-Query可以表示为(1),
(1)
其中E={(wi,ri0,wi0),.,(wi,rik,wik)}是相应三元组的集合。
接下来,K-Inject通过将E中的三元组注入到它们对应的位置,将查询到的E注入到句子s中,并生成一个句子树t。在本文中,一棵句子树可以有多个分支,但其深度固定为1,这意味着三元组中的实体名称不会迭代地派生分支。K-Inject可以表示为(2),
2.2 嵌入层
嵌入层(EL)的功能是将语句树转换为可以馈送到掩码转换器中的嵌入表示。与BERT相似,K-BERT的嵌入表示是由符号嵌入、位置嵌入和段嵌入三部分组成,不同之处在于K-BERT嵌入层的输入是句子树,而不是符号序列。因此,如何在保留句子树结构信息的同时将句子树转换成序列是K-BERT的关键。
符号嵌入与BERT基本一致,不同之处在于语句树中的符号在嵌入操作之前需要重新排列。在重新排列策略中,分支中的符号被插入到相应节点,而后续的符号则向后移动。经此操作后句子变得不可读,丢失了正确的结构信息。但该问题可以通过软位置可视矩阵来解决。
BERT输入句子的所有结构信息都包含在位置嵌入中,可以将缺失的结构信息重新添加到不可读的重新排列的句子中,但句子位置信息会有所改变。要解决这个问题,需要给句子树重新设置位置标号。但在设置位置编号时又会发生实际没有联系的词汇,因具有相同的软位置标号而出现联系,导致句子意思发生改变。这个问题的解决方案是使用掩码-自我注意机制。
2.3 视图层
视图层是K-BERT和BERT的最大区别,也是这种方法如此有效的原因。K-BERT的输入是一棵句子树,其中的分支是从KG获得的知识。但它可能导致原句意思的变化,即KN问题。
在句子树中,一个实体的三元组应与其他词汇无关。同时,用于分类的[CLS]标签不能绕过主体词汇来获得修饰三元组的信息。为了解决这个问题,K-BERT使用可见矩阵M来限制每个符号的可见区域防止不相干词汇相互干扰。可视矩阵可以表示为(3),
(3)
其中wi⊖wj表示在同一分支,wi⊘wj则不在。i和j是硬位置索引。
嵌入层和可视层的工作原理如图2所示:
图2 句子树转换成嵌入表示和可视矩阵工作过程
2.4 掩码转换
可视矩阵M包含句子树的结构信息,但BERT中的编码器不能接收M作为输入,所以我们需要将其修改为Mask-Transformer,它可以根据M限制自注意区域。Mask-Transformer是一个由多个掩码-自我注意块组成的堆栈。
为了利用M中的句子结构信息来防止错误的语义变化,文章提出了一种掩码-自注意,它是自我注意的扩展。掩码-自注意表示如(4)。
其中Wq,Wk和Wv表示可训练的模型参数;hi表示第i个掩码自我注意块;dk是比例因子;M是可视矩阵。掩码转换的工作原理如图4所示:
图4 掩码转换是多个掩码自我注意块的堆栈
3
实验
3.1 数据集
K-BERT在12个中国自然语言处理任务上进行微调,其中8个是开放领域的,4个是特定领域的。文章采用两个预训练语料库:WikiZh和WebtextZH;三个中文知识图谱:CN-DBpedia、HowNet和MedicalKG。在文章中,作者将K-BERT和Google BERT和Our BERT模型进行了一个比对,以观察它的性能。
3.2 实验分析
在文章中,作者首先比较了KBERT和BERT在八个中文开放领域自然语言处理任务上的性能。这八个任务分别是:Book_revire、Chnsenticorp、Shopping、Weibo、XNLI、LCQMC、NLPCC-DBQA和MSRA-NER。
上述每个数据集分为三个部分:训练、开发和测试。实验结果如表1和表2所示:
表1 句子分类任务的不同模型在开放领域任务上的结果(ACC%)
表2 不同模型对NLPCC-DBQA(MRR%)和MSRA-NER(F1%)的结果
从表中可以看出,使用额外的语料库(WebtextZh)也可以带来性能提升,但不如KG显著。
作者在两个特定领域的任务:Domain Q&A和Law_Q&A上评估了K-BERT的性能。实验结果如表3所示:
表3 特定领域任务的各种模型的结果(%)
结果表明,K-BERT在特定领域上的具有明显的语言表示优势。
参考资料
https://www.aaai.org/Papers/AAAI/2020GB/AAAI-LiuW.5594.pdf
代码
https://github.com/autoliuweijie/K-BERT