在nlp领域中,自然语言表征模型由于可以让机器更好地理解人类语言,因此越来越受到人们的关注,其中具有代表性的就是BERT模型,它通过在大量的语料库上进行预训练的方式来实现对于文本语义的理解。简单来说,BERT先随机mask掉一些单词,然后再通过上下文预测的方式来实现语言表征,得到预训练模型后,再针对性地对预训练模型进行微调,就能完成一些nlp的下游任务。

通过分析BERT模型我们可以发现,它虽然考虑了上下文语义,但是还是缺少了一些东西,那就是知识信息。换句话说,BERT模型通过在大量语料的训练可以告诉我们一句话是否通顺,但是它却不知道这句话描述的是什么,它也许能通过训练学到上下文单词之间的一些关系,但是这样的关系还不足以构成知识。举例来说,对于“北京是中国的首都”这句话,如果把“北京”二字mask掉,BERT也许可以通过下文的字样预测正确,但是这并不意味着它理解了“北京”、“中国”和“首都”这些词之间的关系,而这些关系才是知识信息,它们在自然语言中至关重要,如果能够让模型考虑到知识信息,就能让模型不仅在字词、语法层面,还能在知识层面符合人类语言的要求,从而成为一个“有文化”的模型。

一、知识图谱

为了向语言表征模型提供知识信息,我们就需要用到知识图谱,知识图谱能够提供丰富的结构化知识事实,如果能将知识图谱引入到模型当中,就能够对模型进行增强。所以本文首先来介绍一下什么是知识图谱。

虽然知识的种类有很多,但它们基本都可以归纳为形如{实体,关系,实体}三元组的形式,例如对于“北京是中国的首都”这个知识点,就可以归纳为{中国,首都,北京}这样的形式,如下图所示,让每一个实体成为一个节点,用边代表它们之间的关系,就可以将复杂的知识构建为若干三元组,进而组成一个知识图谱。

知识图谱示例

不过仅仅是有这样抽象的图结构是不够的,我们需要知道不同实体之间量化的语义关系,这样才能够让机器去理解,而这就需要用到知识嵌入算法,其中一个代表性的算法就是TransE算法,它的基本思想很简单,就是将每一个实体和关系都表示成一个向量,比如两个实体为h和t,关系为r向量,对于一个三元组,h实体向量加上r关系向量后应该尽可能地等于t实体向量,如下图所示。算法要做的就是通过优化向量的取值,让知识图谱中的每一个三元组都尽可能满足h + r = t,这样就可以得到一个关于知识图谱的最优向量表示。

TransE算法

有了向量表示之后,对于不同实体之间的关系就变得很直观了,如果给定一个三元组中的两个向量,那么就可以通过h + r = t 来对第三个元素进行预测。可以看出,算法只需要学习出实体和关系的向量表示,这样的模型复杂度很小,而且实验表明该模型的预测效果很好,因此这是一个简单高效的算法。

二、ERNIE模型

下面介绍两种通过知识图谱来增强BERT语言表征模型的方法,有趣的是这两种增强模型都叫做ERNIE,一个是由清华和华为提出来的Enhanced Language Representation with Informative Entities,另一个是百度提出的Enhanced Representation through Knowledge Integration。

1. Enhanced Language Representation with Informative Entities

该模型利用了知识图谱中的多信息实体(informative entity)来作为外部知识改善语言表征,为了将知识信息加入到模型当中,该ERNIE模型解决了下面的两个问题:

  • 结构化的知识编码:对于抽象的知识信息,需要将它们进行编码,这样才能够将知识用于语言表征。
  • 异质信息融合:显然,BERT预训练时对单词的编码和对知识的编码是不同的,虽然都是将其转化为向量,但是却位于不同的向量空间,因此就需要对模型进行设计,来实现对于词汇、句法和知识信息的融合。

