K-BERT

在这里插入图片描述

  K-BERT: Enabling Language Representation with Knowledge Graph
  https://github.com/autoliuweijie/K-BERT.

Motivation

弥补语言模型缺乏领域知识的弊端

摘要

预先训练的语言表示模型,如BERT,从大规模语料库中获取一般的语言表示,但缺乏特定领域的知识。阅读一篇领域文本时,专家用相关知识进行推理。为了使机器能够实现这一功能,作者提出了一种基于知识的语言表示模型,其中三元组作为领域知识注入到句子中。然而,过多的知识整合可能会使句子偏离其正确的含义,这就是所谓的知识噪音(KN)问题。为了克服KN,K-BERT引入了soft-position and visible matrix 来限制知识的影响。K-BERT可以通过配备KG轻松地将领域知识注入到模型中,而无需自行预训练,因为它能够从预训练的BERT加载模型参数。

介绍

pre-train刷新了各种NLP任务的SOTA,但是在特定领域(如医药)表现不加,一个方法是重新训练个强调领域知识的pre-train model,但是计算成本太高。此外,作者考虑到将KG融入集成到语言表示模型中,使其具备领域知识。但是,这种集成面临两个挑战:

  1. Heterogeneous Embedding Space (HES):一般情况下,文本中文字的嵌入向量和KG中实体的嵌入向量是分开获取的,使得它们的向量空间不一致。
  2. Knowledge Noise (KN):过多的知识融入可能会使句子偏离其正确的意思。
    K-BERT由此而生:

Methodology

Notation

对于一个句子: s s s = { w 0 w_0 w0, w 1 w_1 w1, w 2 w_2 w2, …, w n w_n wn}, n n n为句子的长度。英语句子为word-level,本文针对character-level的中文句子。
其中,每一个token都包含在词表 V V V内。KG表示为 K K K,包含一系列三元组: ε ε ε = { w i w_i wi, r j r_j rj, w k w_k wk}, w i w_i wi w k w_k wk为实体名称, r j r_j rj V V V是他们之间的关系。所有的三元组均在 K K K内,即 ε ε ε K K K

Model architecture

K-BERT的模型架构由四个模块组成(如下图),即knowledge layer, embedding layer, seeing layer and mask-transformer。对于一个输入句子,knowledge layer首先从一个KG注入相关的三元组,将原始句子转换成一个知识丰富的句子树。然后句子树被同时馈入embedding layer和seeing layer。然后转换成token-level嵌入表示和可见矩阵。可见矩阵用于控制每个token的可见区域,防止因注入过多知识而改变原句的意思。
在这里插入图片描述

knowledge layer(KL)

知识层用于句子知识注入和句子树转换。具体地,给定输入句子 s s s = { w 0 w_0 w0, w 1 w_1 w1, w 2 w_2 w2, …, w n w_n wn}和一个KG K K K,KL输出一个句子树 t t t = { w 0 w_0 w0 w 1 w_1 w1,…, w i w_i wi {( r r r i _i i 0 _0 0 w w w i _i i 0 _0 0),…,( r r r i _i i k _k k w w w i _i i k _k k)},…, w n w_n wn}。这个过程可以分为两个步骤:知识查询(K-Query)和知识注入(K-Inject)。
在K-Query阶段,所有在句子 s s s中的实体被选择出来,在 K K K中查找相应的三元组:
在这里插入图片描述
其中, E E E = {( w i w_i wi, r r r i _i i 0 _0 0, w w w i _i i 0 _0 0), …,( w i w_i wi, r r r i _i i k _k k, w w w i _i i k _k k)}是对应的三元组集合。
然后K-Inject将 E E E中的三元组缝合到句子 s s s中的相应位置,产生一个句子树:
在这里插入图片描述
形式上:
在这里插入图片描述

Embedding layer(EL)

EL的功能是将句子树转换成嵌入表示,使其能够fed到mask-transformer encoder中,嵌入为三个部分的和:token embedding ,position embedding 和segment embedding。与BERT的不同之处在于,K-BERT输入的是句子树而不是句子token序列。因此,如何在保留句子结构信息的同时将句子树转化为序列是K-BERT的关键

在这里插入图片描述

Token embedding:与BERT一致,采用BERT的词表,对于句子树中的每一个token经过lookup table转换成一个维数为 H H H的嵌入向量。此外,K-BERT也使用[CLS]作为分类tag和[MASK]去mask tokens。

K-BERT和BERT的token嵌入的区别在于句子树中的token在嵌入操作之前需要重新排列:分支中的token被插入到相应的节点之后,而后续的token被向后移动。如上图所示的例子,句子树被重新排列为“Tim Cook CEO Apple is visiting Beijing capital China is a City now”。虽然这个程序很简单,但它使句子不可读,并失去了正确的结构信息。幸运的是,它可以通过软位置和可见矩阵来解决。

Soft-position embedding :对于BERT来说,如果没有位置嵌入,就相当于一个词袋模型,导致结构信息(即token的顺序)的缺失。BERT输入句子的所有结构信息都包含在位置嵌入中,这就允许将丢失的结构信息添加回不可读的重排句子中。

