写点什么

华为联合中科大提出知识图谱结合预训练模型新方法,节省 20% 计算成本

2019 年 12 月 28 日

华为联合中科大提出知识图谱结合预训练模型新方法,节省20%计算成本

如何将知识图谱的信息嵌入到预训练语言模型中,已经成为当前的研究热点。近日,来自华为云、华为诺亚方舟实验室和中科大的研究人员共同发布了一项新研究成果,通过提取知识图谱中的子图,并输入到基于 Transformer 的模型中来学习知识嵌入,在多个医学 NLP 任务上达到最佳性能。本文是 AI 前线第 103 篇论文导读,我们将对这项研究工作进行详细解读。

论文作者| Bin He,Di Zhou,Jinghui Xiao 等


概览

预训练的语言模型通过一种自我监督的学习方法在大规模文本语料库中学习上下文的单词表征,借助这种方法对下游任务进行微调,就可以获得最佳(SOTA)性能。这一方法逐渐成为自然语言处理研究的新范式。近年来,知识信息被整合到预先训练好的语言模型中,以增强语言的表现力,如 ERNIE-Tsinghua 和 ERNIE-Baidu。Zhang 等人初步尝试利用从知识图谱中获得的知识信息来改进某些知识驱动型任务的性能。直观地说,该模型可以直接应用于医学领域,在医学领域中,大规模的语料库和知识图都是可用的。


在 ERNIE-Tsinghua,实体嵌入是通过 TransE 学习的,这是一种流行的基于转换的知识表征学习方法(KRL)。TransE 只是将知识图中的每一个三元组看作一个训练实例,这可能不足以对知识图中节点之间的复杂信息传输进行建模。在医学知识图谱中,有些实体有大量的相关邻域,而 TransE 不能同时为相应的邻域建模。


图 1 显示了包含多个医疗实体的医学知识图的子图。在此图中,列出了节点“细菌性肺炎”的四个传入和四个传出相邻节点(以下称为“传入实体”和“传出实体”),节点之间具有各种类型的关系。因此,为了学习更全面的节点嵌入,有必要在节点之间合并更多的交互信息(我们称之为“图上下文信息”)。图注意力网络(GATs)通过一跳邻居更新实体嵌入,更加关注节点信息交互。基于 GATs,对给定实体的多跳邻居进行集成以获取更多信息(Nathani 等人,2019 年)。



受先前工作的启发,我们将节点间的信息交互扩展到一种更一般的方法,可以将知识图中的任意子图作为训练实例。具体地说,子图被转换成一系列节点,KRL 过程的执行方式类似于训练语言模型。在这个模型中,每个节点更全面的上下文信息可以被整合到学习的知识表征中。此外,我们认为在 KRL 过程中实体和关系应该是相互影响的,因此关系也被视为图节点,并与实体共同学习。


最后,我们的预训练模型 BERT-MK(一个基于 BERT 的医学知识语言模型)是在一个大规模的医学语料库中学习的,并与用上述 KRL 方法表示的医学知识图相结合。我们的贡献如下:


(1)提出了一种能对任意子图进行建模的知识表征学习方法。该方法极大地丰富了知识表征中的信息量,探索了实体和关系的联合学习。


(2)图的上下文知识被整合以提高预先训练语言模型的性能,这在医学领域的几个 NLP 任务上优于最新的模型。


研究方法

在我们的模型中,每次从知识图中选取一定数量的节点及其连接节点来构造训练样本。然后,利用一种新的基于 Transformer 的知识表示学习算法,从节点的邻域中学习节点的嵌入。最后,将学习到的知识表示融入到语言模型中,增强模型的预训练和微调能力。


利用 Transformer 学习知识图嵌入

Transformer 可作为一个强大的编码器来模拟顺序输入。最近,Koncel-Kedziorski 等人扩展了 Transformer 来编码图结构的输入。在他们的工作中,文本首先被转换成一个图,然后通过图 Transformer 编码器编码输出到一个文本生成模型中。在他们工作的激励下,我们将一个知识子图转换为一个节点序列,并利用一个基于 Transformer 的模型来学习节点嵌入。我们称此模型为“KG-Transformer”,其中,KG 表示知识图,方法的进一步细节在随后章节中作了说明。


Graph Conversion

我们将知识图表示为 G=(E,R),其中 E 表示实体集,R 是 G 中实体对之间的关系集。G 中的三元组表示为 t=(es,r,eo),其中 es 是主观实体,eo 是客观实体,r 是 es 和 eo 之间的关系。图 1 给出了医学 KG 的一个子图示例。两个实体(矩形)和它们之间的关系(箭头)构成了一个知识三元组,例如,(细菌性肺炎,细菌的病原体)。


