实现三元组表示的两个稀疏矩阵的加法_K-BERT | 基于知识图谱的语言表示模型

adcfd87194cecc793ee7bb39924ab1ef.png

文章来源于微信公众号:DrugAI

原文链接:请点击

文章仅用于学习交流,如有侵权请联系删除

今天给大家介绍发表在AAAI 2020上的文章“K-BERT: Enabling Language Representation with Knowledge Graph”,该工作由清华大学Weijie Liu等人完成。文章提出将知识图谱与预训练语言表示模型BERT相结合,使机器在阅读特定领域文本时,能够利用相关领域知识进行推理。

e7c48b3a745299a64ab2bd45eea2cb96.png

研究背景

BERT曾被应用在多项NLP任务中,并且取得了很好的结果。它通过在大规模开放语料库上进行预训练以获得通用的语言表示,然后在特定的下游任务中进行微调,吸收特定领域的知识。但这些模型在不同的领域执行知识驱动任务时,效果不佳。为了解决这个问题,可以在特定领域的数据集上进行预训练,或者在预训练时注入特定的领域知识。但这些方法一般非常耗时且昂贵。

有些学者提出将知识图谱(KG)集成到语言表示(LR)中,为模型配备领域知识,提高模型在特定领域任务上的性能,同时降低大规模预训练成本。但在知识整合的同时,存在两个不可避免的问题:1)异构嵌入空间(HES),文本中的词和KG中的词嵌入向量空间不一致;2)知识噪音(KN),过多的知识融合会使句子偏离正确的意思。为了解决这些问题,文章提出一种基于知识图谱的语言表示模型——K-BERT。K-BERT能够与BERT模型兼容,加载任何预先训练好的BERT模型,并且通过配置KG可以很容易地将领域知识注入到模型中,而不需要预训练。另外,该模型引入了软位置和可见矩阵来限制知识的影响以克服知识噪音。

方法

文章详细介绍了K-BERT的实现,K-BERT的模型体系结构主要由四个模块组成,即知识层、嵌入层、视图层和掩码转换。其总体框架如图1所示:

662a00ee7646dacff7e9c191ce73e43b.png

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)。

467305e1c45142326805ffd20094b831.png

在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),

5d21cd817a5277c4546127038ff43f75.png

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),

3d29bbf940bb6b876f3ed91b2ae9d3d0.png

其中wi⊖wj表示在同一分支,wi⊘wj则不在。i和j是硬位置索引。

嵌入层和可视层的工作原理如图2所示:

6e99b5d34e4326ed1a841b0aa36206a3.png

2.4 掩码转换

可视矩阵M包含句子树的结构信息,但BERT中的编码器不能接收M作为输入,所以我们需要将其修改为Mask-Transformer,它可以根据M限制自注意区域。Mask-Transformer是一个由多个掩码-自我注意块组成的堆栈。

为了利用M中的句子结构信息来防止错误的语义变化,文章提出了一种掩码-自注意,它是自我注意的扩展。掩码-自注意表示如(4)。

da0b811e0157286a02155ae767832a95.png

其中Wq,Wk和Wv表示可训练的模型参数;hi表示第i个掩码自我注意块;dk是比例因子;M是可视矩阵。掩码转换的工作原理如图4所示:

c2b9bfe830af3f0ff417eaf570df5e93.png

实验

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所示:

016511ce53270491a4dd06a168b8c21c.png

从表中可以看出,使用额外的语料库(WebtextZh)也可以带来性能提升,但不如KG显著。

作者在两个特定领域的任务:Domain Q&A和Law_Q&A上评估了K-BERT的性能。实验结果如表3所示:

edc6cf86c58ddaa8e20242f7d8738006.png

结果表明,K-BERT在特定领域上的具有明显的语言表示优势。

参考资料

https://www.aaai.org/Papers/AAAI/2020GB/AAAI-LiuW.5594.pdf

代码:https://github.com/autoliuweijie/K-BERT


8231e71fb8235b4788ba6e4d374ea652.png

「华来知识」成立于2017年,孵化于清华大学智能技术与系统国家重点实验室,是一家技术领先的人工智能企业。公司专注于提供新一代人工智能人机交互解决方案,利用自身技术为企业打造由人工智能驱动的知识体系,借此改善人类生活。「华来知识」将持续为企业客户提供优质服务,助力企业在专业领域的人工智能应用,提供完善可靠高效的产品解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值