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

6d55e7ddb8a778b1149cf31231f9af57.png

1.研究背景

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

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

2.方法

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

b00501920e5d0096d5c09a861c031578.png
图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)。

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

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

fd08642d4f213881a5b922e3b5dd1d7e.png

(3)

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

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

f11d86e4cb91fdc89d14ead99d6af915.png
图2 句子树转换成嵌入表示和可视矩阵工作过程

2.4 掩码转换

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

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

f943477b81146d7fd508a6802bb018df.png

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

2a4fc11f580fbd2ccb8a8420952d0367.png

图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%)

a139b211f6a54afd0342b005130f38f6.png

表2 不同模型对NLPCC-DBQA(MRR%)和MSRA-NER(F1%)的结果

8fcd77586aca01ced622966d87cda2fe.png

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

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

表3 特定领域任务的各种模型的结果(%)

0c992799d322ac6afd64682830059667.png

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

参考资料

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

代码

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

9f09297659639bd2272b3feea12f47ed.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel单元格“删除线”的添加与删除

软件:windows,WPS 点击字体设计的小角标,进入更多设置,勾选“删除线”

excel 表格复制到word后,宽超出word如何调整?

网上很多方法是用“选择性粘贴----excel表格对象”,这个适用表格行数少的,不超过一页word的。 步骤 复制到word里后,选中表格,右键---自动调整--选择具体的调整方式。 调整后效果

sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询

知识点一、表的加法Union:删除表中的重复值union al:包含表中所有内容,包括重复值二、表的联结联结:join联结分为以下五种:交叉联结(cross join)又称为笛卡尔积:将表中的每一行与另外…

jenkins部署三种构建方式的详细步骤

部署背景:jenkins: CentOS 7.4C IP:172.16.3.74gitlab-11.5.3: CentOS 7.4D IP:172.16.4.74此上部署都是根据我之前的博客配置完成的;jenkins有三种构建方…

从业回忆,一次大胆的冒险,程序员转岗项目经理

有些事不必知道得太早 程序员这个行业,被“中年危机”言论导向后,就和洗脚城女技师差不多,年轻,漂亮,技术好,体力好的技师收入高,一边拿着高薪,赚着外快,一边吐槽是青春饭,经常熬夜,干不长久。 2010年之前,网上宣传程序员是青春饭,程序员中年危机的文章很少。近几…

word转freemarker和修改的步骤

第一步 编写好word,用freemarker语法替换内容 第二步 word另存为 word xml 第三步 修改后缀名为:.ftl 第四步 notepad XML插件美化显示,插件安装教程:Notepad 7.6以上版本安装XML Tools插件_lingquan0809的博客-CSDN博客Note…

逐行粒度的vuex源码分析

vuex源码分析 了解vuex 什么是vuex vuex是一个为vue进行统一状态管理的状态管理器,主要分为state, getters, mutations, actions几个部分,vue组件基于state进行渲染,当state发生变化时触发组件的重新渲染,并利用了vue的响应式原理…

Redis设计与实现之事件

目录 一、事件 1、文件事件 读事件 写事件 2、 时间事件 3、时间事件应用实例:服务器常规操作 4、事件的执行与调度 5、事件是否有重要性级别或优先级?需要立即处理还是可以延迟处理? 6、事件的类型是什么?是针对键的操作&#xff0…

项目验收材料整合流程

目标:多份word整合成一份项目验收材料 第一步:编写好word;准备好一份验收材料的封面与目录word 第二步:用WPS的word转PDF,批量转成PDF; 第三步:用Adobe Acrobat DC 合并转成的多个PDF成为一个…

[译]Kube Router Documentation

体系结构 Kube路由器是围绕观察者和控制器的概念而建立的。 观察者使用Kubernetes监视API来获取与创建,更新和删除Kubernetes对象有关的事件的通知。 每个观察者获取与特定API对象相关的通知。 在从API服务器接收事件时,观察者广播事件。 控制器注册以获…

windows11 22H2资源管理器开启多标签页

效果 步骤 windows11 22H2后续可能会推送该功能,现在是隐藏的,需要借助工具把这个隐藏功能开启 工具:vivetool 下载:Releases thebookisclosed/ViVe GitHub 步骤1:右键开始菜单,选择“终端(…

遇到“我觉得行才算行”的业主怎么办?

目录 案例 分析 案例 项目初期UI设计需求不确定,我们设计了几稿,业主还是不满意,没有确定最终稿。后来呢,业主安排了一位内部的美工A过来。美工A给出了很多修改意见,我们根据美工A的意见进行了修改,又反反复复改了好几版,最后业主不算满意地确定了。 后来项目要收尾…

ceph安装配置

简介 ceph是一个开源分布式存储系统,支持PB级别的存储,支持对 象存储,块存储和文件存储,高性能,高可用,可扩展。 部署网络建议架构图 部署 部署架构图,本次实验部署jewel版本 实验环境的Vagrant…

推荐好用的JavaScript模块

2019独角兽企业重金招聘Python工程师标准>>> 译者按: 作者将自己常用的JavaScript模块分享给大家。 原文:? JavaScript Modules Worth Using ?译者: Fundebug为了保证可读性,本文采用意译而非直译。另外,本文版权归原…

select函数_SQL高级功能:窗口函数

一、窗口函数有什么用?在日常生活中,经常会遇到需要在每组内排名,比如下面的业务需求:排名问题:每个部门按业绩来排名topN问题:找出每个部门排名前N的员工进行奖励面对这类需求,就需要使用sql的…

发挥项目“临时性”威力,让项目顺利实施

所谓临时性,就是要有明确的“开始”和“结束”。虽然大家都知道项目一定会有开始和结束的,但要更多地关注“明确“。 问题1:问商务(售前)或业主,这个项目什么时候结束? 答:商务或业主他们有时候也不知道,因为国内的项目大多数是提前开始交付,是一边交付,一边把里程…

上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成1、添加data变量编辑record.vue文件&#xff0c…

spring cloud eureka服务注册和调用

SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目。将下载的项目解压,打开idea,file-->new-->project from existing sources。import proje…

打印工资条怎么做到每个人都有表头明细_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?...

本文说明今天和一个朋友吃饭,她说我经常使用Excel制作工资条,但是每个月都要做一遍,你能不能用python写一个代码,能够自动化完成这个工作。这当然可以啦,就是这么牛逼!我们先来看看原始数据是什么样子的。那…

做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘

本文由云社区发表本文作者:孙旭,腾讯数据库开发工程师,9年数据库内核开发经验;熟悉数据库查询处理,并发控制,日志以及存储系统;熟悉PostgreSQL(Greenplum,PGXC等&#xf…