以下图中的句子树为例,重新排列后,[CEO]和[Apple]插在[Cook]和[is]之间,但是[is]的主语应该是[Cook]而不是[Apple]。为了解决这个问题,将[is]的位置号设置为3,而不是5。所以在transformer encoder 里计算self attention 分数的时候,[is]是在[Cook]的下一个位置。然而,另一个问题出现了:[is]和[CEO]的position 号都是3,这使得他们在计算self attention 时位置相近,但实际上两者之间没有联系,作者提出用Mask self attention解决此问题。
在这里插入图片描述
Segment embedding:同BERT,采用segment embedding识别不同的句子。

Seeing layer

Seeing layer是K-BERT和BERT最大的区别,也是这个方法如此有效的原因。K-BERT的输入是一个句子树,其中的分支是从KG获得的知识。但知识带来的风险是会导致原句意思发生变化,即KN问题。比如上图的句子树中,【China】只修饰【Bejing】,与【Apple】无关。所以【Apple】的表示不应该受到【China】的影响。另一方面,用于分类的[CLS]标签不应该绕过[Cook]获取[Apple]的信息,因为这将带来语义变化的风险。为了防止这种情况发生,K-BERT用一个可见矩阵 M M M来限制每个token的可见区域,这样[Apple]和[China],[CLS]和[Apple]就互不可见了。 M M M被定义为:
在这里插入图片描述
在这里插入图片描述

  例如:Tim与CEO不在一个branch,则M中它们两个的hard位置被设置为负无穷。

Mask-Transformer

可见矩阵 M M M在一定程度上包含了句子树的结构信息。BERT中的Transformer 编码器无法接收 M M M作为输入,需要修改为Mask-Transformer,可以根据 M M M限制自我注意区域,Mask-Transformer是多个Mask-自我注意块的堆叠。将层数表示为 L L L,hidden size 表示为 H H H,mask self attention head 的数量表示为 A A A

Mask-Self-Attention:它是的一种Self-Attention扩展。形式上:
在这里插入图片描述
其中 W q W_q Wq W k W_k Wk W v W_v Wv可训练模型参数。 h i h_i hi是第 i i i个mask-self-attention block 的隐藏状态。 d k d_k dk是比例因子。 M M M是Seeing layer 计算出的可见矩阵。直觉上,如果 w k w_k wk w j w_j wj不可见( M M M j _j j k _k k为负无穷),那么 M M M j _j j k _k k会将注意力得分 S S S i ^i i + ^+ + 1 ^1 1 j _j j k _k k屏蔽为0,这意味着 w k w_k wk w j w_j wj的隐藏状态没有贡献。

如图4所示的例子, h h h i ^i i [ _[ [ A _A A p _p p p _p p l _l l e _e e ] _] ] h h h i ^i i + ^+ + 1 ^1 1 [ _[ [ C _C C L _L L S _S S ] _] ] 没有影响,因为 [CLS]看不见[Apple]。但是 h h h i ^i i + ^+ + 1 ^1 1 [ _[ [ C _C C L _L L S _S S ] _] ]可以通过间接获得 h h h i ^i i + ^+ + 1 ^1 1 [ _[ [ C _C C o _o o o _o o k _k k ] _] ]的信息,因为[Apple]对[Cook]可见,[Cook]对[CLS]可见。这个过程的好处是【Apple】丰富了【Cook】的表示,但不直接影响原句的意思。
在这里插入图片描述

Experiments

Pre-training corpora:
WikiZh :https://dumps.wikimedia.org/zhwiki/latest/
WebtextZh:https://github.com/brightmart/nlp chinese corpus

Knowledge graph:
CN-DBpedia:http://kw.fudan.edu.cn/cndbpedia/intro/
HowNet:http://www.keenage.com/
MedicalKG

Baselines
Google -BERT
K- BERT

Parameter settings and training details
与BERT相同:L = 12 , A = 12 , H =768 ,参数量:110M

 注意:在 pre-train阶段,没有对BERT加入KG,因为这样做会将相关实体的距离拉近,导致句子的语义改变,预训练阶段与googleBERT相同,在微调阶段加入KG。

直接看看结果

所有数据集都分为三个部分:训练、开发和测试。使用训练部分来微调模型,然后在开发和测试部分评估其性能。实验结果如表1和表2所示,从中可以将结果分为三类:(1)KG对情感分析的任务(即Book_review、Chnsenticorp、Shopping和Weibo)没有显著影响,因为句子的情感可以在没有任何知识的情况下基于情感词来判断;(2)在语义相似性任务方面,HowNET的表现优于百科KG。
在这里插入图片描述
对于问答和NER任务(即NLPCC-DBQA和MSRA-NER),百科KG (CN-DBpedia)比语言KG更合适。因此,根据任务类型选择合适的KG非常重要。
在这里插入图片描述
此外,可以观察到,使用额外的语料库(WebtextZh)也可以带来性能提升,但没有KG那么显著。如表2所示的MSRA-NER,CN-DBpedia将F1从93.6%提高到95.7%,而WebtextZh仅将其提高到94.6%。

Specific-domain tasks

K-BERT的出色点:
Domain Q&A:金融和法律问答数据集:Finance Q&A and Law Q&A
领域NER:Medicine NER

看看结果

在这里插入图片描述
可以看到,改善很明显。

Ablation studies

soft-position 和可见矩阵 M M M的影响:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43390809/article/details/113498213