当BERT遇上知识图谱

2019 年 11 月 10 日 AINLP

作者:高开远

学校:上海交通大学

研究方向:自然语言处理

知乎专栏:BERT巨人肩膀

原文地址:

https://zhuanlan.zhihu.com/p/91052495




写在前面

上篇博客理了一下一些知识表示学习模型,那今天我们来看目前最流行的BERT模型加上外部知识这个buff后到底会有怎么样的发展。其实这个思路在之前就有出现过比较有意思且高效的工作,像百度的ERNIEERNIE2.0 以及清华的ERNIE,这些工作的介绍可以参考站在BERT肩膀上的NLP新秀们(PART I)。

√ KG-BERT from NWU

√ K-BERT from PKU

√ KnowBERT from AI2

1、KG-BERT: BERT for Knowledge Graph Completion(2019)

这篇文章是介绍知识库补全方面的工作,结合预训练模型BERT可以将更丰富的上下文表示结合进模型中,在三元组分类、链接预测以及关系预测等任务中达到了SOTA效果。

具体的做法也非常简单易懂,就是修改了BERT模型的输入使其适用于知识库三元组的形式。

首先是KG-BERT(a),输入为三元组 的形式,当然还有BERT自带的special tokens。举个栗子,对于三元组  ,上图中的Head Entity输入可以表示为Steven Paul Jobs was an American business magnate, entrepreneur and investor或者Steve Jobs,而Tail Entity可以表示为Apple Inc. is an American multinational technology company headquartered in Cupertino, CaliforniaApple Inc。也就是说,头尾实体的输入可以是实体描述句子或者实体名本身。

模型训练是首先分别构建positive triple setnegative triple set,然后用BERT的[CLS]标签做一个sigmoid打分以及最后交叉熵损失

上述的KG-BERT(a)需要输入关系,对于关系分类任务不适用,于是作者又提出一种KG-BERT(b),如上图。这里只是把sigmoid的二分类改成了softmax的关系多分类。

有一点想法,既然已经训练了那么多的三元组信息,按理说模型应该是会有学到外部知识的一些信息,也算是一种知识融合,是不是可以把这个模型经过三元组训练后用来做一做其他的NLU任务看看效果?

yao8839836/kg-bert github.com

2、K-BERT: Enabling Language Representation with Knowledge Graph(2019)

作者指出通过公开语料训练的BERT模型仅仅是获得了general knowledge,就像是一个普通人,当面对特定领域的情境时(如医疗、金融等),往往表现不如意,即domain discrepancy between pre-training and fine-tuning。而本文提出的K-BERT则像是领域专家,通过将知识库中的结构化信息(三元组)融入到预训练模型中,可以更好地解决领域相关任务。如何将外部知识整合到模型中成了一个关键点,这一步通常存在两个难点:

  • Heterogeneous Embedding Space: 即文本的单词embedding和知识库的实体实体embedding通常是通过不同方式获取的,使得他俩的向量空间不一致;

  • Knowledge Noise: 即过多的知识融合可能会使原始句子偏离正确的本意,过犹不及。

Okay,理解了大致思想之后我们来分析具体的实现方式。模型的整体框架如下图,主要包括了四个子模块: knowledge layerembedding layerseeing layer 和 mask-transformer。对于一个给定的输入  ,首先 knowledge layer会从一个KG中注入相关的三元组,将原来的句子转换成一个knowledge-rich的句子树;接着句子树被同时送入embedding layerseeing layer生成一个token级别的embedding表示和一个可见矩阵(visible matrix);最后通过mask-transformer层编码后用于下游任务的输出。

Knowledge Layer

这一层的输入是原始句子  ,输出是融入KG信息后的句子树  通过两步完成:

  • K-Query 输入句子中涉及的所有实体都被选中,并查询它们在KG中对应的三元组  ;

  • K-Inject 将查询到的三元组注入到句子  中,将  中的三元组插入到它们相应的位置,并生成一个句子树 t 。