在传统的 KRL 方法中,如 TransE 以及 ConvKB。在这个设置中,来自实体邻居的信息不能同时更新实体嵌入。图注意力网络(GATs)被提出来是为了解决这一问题。Nathani 等人利用 GAT 来建立 KRL 模型,其中所有指向客观实体的主观实体被用于学习客观实体的嵌入。在我们的工作中,我们提出了一种更通用的方法,以 KG 的任意子图为训练样本,极大地丰富了学习知识表示的情境化信息。为了便于解释,在图 2(a)中,我们选择一个实体及其两个输入实体和输出实体来构建训练样本。


此外,将 KG 中的关系学习为等价于实体的节点,实现了实体嵌入和关系嵌入的联合训练。节点转换过程如图 2(b)所示。知识图可以重新定义为 G=(V,E),其中 V 表示 G 中的节点,涉及 E 中的实体和 R 中的关系,E 表示 V 中节点之间的有向边的邻接矩阵。图 2(c)中的邻接矩阵显示了图 2(b)中节点之间的连接性。


子图的转换结果如图 2(c)所示,包括节点序列、节点位置索引矩阵和邻接矩阵。节点位置索引矩阵的每一行对应于图中的一个三元组。例如,三元组(e1,r1,e)表示为该矩阵中的第一行(0,1,4)。在邻接矩阵中,如果节点 i 连接到图 2(b)中的节点 j,则元素 aij 等于 1,否则为 0。



基于 Transformer 的编码器

我们将节点序列表示为{x1,…,xN},其中 N 是输入序列的长度。此外,节点位置索引矩阵和邻接矩阵分别定义为 P 和 A。实体嵌入和关系嵌入集成在一个矩阵 V,V∈R(ne+nr)×d,其中 ne 是 E 中的实体数,nr 是 R 中的关系类型数,节点嵌入 X={x1,…,xN}可以通过在嵌入矩阵 V.X,P 中查找节点序列{x1,. . ,xN}产生,A 构成 KRL 模型的输入,如图 3 所示。



输入被送入到基于 Transformer 的模型中,对节点信息进行编码。



其中 x’i 是节点 xi 的新嵌入。(+)表示连接这一层中的 H 个注意力头,aij(h)和 Wv(h)是节点 xj 的注意力权重和节点嵌入 xj 在 h(th)注意头中的线性变换。方程 3 中的掩码函数限制了输入节点之间的上下文依赖关系,只涉及节点的入度和当前节点本身来更新节点嵌入。与 Wv(h)类似,Wq(h)和 Wk(h)是节点嵌入的独立线性变换。然后,新的节点嵌入被送到前馈神经网络层以进行进一步的编码。


在 Transformer 模型中,我们将前面提到的 Transformer 块叠加 L 次。基于 Transformer 的编码器的输出可以形式化为



训练目标

编码器 X(o)的输出和节点位置索引 P 用于恢复三元组并生成这些三元组的嵌入:



其中 Tk=(Xeks,Xrk,Xeko)和 Pk=(eks,rk,eko)是有效知识三元组的位置索引。


在本研究中,基于转换的评分函数被用来衡量知识三元组的能量。通过最小化训练数据上 margin-based 的损失函数来学习节点嵌入:



其中 t=(ts,tr,to),d(t)=| ts+tr−to |,γ>0 是一个 margin 的超参数,f(t)是一个实体替换操作,三元组中的头实体或尾实体被替换,而被替换的三元组在 KG 中是一个无效的三元组。


将知识集成到语言模型中

给定一个综合的医学知识图,利用 KG-Transformer 模型可以学习图的上下文知识表示。我们遵循提出的语言模型体系结构(Zhang 等.2019),利用图上下文知识增强医学语言表示。语言模型预训练过程如图 3 的左侧所示。Transformer 块对词的上下文表示进行编码,聚合块实现知识和语言信息的融合。


根据医学 NLP 任务的特点,设计了特定领域的 finetuning 过程。类似于 BioBERT,符号“@”和“, which gave the patient better relief of @ his epigastric pain $ ”。在实体类型任务中,实体提示及其上下文对于预测实体类型至关重要,因此实体提示的更多本地化特征将有助于此预测过程。在我们的实验中,实体开始标签“@”被选择来表示实体类型示例。


实验

数据集

医学知识图