该模型分为两个部分:抽取知识信息与训练语言模型,为了得到结构化的知识编码,模型采用了上面提到的TransE知识嵌入算法,然后再将编码后的知识信息整合到语义信息当中;为了将更好地将语义和知识信息融合起来,模型改进了BERT模型的架构,并设计了新的预训练任务,这样就可以将实现知识信息与语义信息的融合,具体的模型结构如下图所示。

ERNIE模型架构

模型的整体架构如上图(a)所示,主要由两个模块构成,文本编码器T-Encoder和知识编码器K-Encoder。对于T-Encoder,它负责获取输入token的词法和句法等语义信息,首先它需要对token embedding, segment embedding和positional embedding进行求和来获得input embedding,然后通过多层的双向Transformer编码器来实现对于语义特征的提取,这和BERT模型一致,就不再赘述了。

对于K-Encoder,它需要实现上面提到的异质信息融合,也就是将额外知识信息整合进来自底层的文本信息,这样就可以在一个统一的特征空间中表征 token 和实体的异构信息。具体如上图(b)所示,用 {w1, w2,.....wn} 来表示token序列的 embedding,用  来表示该序列中实体的embedding(由TransE得到),首先令两序列分别通过各自的multi-head self-attention层,如下所示

然后再将序列中的token与相应的实体对齐(实体与对应的首位token对齐),然后将这样的序列输入到信息融合层当中,信息融合层的计算步骤如下:

对于有对应实体的token:

对于没有对应实体的token:

其中 Wt 代表隐藏层中的权重,  是非线性激活函数。

这里说一下个人对于K-Encoder的作用理解,前面的multi-head self-attention层是让模型分别对token和对应实体进行编码,从而能够分别找到两序列内部的关系;然后将两序列对齐后输入信息融合层,使得token embedding在原有的语义信息基础上,还加入了来自于实体的知识信息,从而实现了对于BERT语言表征模型的增强。

为了能够更好地融入知识信息,需要对训练的任务进行新的设计,在BERT原有的masked language model (MLM) 和the next sentence prediction (NSP)作为预训练任务之外,该模型还额外引入了一种新的训练任务,叫做denoising entity auto-encoder (dEA),它做的就是随机 Mask 掉一些实体,并要求模型基于与实体对齐的token、从给定的实体序列中预测最有可能的实体,预测的概率分布计算公式如下所示:

其中linear()代表线性层,dEA预测的损失函数可由交叉熵来计算。

在实际情况中,token与实体的对齐有时会出现一些错误,因此该dEA任务也人为地引入一些错误。1)模型会以5%的概率将与token对齐的实体换位另一个随机的实体,这样做是为了能够矫正token与实体对应错误的情况。2)模型会有15%的概率mask掉对应的token与实体,这样做是为了让模型能够矫正一些没有提取到token-实体对的情况。 3)剩下的概率token-实体对不会变化,这就是为了训练模型将实体信息整合到token表示当中,从而实现更好的语言理解。

对于下游任务的微调过程,该模型通过设计了不同的标记token以适应不同的任务,这就使得输入的训练因任务的不同而不同,如下图所示,其中的[ENT]、[HD]和[TL]都是特定的标记token,为了让不同类型的输入对齐,对于普通任务中对应的是占位符(虚线框)。

由于模型从零开始的训练成本很高,因此该模型的初始化参数采用的是BERT模型的参数。而对于训练数据,该模型不能只采用无监督的纯文本数据了,还需要对文本数据中的实体进行提取和对齐。论文中的模型采用了Wikipedia的数据作为语料库,并将其中的文本与Wikidata中的实体对齐,然后再利用TransE算法将实体转化成为向量,最后就可以将对齐的token和实体向量输入到模型当中进行训练。

2.Enhanced Representation through Knowledge Integration

相对于前一个ERNIE模型,这个ERNIE模型的原理更简单一些,该模型并没用直接输入外部的知识信息,而是通过改变masking策略的方式,隐式地去学习诸如实体关系、实体属性等知识信息