Embedding Layer

K-BERT的输入和原始BERT的输入形式是一样的,都需要token embedding, position embedding和segment embedding,不同的是,K-BERT的输入是一个句子树,因此问题就变成了句子树到序列化句子的转化,并同时保留结构化信息。

Token embedding

句子树的序列化,作者提出一种简单的重排策略:分支中的token被插入到相应节点之后,而后续的token被向后移动。举个栗子,对于上图中的句子树,则重排后变成了Tim Cook CEO Apple is visiting Beijing capital China is a City now。没错,这的确看上去毫无逻辑,但是还好后面可以通过trick来解决。

Soft-position embedding

通过重排后的句子显然是毫无意义的,这里利用了position embedding来还原回结构信息。还是以上图为例,重排后,CEOApple被插入在了Cookis之间,但是is应该是接在Cook之后一个位置的,那么我们直接把is的position number 设置为3即可。Segment embedding 部分同BERT一样。

Seeing Layer

作者认为Seeing layer的mask matrix是K-BERT有效的关键,主要解决了前面提到的Knowledge Noise问题。栗子中China仅仅修饰的是Beijing,和Apple半毛钱关系没有,因此像这种token之间就不应该有相互影响。为此定义一个可见矩阵,判断句子中的单词之间是否彼此影响

Mask-Transformer

BERT中的Transformer Encoder不能接受上述可见矩阵作为输入,因此需要稍作改进。Mask-Transformer是一层层mask-self-attention的堆叠,

Code Here github.com


3、Knowledge-Enriched Transformer for Emotion Detection in Textual Conversations(2019)

这篇是将外部常识知识用于特定的任务,在对话中的情绪识别问题,提出一种Knowledge- Enriched Transformer (KET) 框架,如下图。关于Transformer、情绪识别等背景知识不做复杂介绍,主要看看是如何将外部知识应用起来的。

任务概览

首先来看一下任务,给定对话数据集,数据格式为  ,  表示第  组对话第  句表述,  表示第  组对话第  句表述对应的标签,目标是最大化 

Knowledge Retrieval

模型使用了常识知识库ConceptNet和情感词典NEC_VAD作为外部知识来源,对于对话中的每个非停用词token,都会从ConceptNet检索包含其直接邻居的连通知识图 g(t),并且对对于每一个 g(t) ,会移除停用词、词表外词以及置信分数低于1的concept。经过上述操作,最终得到的,对于每一个token,都会有 a list of tuples:

Embedding Layer

就是常见的word embedding 加上 position embedding

Dynamic Context-Aware Affective Graph Attention

这个名字好拗口…动态上下文感知情感图注意力,目的就是计算每个token融入知识后的上下文表示  其中 表示concept embedding,  代表其对应的attention weight 

这里面最重要的就是  的计算,在这个模型中假设上下文越相关且情感强度越强的concept越重要,即具有更高的权重。那么如何衡量呢?提出了两个因素:相关性因子情感因子

  • 相关性因子:衡量  和会话上下文之间关系的关联程度。

其中  表示余弦相似度,  表示第  组对话的上下文表示,因为一组对话中可能存在多个句子,所以就表示为所有句子的向量平均 

  • 情感因子 :衡量  的情感强度

将上述两个因素综合考虑可得到 的表达式 

最后融入知识的上下文表示可以通过一个线性转变得到 

Hierarchical Self-Attention

提出了一种层次化自注意力机制,以利用对话的结构表示形式并学习上下文话语的向量表示形式。

  • 第一步,对于utterance ,可以表示为: 

  • 第二步,利用所有对话来学习上下文表示 

Context-Response Cross-Attention

最后,通过前面得到的融入外部知识的上下文表示来得出预测标签。

zhongpeixiang/KET github.com

————————————————————————————————————————————————————————————————————————————