统一的医学语言系统(UMLS)(Bodenreider 2004)是生物医学领域的一个综合性知识库,包含了大规模的概念名称及其相互关系。UMLS 中的元词表涉及各种术语系统,包含约 1400 万个术语,涵盖 25 种不同的语言。在本研究中,我们提取此知识库的一个子集来建构 KRL 的医学知识图。过滤非英语和长术语,最终统计如表 1 所示。



预训练语料库

为了保证足够的医学知识能够被整合到语言模型中,选择了 PubMed 摘要和 PubMed 中心全文作为训练前的语料库,它们是生物医学和生命科学期刊文献的开放存取数据集。由于不同段落中的句子可能没有很好的上下文连贯性,因此选择段落作为下一个句子预测的文档单元。使用自然语言工具包(NLTK)在一个段落中将句子切分,对少于 5 个单词的句子进行分解。结果,一个包含 9.9B 词的大型语料库被归档,用于语言模型的预训练。


在我们的模型中,出现在语料库中的医学术语需要在训练前与 UMLS 元词表中的实体对齐。为了确保元分类中识别的实体的覆盖,使用正向最大匹配(FMM)算法从上述语料库中提取术语跨度,并且过滤小于 5 个字符的跨度。然后,使用 BERT 词汇表将输入文本标记成词块,并且医疗实体与标识的词的第一个子词对齐。


下游任务

在本研究中,我们使用医学领域中的实体分类和关系分类任务来评估模型。


实体类型

给定一个带有实体提示标记的句子,实体类型的任务是识别该实体提示的语义类型。例如,类型“medical problem”用于标记句子中提到的实体“he had a differential diagnosis⟨e⟩asystole⟨/e⟩”。据我们所知,医学领域没有公开的实体类型数据集,因此,从相应的医学命名实体识别数据集构造了三个实体类型数据集。在这些数据集中,实体提及和实体类型被标注,在本研究中,实体提及被视为输入,而实体类型是输出标签。表 2 显示了实体类型任务的数据集统计信息。



关系分类

给定一个句子中有两个实体,任务的目的是确定实体之间的关系类型。例如,在“pain control was initiated with morphine but was then changed to ⟨e1⟩demerol⟨/e1⟩,which gave the patient better relief of ⟨e2⟩his epigastric pain ⟨/e2⟩”这句话中,两个实体之间的关系类型是 TrIP(治疗改善医疗问题)。在本研究中,我们使用三个关系分类数据集来评估我们的模型,这些数据集的统计数据如表 2 所示。


实现细节

知识表征学习

为了实现基本的知识表示,将 UMLS 三元组输入到 TransE 模型中。OpenKE 工具包(Han 等人,2018)对实体和关系嵌入进行训练,嵌入维数设为 100,训练 epoch 数设为 10000。


遵循(Nguyen 等人,2018 年;Nathani 等人,2019)使用的初始化方法,使用 TransE 生成的嵌入来初始化 KG Transformer 模型的表征学习。层数量和隐藏头的数量都设置为 4。由于 UMLS 中节点的中位数为 4(如表 1 所示),因此将一个具有两个输入节点和两个输出节点的节点作为训练实例进行采样。KG-Transformer 模型在一个 NVIDIA Tesla V100(32GB)GPU 上运行 1200 个 epoch,以训练知识嵌入,批量大小为 50000。


预训练

首先,在 UMLS 三元组和 PubMed 语料库上训练医学 ERNIE(MedERNIE)模型,继承了相同的模型超参数(Zhang 等人。2019 年)。此外,将 KG-Transformer 模型学习到的实体嵌入集成到语言模型中,训练 BERT-MK 模型。在我们的工作中,我们将相同数量的预训练与使用与我们相同的预训练语料库的 BioBERT 对齐,并对 PubMed 语料库上的 BERT-Base 模型进行一个 epoch 的优化。


调优

由于有些数据集没有标准的验证集,我们将训练集按 4:1 分为一个新的训练集和一个验证集。对于包含标准测试集的数据集,我们在不同随机种子的特定实验设置下,对每个实验进行 5 次预处理,并将平均结果用于提高评估的可靠性。此外,还采用了 10 倍交叉验证方法来评估没有标准测试集的数据集的模型性能。根据每个数据集中句子的最大长度,输入序列长度为 2010 i2B2/VA(UZUNER 等,2011 年),JNLPBA(Kim 等人,2004 年),BC5CDR(Li 等人,2016 年),GAD(Bravo 等人,2015 年)和 EU-ADR(Van Mulligen 等人,2012 年)分别设置为 390、280、280、130 和 220。初始学习速率设置为 2e-5。


基线