对于BERT模型,其masking策略是基于字的,而这样的策略不利于知识信息的学习,特别是对于中文语言模型,如下图所示,对于BERT模型,它mask掉的只是一些字,因此它在训练时学习到的更多是字与字之间的关系,例如[尔]与[哈]和[滨]之间的局部关系,而对于该ERNIE模型来说,它还会mask掉一些连续的tokens,这样该模型除了能学到上面的关系之外,还能学到[哈尔滨]与[黑龙江]、[省会]等之间的关系,而这就是所谓的知识信息。

需要注意的是,该ERNIE模型采用的仍是基于字特征的输入建模,也就是说模型的token还是基于字的,只不过mask的粒度大小有所变化。对于语料库中的纯文本,先使用词法分析工具对文本数据进行字、词、实体等不同粒度的切分,然后对切分后的数据进行 token 化处理,得到文本的 token 序列及切分边界,接着根据词典将其映射为id数据,在训练过程中模型会根据切分边界对连续的token进行随机mask操作,这样就能让模型能够在语义、知识等不同层次上学习到相应的关系。

在训练数据上,该模型也引入了诸如基于百科类、资讯类、论坛对话类等构造的具有上下文关系的句子对数据,其中论坛对话类数据的引入是该模型的一个特色,模型采用了 DLM(Dialogue Language Model)建模 Query-Response 对话结构,将对话 Pair 对作为输入,引入 Dialogue Embedding 标识对话的角色,利用 Dialogue Response Loss 学习对话的隐式关系,通过该方法建模进一步提升模型语义表示能力。

下图是一些填空问题的,通过与BERT进行对比可以看出,经过增强后的模型对于实体的预测能力有了显著的提高。

最后对两个ERNIE模型做一个总结,

  1. 首先从模型架构来看,相较于BERT,前一个模型有所改动,它在BERT的基础上加入了K-Encoder,实现了知识信息与token原始语义信息的融合,而后一个模型的架构基本没有什么变动。
  2. 从输入数据来看,相比较于BERT的纯文本数据,仍然是前一个模型的输入数据变化较大,它在纯文本数据的基础上,还需要提取出其中的实体、并通过知识嵌入算法将其变为向量,输入的数据既有token embeddings也有entity embeddings,而对于后一个ERNIE模型,输入数据仍然还是纯文本的生成的token,只不过需要先通过词法分析工具对文本数据进行不同粒度的切分。
  3. 从训练任务上来看,为了使得模型能够学到更多的知识信息,两个模型都额外加入了预测mask实体的任务,不过前者是根据token以及其它实体,从一些给定的实体序列中找出概率最大的那个,而后者则是直接根据上下文的token来预测实体对应的每个token。

总结

上面就是关于知识图谱与语言表征模型结合的一些工作,为了提高性能,模型通过引入实体关系等外部知识来进行语言模型的预训练,相信这样的研究方向是非常值得我们接下来去探索的。

参考资料

[1] ERNIE: Enhanced Language Representation with Informative Entities

[2] https://github.com/thunlp/ERNIE

[3] ACL 2019 | 清华等提出ERNIE:知识图谱结合BERT才是「有文化」的语言模型

[4] ERNIE: Enhanced Representation through Knowledge Integration

[5] https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

[6] 中文任务全面超越BERT:百度正式发布NLP预训练模型ERNIE