看完以后是不是发现大佬们向模型中整合知识的技巧五花八门,但是你再仔细一点会看到大家都有相同一个关键点:**ATTENTION**,哈哈感觉又回到了 attention is all you need。下一篇会也是打算介绍知识融入模型的内容,但重点是会在分析而不是介绍模型~


以上~

2019.11.6




本文由作者授权AINLP原创发布于公众号平台,点击'阅读原文'直达原文链接,欢迎投稿,AI、NLP均可。


推荐阅读

BERT源码分析PART I

BERT源码分析PART II

BERT源码分析PART III

站在BERT肩膀上的NLP新秀们(PART I)

站在BERT肩膀上的NLP新秀们(PART II)

站在BERT肩膀上的NLP新秀们(PART III)

Nvidia League Player:来呀比到天荒地老

关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
3

相关内容

BERT全称Bidirectional Encoder Representations from Transformers,是预训练语言表示的方法,可以在大型文本语料库(如维基百科)上训练通用的“语言理解”模型,然后将该模型用于下游NLP任务,比如机器翻译、问答。
【AAAI2020知识图谱论文概述】Knowledge Graphs @ AAAI 2020
专知会员服务
132+阅读 · 2020年2月13日
17篇知识图谱Knowledge Graphs论文 @AAAI2020
专知会员服务
168+阅读 · 2020年2月13日
知识图谱本体结构构建论文合集
专知会员服务
102+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
医疗知识图谱构建与应用
专知会员服务
375+阅读 · 2019年9月25日
【关系抽取】详聊如何用BERT实现关系抽取
深度学习自然语言处理
32+阅读 · 2020年3月21日
【论文笔记】基于BERT的知识图谱补全
专知
116+阅读 · 2019年9月15日
站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM
PaperWeekly
16+阅读 · 2019年6月6日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
论文浅尝 | 面向知识图谱补全的共享嵌入神经网络模型
开放知识图谱
31+阅读 · 2019年4月7日
【知识图谱】如何构建知识图谱
产业智能官
134+阅读 · 2017年9月19日
揭开知识库问答KB-QA的面纱1·简介篇
PaperWeekly
6+阅读 · 2017年8月3日
当知识图谱遇上聊天机器人
PaperWeekly
34+阅读 · 2017年7月16日
Arxiv
99+阅读 · 2020年3月4日
Arxiv
9+阅读 · 2019年11月6日
Arxiv
20+阅读 · 2019年9月7日
Arxiv
4+阅读 · 2019年9月5日
Arxiv
8+阅读 · 2019年3月21日
VIP会员
相关VIP内容
【AAAI2020知识图谱论文概述】Knowledge Graphs @ AAAI 2020
专知会员服务
132+阅读 · 2020年2月13日
17篇知识图谱Knowledge Graphs论文 @AAAI2020
专知会员服务
168+阅读 · 2020年2月13日
知识图谱本体结构构建论文合集
专知会员服务
102+阅读 · 2019年10月9日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
医疗知识图谱构建与应用
专知会员服务
375+阅读 · 2019年9月25日
相关资讯
【关系抽取】详聊如何用BERT实现关系抽取
深度学习自然语言处理
32+阅读 · 2020年3月21日
【论文笔记】基于BERT的知识图谱补全
专知
116+阅读 · 2019年9月15日
站在BERT肩膀上的NLP新秀们:XLMs、MASS和UNILM
PaperWeekly
16+阅读 · 2019年6月6日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
论文浅尝 | 面向知识图谱补全的共享嵌入神经网络模型
开放知识图谱
31+阅读 · 2019年4月7日
【知识图谱】如何构建知识图谱
产业智能官
134+阅读 · 2017年9月19日
揭开知识库问答KB-QA的面纱1·简介篇
PaperWeekly
6+阅读 · 2017年8月3日
当知识图谱遇上聊天机器人
PaperWeekly
34+阅读 · 2017年7月16日
Top
微信扫码咨询专知VIP会员