除了这些数据集上的最新模型外,我们还添加了流行的 BERT 基模型和另外两个在生物医学文献上预训练的模型,以供进一步比较。


BERT-Base

这是 Google 最初提出的双向预训练语言模型,它在一系列 NLP 任务上实现了最先进的性能。


BioBERT

这个模型遵循与 BERT-Base 模型相同的模型架构,但是 PubMed 摘要和 PubMed 中心全文文章(大约 18B 令牌)用于对 BERT-Base 进行模型微调。


SCIBERT

一个新的词条词汇表是建立在一个大型科学词条(大约 32 亿个标记)的基础上的。然后,利用这个新的科学词汇和科学语料库,从头开始训练一个新的基于 BERT 的模型。由于科学语料库的很大一部分是生物医学文章,因此该科学词汇也可以看作是生物医学词汇,可以有效地提高生物医学领域下游任务的性能。


结果

表 3 给出了实体类型和关系分类任务的实验结果。对于实体类型任务,所有这些预先训练的语言模型都能达到很高的准确性,这表明医学实体的类型不像一般领域中的类型那么复杂。BERT-MK 的平均准确率分别比 BERT-Base、BioBERT 和 SCIBERT 高 0.71%、0.24%和 0.02%。在不使用外部知识的情况下,SCIBERT 在预先训练的语言模型中获得了与 BERT-MK 相当的结果,这证明了领域特定词汇对输入的特征编码至关重要。


在医学领域中,长词汇是比较常见的,当使用领域无关词汇时,这些词汇将被分割成短片段,这将导致词汇特征的过度泛化。因此,在接下来的工作中,可以将 PubMed 语料库生成的医学词汇引入到 BERT-MK 中。



在关系分类任务中,BERT-Base 的性能不如其他模型,这说明在受限域中使用预先训练的语言模型需要一个域自适应过程。与 BioBERT 相比,BERT-MK 使用了与我们相同的领域特定语料库对预先训练的语言模型进行领域适应,其平均 F 值提高了 2.27%,说明医学知识确实对医学关系的识别起到了积极的作用。下面的例子简要解释了为什么医学知识可以提高关系分类任务的模型性能。“On postoperative day number three,patient went intoatrial fibrillation,which was treated appropriately withmetoprololand digoxin and converted back to sinus rhythm”是 2010 i2b2/VA 数据集的关系样本,关系标签为 TrIP。同时,上述实体对可以与医学知识图中的知识三元组(atrial fibrillation,may be treated by ,metoprolol )对齐。显然,这些知识信息有利于上述示例的关系分类。


TransE vs. KG-Transformer

为了更直观地分析我们提出的预训练语言模型的 KRL 方法,我们将 MedERNIE(TransE 用于学习知识表示)和 BERT-MK(对应于 KG-Transformer)在两个关系分类数据集上进行了比较。表 4 展示了这两个模型的结果。正如我们看到的,集成 KG-Transformer 模型学习到的知识信息,两个关系分类数据集的 F 值分别提高了 0.9%和 0.64%,说明知识质量的提高对预训练语言模型有一定的促进作用。



在图 4 中,随着训练前数据量的增加,在 2010 i2b2/VA 关系数据集上,BERT-MK 始终优于 MedERNIE,并且性能差距有增加的趋势。然而,在 GAD 数据集上,BERT-MK 和 MedERNIE 的性能是相互交织的。我们将关系样本中的实体链接到知识图,并对链接节点之间的关系进行统计分析。我们观察到 2010 年 i2b2/VA 中有 136 个 2 跳邻居关系,而 GAD 中只有 1 个。表 5 所示的第二种情况举例说明了上述情况。三元组(CAD,member of ,Other is chemic heart disease(SMQ))和(Other ischemic heart disease(SMQ),has member,Angina symptom)被发现在医学知识图中,表明实体 cad 与 entity angina symptoms 有 2 跳 neigh-bor 关系。KG Transformer 在 2010 年的 i2b2/VA 中学习了这些 2 跳 neigh-bor 关系,并对 BERT-MK 进行了改进。但是,由于 GAD 数据集的特性,KG Transformer 的能力有限。




在预训练中语料库大小的影响

图 4 显示了不同比例的预训练语料库的模型性能比较。从这个图中,我们观察到,BERT-MK 只使用了 10%-20%的语料,其性能优于 BioBERT,这表明医学知识具有增强预训练语言模型和节省计算成本的能力。


未来工作