BERT与知识图谱的结合——ERNIE模型浅析相关推荐

  1. 以知识图谱为例,模型思维:简化世界的人工智能模型

    模型,是客观事物的简化表示! 历史上,每一个伟大模型的提出,都极大地推动了科学和社会的发展,比如历史上出现的3个非常有名的模型--万有引力定律.大陆漂移假说.日心说. 在人工智能领域,也有很多模型用来 ...

  2. 解析KDTCN:知识图谱和深度学习模型联合实现股票预测

    背景概述 今天看了一篇论文我觉得挺有意思,一方面是讲的股票预测相关,另一方面是把深度学习和知识图谱相结合解决一个问题.通常知识图谱和深度学习很少有交集,一般是独立发展的两个人工智能领域解决问题的手段, ...

  3. BERT融合知识图谱之模型及代码浅析

    出品:贪心科技AI 作者:高阶NLP6期学员,吕工匠 最近小编在做一个文本分类的项目,相比一般的文本分类任务,其挑战之处在于: 1)特征很少:训练数据的文本很短,3~5个字符 2)类别很多:>3 ...

  4. 10大NLP精选项目-涉及预训练Bert、知识图谱、智能问答、机器翻译、对话等

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  5. NLP精选10个实现项目推荐-涉及预训练Bert、知识图谱、智能问答、机器翻译、对话等...

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  6. 强烈推荐十大NLP主流经典项目:预训练BERT、知识图谱、智能问答、机器翻译、文本自动生成等...

    自然语言处理技术近几年发展非常快,像BERT.GPT-3.图神经网络.知识图谱等技术被大量应用于项目实践中. 今年大厂的NLP面试中对项目方面的考察深度也随之提升了很多,经常会被面试官揪着细节一步一步 ...

  7. 知识图谱嵌入(KGE)主流模型简介

    1. KGE简介 目前(2020.03)知识图谱嵌入研究方法众多,本文将对其中的主流方法进行简要介绍,如翻译.双线性.神经网络.双曲几何.旋转等.各方法细节请看原论文,文中错误欢迎指出,谢谢. 知识图 ...

  8. 【NLP系列公开课】详解BERT、知识图谱、对话生成、图卷积神经网络

    大家好,我是贪心学院的小编.自从今年二月份举办的火爆的BERT.XLNet专题课以来,已经三个月没有跟大家见面了.这一次我们又给大家带来了重磅级的系列公开课,由贪心学院和京东智联云联合打造,共四次公开 ...

  9. 直播 | CIKM 2021论文解读:基于广群的知识图谱表示学习统一模型框架

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

最新文章

  1. python 字典 转 pandas DataFrame
  2. Spring集成Mybatis plus
  3. ASP技巧:在Access数据库中重命名表
  4. Java 核心 API 必须掌握的程度
  5. 在ASP.NET的母版页中使用图片和超链接,HTML标记和ASP.NET标记的不同
  6. 6.4.3.4 -排除默认网关故障
  7. 一文搞定学术英语写作 (斯坦福SCI论文写作课程笔记)
  8. windows 2003 server 企业英文版 序列号
  9. html飞机大战游戏实验报告,飞机大战实验报告.docx
  10. Linux 修改DNS配置
  11. 通用计算机(PC)和手机是否属于嵌入式设备?(嵌入式的定义)-杂谈
  12. 滚轮JAVA_java滚轮
  13. 开篇“给自己定一个目标,明年7月去实现。希望不是一时的兴起。”
  14. 传感器与检测技术基础 复习提纲 考试不挂科专用版
  15. mysql---分表分库
  16. Gitte (https://gitee.com/) 常用git指令--实例
  17. 使用k3s部署轻量Kubernetes集群快速教程
  18. HM-3400: Create Connectors(HM-3400:创建连接器)
  19. C#实现擦除功能(橡皮擦)
  20. HHSTU1050型货车转向系及前轴设计(说明书+任务书+CAD图纸)

热门文章

  1. 【微型计算机原理与接口技术】课程介绍
  2. Linux笔记001 初识Linux
  3. Ghost硬盘对拷图解教程(双硬盘克隆)
  4. luoguP1462 通往奥格瑞玛的道路[四星]
  5. 我擦!硬盘文件全被人删了!!
  6. 计算机辅助电路与设计试卷,计算机辅助电路设计_习题集(含答案).doc
  7. 视频弹幕技术 php,HTML5实现视频弹幕功能
  8. Linux网络编程——网络协议入门
  9. 如何冥想?2500年的智慧——荒岛十日记
  10. Java 能创建多少线程