我们提出了一种新的方法来学习更全面的知识表示,重点是用一种基于 Transformer 的方法来建模知识图中的子图。此外,学习到的医学知识被整合到预先训练的语言模型中,在几个医学 NLP 任务中,预先训练的语言模型优于 BERT-Base 和另外两个特定领域的预先训练语言模型。我们的工作验证了医学知识对某些医学自然语言处理任务有益的直觉,为医学知识的应用提供了初步的探索。


在后续工作中,将采用传统的下游任务知识表示学习方法,如关联预测等,进一步验证 KG-Transformer 模型的有效性。此外,我们还将探索一种更优雅的方式,将医学知识与语言模型结合起来。


论文原文链接:


https://arxiv.org/pdf/1912.00147.pdf


2019 年 12 月 28 日 14:007497
用户头像
蔡芳芳 InfoQ高级编辑

发布了 572 篇内容, 共 272.9 次阅读, 收获喜欢 1793 次。

关注

评论 1 条评论

发布
用户头像
好好好
2019 年 12 月 29 日 06:09
回复
没有更多了
发现更多内容

分布式RPC框架:Dubbo应用架构解析!使用Dubbo实现负载均衡

攻城狮Chova

负载均衡 dubbo RPC架构 5月日更

微服务项目部署实践:使用GitLab Runner实现微服务项目的持续集成,持续交付和持续部署

攻城狮Chova

持续集成 gitlab ci 持续部署 5月日更

架构实战营模块3课后作业-基于“自研集群+MySQL存储”的消息队列架构设计方案

吴建中

架构实战营

情指勤一体化管控系统开发方案,大数据情报研判平台建设

WX13823153201

现货量化交易系统开发app,量化马丁策略交易平台搭建

WX13823153201

基于 Qt Quick Plugin 快速构建桌面端跨平台组件

网易云信

音视频 qt

基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器

郭旭东

基础设施即代码 IaC

iOS开发底层原理技术~RAC深度解析

ios cocoa 程序员 移动开发

「Adobe国际认证」Adobe Illustrator排版字体设计

Adobe国际认证

SparkStreaming知识点总结

五分钟学大数据

大数据 5月日更

阿里分布式大神亲码“redis核心技术笔记”,没有废话,全是干货!

Java架构追梦

Java redis 阿里巴巴 架构 架构分布式

无敌!阿里p8大佬强推的这款IDEA高效插件,检测代码漏洞一键修复

java专业爱好者

Java IDEA

腾讯三面落马+拒网易、CVTE后,字节四面成功拿下Java岗offer,你们准备好跳槽吗?

Crud的程序员

Java 编程 架构 java程序员

勒索病毒Kraken2.0.7分析

Machine Gun

网络安全 信息安全 渗透测试

JavaScript+TensorFlow.js让你在视频中瞬间消失

不脱发的程序猿

JavaScript 人工智能 开源项目 TensorFlow.js

聊聊那些小而美的开源搜索引擎

代码先生

搜索引擎 elasticsearch meilisearch

java性能分析与问题定位 实战

try catch

Java 性能分析

520 单身福利|获奖名单公布~

InfoQ写作平台官方

活动专区 520单身福利

测试开发专题-开篇

禅道项目管理

软件测试 自动化测试 测试开发

BitMap 转置算法:不一样的 Count 求解方式

GrowingIO技术专栏

BitMap

分布式RPC框架Dubbo实现服务治理:集成Kryo实现高速序列化,集成Hystrix实现熔断器

攻城狮Chova

dubbo Hystrix Kryo 高速序列化 熔断器

测试开发网络篇-网络协议简介

禅道项目管理

软件测试 自动化测试 测试开发

普通代码块 静态代码块 构造代码块......傻傻分不清

麦洛

Java

新的公链技术领袖?海外社区媒体热议全能公链Thinkium

北熊说链

太空猫社区联盟 Thinkium

膜拜!Github访问量破百万,阿里内部首次公布的Java10W字面经有多强?

云流

Java 程序员 架构 面试

支付中心设计

try catch

支付 支付中心

Flume的负载均衡load balancer

大数据技术指南

flume 5月日更

Serverless:这真的是未来吗?(二)

Serverless Devs

Serverless 运维 云原生 后端 无服务器

28天读完349页,这份阿里Java面试通关手册,助我“闯进”字节跳动拿下offer

Crud的程序员

Java 编程 架构

看完了京东年薪150万的大佬扔给我的“阿里内部Java 成长笔记”,差距不止一点点

云流

Java 程序员 架构 面试 计算机

HIVE跑个insert into select xxx 为什么CPU飙高

InfoQ_Springup

hadoop

华为联合中科大提出知识图谱结合预训练模型新方法,节省20%计算成本-InfoQ