论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示

论文笔记整理:吴杨,浙江大学计算机学院,知识图谱、NLP方向。

https://www.ctolib.com/https://arxiv.org/abs/1908.10084

动机

谷歌的 BERT 预训练模型,已经能够在两个句子的语义相似度匹配等需要输入一对句子的任务上取得了非常好的效果,但是,假如说现在有N个句子,需要为每个句子找出与其最相似的另一个句子,显然使用BERT需要O(N*N)的时间,这是非常耗时的操作。因此有必要通过生成每个句子的Embedding,然后通过Embedding直接计算相似度来大大减轻计算量。由于直接使用BERT的输出(CLS,或者平均)作为句子Embedding的效果并不好,因此本文提出了使用孪生网络来输出优秀的句子Embedding。

方法

(1) 概述

SBERT 网络是通过 SNLI 数据集(标注了一对句子之间的关系,可以是蕴含、矛盾或者中立)进行预训练的,所谓孪生网络其实就是两个一模一样共享参数的网络,我们首先将第一个句子输入到BERT,通过不同的Pooling方法获得句子的Embedding表示,第二个句子同样如此,然后将这两个Embedding变换后通过Softmax输出这对句子之间关系的概率进行训练(分类问题)。在训练完毕后,我们就可以将下面的BERT和pooling层拿出来,将句子输入得到其Embedding,再进行其他操作(比如计算相似度可以直接使用cosine-sim)

(2) Pooling方法:

a. CLS:直接使用CLS的输出作为Embedding

b.MEAN: 平均所有token的输出作为Embedding

c. MAX:取每一维输出向量的最大值

(3) 目标函数:

       a. 分类目标函数:

       其中 u 和 v 为两个句子的 Embedding,Wt为变换矩阵,最终的维度为3n*k

该目标函数可用于预训练Sentence Embedding

       b. 回归目标函数:

           该目标函数直接计算u和v的cosine相似度,将之均方误差作为loss。另外结构

也是预测时候的计算方式

       c. 三胞胎目标函数:

    其中Sa为句子a的Embedding,Sp则为句子p,句子p是跟a属于同一类型的

正例句子,n 则是一个反例,三胞胎网络和孪生网络类似,这个目标函数是为了让

正例距离尽量近而反例尽量远

(4) 预训练:

       SBERT在SNLI和MultiNLI数据集上训练,其中SNLI包括了570,000对句子标注了矛盾(contradiction)、蕴含(entailment)和中立(neutral)关系

(5) 评测:

$1 无监督语义相似度匹配(unsupervised STS)

•   STS 数据集:语义相关度标注数据集,给定一对语句,标注其语义相关度(从0不相关到5非常相关)

•   在SNLI和NLI数据集上pre-train,不进行fine-tune,直接计算cos相似度,使用spearman计算cos相似度和标签的相关性,因为标签是离散值,而预测的时候使用的是回归模型,因此需要计算其相关度,论文中说普通的相关度计算不太好,使用Spearman是比较不错的选择

$2 有监督语义相似度匹配(supervised STS)

•      在NLI数据集(两个语句是否蕴含、矛盾、中立)上pre-train

•      在STSb数据集(语义相似度数据集)上进行fine-tune并进行评测

•      使用cos相似度计算,使用Spearman计算与label的相关度

$3 辩论观点相似度匹配(Argument Facet Similarity)

•      AFS语料库包括了关于gun control, gay marriage, 和death penalty三个主题的一系列辩论观点,其标注了一对辩论观点的主题是否相同(0-完全不同的主题,5-完全相同的主题),作者在论文中说,由于AFS的相似度判断不仅仅是观点类似,还需要是理由也类似,而且AFS的用词和语句表达跟SNLI差距很大,因此直接使用pre-train的Embedding计算相似度效果不太好。

•      同时采用了十折交叉检验和使用其中的两个topic训练,3个topic测试的方案,采用Spearman相关度计算

$4 Wikidata相同段落识别(Wikipedia Sections Distinction)

•    对wikipedia的任意两句话标注了是否属于同一小节

•  采用三胞胎网络进行训练,采样两个同一小节和一个不同小节的语句,让同一小节的Embedding尽可能近,不同小节尽可能远

$5 SentEval迁移学习

•      SentEval是专门用于测试Embedding效果的数据集,但是其任务跟本文这些pre-train和fine-tune时的没什么关联,其任务主要有:

•      MR: 影评的情感预测                 CR:商品评价的情感预测

•      SUBJ: 影评的主观程度预测        MPQA:新闻观点的两极分类

•      SST: 斯坦福情感树分类              TREC:问题类型分类

•      MRPC: 微软的判断语义是否等价的数据集

•      从结果中可以看出,SBERT输出的句子Embedding表现不错,并且对句子中的情感成分捕捉的很好。而相比之下,原生BERT输出的CLS向量表现的不尽如人意

(6) 模型简化测试:

作者在SNLI和STSb数据集上测试了使用不同的Pooling方法以及不同的u、v拼接方式对输出的SentenceEmbedding的影响。

事实证明,采用各种Pooling方式其实对SBERT的性能影响不大。而改变拼接方式影响较大,普通的(u,v)拼接的性能很差,最重要的一部分是|u-v|,毕竟分类的输出很依赖与计算两个Embedding的差异度

(7) 计算效率:

在计算效率上,主要与直接使用GloVe Embedding和使用Universal SentenceEncoder进行比较(BERT需要几十个小时)。

由于Transformer的并行性,因此虽然在CPU上SBERT的表现不太好,但是在GPU上还是不错的。当然直接使用GloVe的效率是显而易见的(直接进行向量运算即可)。Smart batching是说通过将长度相似的句子分为一组,这样在mini-batch中就只需要padding到最长的长度,可以减小padding token的计算开销。

总结

本文提出了使用孪生BERT网络训练Sentence Embedding的方法,事实证明这种方式输出的Embedding在捕捉句子的语义和情感等方面都有不错的效果,在各种任务上都有着不输于fine-tune BERT的成绩,而且很大的提升了计算效率。

 

OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

论文浅尝 | 如何利用外部知识提高预训练模型在阅读理解任务中的性能

 

论文笔记整理:吴桐桐,东南大学博士生,研究方向为自然语言处理。

链接:https://www.aclweb.org/anthology/P19-1226/

 

近年来,机器阅读理解已经逐渐发展为自然语言理解方向的主流任务之一。最近,预训练模型尤其是 BERT,在各项阅读理解任务中取得了不俗的表现。该篇文章沿用了预训练模型+精调的思路,在经典的 BERT 模型的基础上,通过引入知识图谱中的语义信息来增强阅读理解模型感知上下文和知识的能力。不同于 ERNIE(百度),ERNIE(清华),以及 K-BERT(腾讯)等模型在预训练阶段就引入外部知识,该模型设计了 Knowledge Integration 模块,用于在面向任务的精调阶段引入知识。这里的知识特指存在于 NELL 和 WordNet 中的概念及同义词等信息。

本文核心思想在于强调对两个数据源信息的整合(Integration), 即通过预训练模型BERT学习自然语言文本信息,通过预训练的表示学习模型学习知识图谱全局拓扑结构信息,整合的过程也是挑选知识的过程,模型学习的目标之一是学会如何挑选对当前任务有用的知识概念的能力。

如上图所示(来自数据集 ReCoRD),普通的BERT模型在没有美国政权等相关背景知识及低频词汇的语义关系的前提下,很难仅通过段落的字面表达选取正确的答案,只有在我们补充了特朗普和美国政府的关系,以及 sanctions 与ban是近义词之后才能让模型明白问题的含义,从而作出正确的回答。

结构

KT-Bert 中引入知识的基本单元是单词,即文本中的每一个词汇都会去知识库中寻找相关的概念和同义词,并取出已经预训练的 KB embedding 作为知识的候选集。KT-Bert 通过双线性层对文本表示以及知识图谱表示进行关联,也就是利用 attention 机制计算每一条候选知识在当前任务中的贡献程度。

总结

本文模型结构清晰,例证符合推断,同时在标准数据集上的效果提升明显。核心模块 Knowledge Integration 虽然和[1]中的 KBLSTM 比较相似,但的确是一种引入知识的可行方案之一。在零样本、少样本问题,长尾问题,数据不均衡问题等设定下,如何引入知识,在模型的什么位置引入外部知识,引入什么样的外部知识都是值得研究的内容,更进一步的,如何判断是否需要引入知识,引入具体的哪几条知识更有待于我们持续探索。

 

[1] Yang, B., Mitchell, T., 2017. Leveraging Knowledge Bases in LSTMs for Improving Machine Reading. Association for Computational Linguistics, pp. 1436–1446.

 

OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

论文浅尝 | 利用知识-意识阅读器改进的不完整知识图谱问答方法

 

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。

来源:ACL2019

链接:https://www.aclweb.org/anthology/P19-1417/

 

本文提出了一种融合不完整知识图谱与文档集信息的end2end问答模型,旨在利用结构化的实体,边缘信息(来自问题对应的知识子图)帮助理解非结构化的文档信息(来自检索),从而获得融合的问答证据,用于答案的预测。在WebQSP数据集上的实验表明,本文模型对于完整度不同知识图谱均能在问答性能上带来提升。

作者用上面这个例子阐述不完整知识图谱问答任务的必要性。从图 1 中的真实示例可以看到,现有的知识图谱并不能覆盖完全的知识信息。因此对于部分问答场景,同时使用到图谱和文本是获取到更精准答案的策略之一。

 

方法

图 2 描述了本文提出的模型框架,主要由一个SubGraph Reader模型(提取知识图谱信息)及一个Knowledge-Aware TextReader(提取文本信息)模型组成。

其中,原始问题经由SubGraph Reader整合得到与问题最为相关的实体/关系将用于重构问题信息(query information),并输入到Knowledge-Aware TextReader帮助从文本中预测问题的答案。

框架细节描述如下:

SubGraphReader

该模型的设计思路在于利用图-注意力机制(Graph-Attention)收集关联实体e的邻居Ne知识。图-注意力主要考虑两个方面:

  1. 邻居关系是否与问题相关;
  2. 邻居实体是否是问题的主题实体;

模型的输出各实体的向量化表示,并利用实体的关联邻居编码知识。

因此这里需要解决的两个子问题分别为:

1.    问题-关系匹配

这里利用了一个共享的LSTM编码问题序列{w1q, w2q…, wnq}及tokenized形式的关系词{ w1r, w2r…, wmr},从而得到两者对应的隐状态hq与hr。在此基础上,使用一个注意力机制对关系进行编码,形式如下:

考虑到一个问题可能匹配多个关系,且一个关系可能只匹配问题的一部分,因此作者在这里提出使用关系去逐个匹配问题中每个词,而后融合得到整体的匹配分数,形式如下:

2.    对于主题实体邻居的特别关注

在上述问题-关系匹配的基础上,作者发现由主题实体衍生的另一个特征也非常有用,即当主题实体的邻居在问题中出现,那么其在知识图谱中对应的三元组相对于不包含主题实体的其他三元组应该与问题具备更高的相关性。

邻居(ri, ei)其注意力得分的计算形式为:

3.    邻居的信息传播

为了聚合图谱中关联三元组的知识,作者对于每个实体定义了其传播规则如下:

其中,e为预先计算的图谱embedding,W是一个可训练的矩阵, 是一个激活函数, 是一个协调参数,由一个线性门函数(linear gate function)计算得到,用于控制原始实体信息的保留程度,形式如下:

 

Knowledge-AwareText Reader

作者表示这个部分主要是基于现有的阅读理解模型(Chen et al. Reading wikipedia to answer opendomain questions, ACL 2017),改进部分在于对问题和文本均学习了更多的知识-意识表示。主要包括:

1.    潜在空间的查询重制

首先使用self-attention编码器编码原始问题向量hq,得到一个独立的问题表示:

作者收集问题的主题实体知识描述为:

接着,利用一个门机制将两者聚合如下:

2.    知识-意识文本强化

对于文本,作者首先使用了一个双向LSTM获取token-level的特征,利用文本中的实体链接注释,以类似查询重制的方式将实体知识融合到上述特征中,不过这里作者采用了一个新的条件门函数用以明确问题的条件,这一方式帮助reader动态选择与问题更加相关的输入。

函数描述如下:

其中, 表示文本的token, 表示其对应的token特征, 则为其对应的链接实体。 则是来自SubGraph Reader的实体embedding

3.    文本阅读中的实体信息聚合

最后,将知识扩充后的信息作为BiLSTM的输入,并且使用输出的token-level隐状态计算注意力得分,形如:

而后,获得每个文档的表示,形如:

对于确定的实体e及包含该实体的文本De,通过以下方式简单的将信息聚合并平均:

最后,利用获取的各实体表示(来自知识库和文本),通过匹配问题向量和实体实现答案的预测:

实验

数据集

            实验使用的数据集来自WebQSP数据集,为了模拟真实场景的,作者也使用了(Sun et al. Open domain question answering using early fusion of knowledge bases and text)的数据集进行测试。

Baseline方面使用Key-Value Memory Network作为参照,分别测试了基于图谱和图谱+文本的两个版本,以及GraftNet的多个版本(GN-KB, GN-LF, GN-EF)

 

实验结果

            相关实验结果罗列如下

此外,作者分析了在30%完整性的图谱场景下,各个子模块产生的效果

以及一些人工分析结果:

 

OpenKG

开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。

技术动态 | 跨句多元关系抽取

 

以下文章来源于知识工场 ,作者赵津

知识工场

知识工场依托复旦大学等研究机构专注于各类知识图谱构建、管理与应用理论及关键技术研究。知识工场以构建能够满足机器语言认知需要的大规模、高质量知识图谱为基本目标,并以推进知识图谱在文本理解、智慧搜索以及机器智脑等领域中的深入应用为主要使命。

继续阅读“技术动态 | 跨句多元关系抽取”

新书速递 | 《知识图谱:方法、实践与应用》

 

本文转载自公众号:博文视点Broadview 。

互联网促成了大数据的集聚,大数据进而促进了人工智能算法的进步。近年来知识图谱作为AI领域底层技术被越来越多的人谈起。知识图谱的升温得益于新数据和新算法为规模化知识图谱构建提供了新的技术基础和发展条件,使得知识图谱构建的来源、方法和技术手段都发生了极大的变化。

知识图谱本身可以看作是一种新型的信息系统基础设施,旨在从数据中识别、发现和推断事物与概念之间的复杂关系,是事物关系的可计算模型。知识图谱最早的应用是提升搜索引擎的能力。随后,知识图谱在辅助智能问答、自然语言理解、大数据分析、推荐计算、物联网设备互联、可解释性人工智能等多个方面展现出丰富的应用价值。

继续阅读“新书速递 | 《知识图谱:方法、实践与应用》”

论文浅尝 | 基于用户反馈的交互式自然语言回答系统提升机制

本文转载自公众号:图谱学苑。

今天介绍的工作是An Interactive Mechanism to Improve Question Answering Systems via Feedback,作者:张欣勃,邹磊,胡森,被CIKM2019接收。本文是一篇与知识库自然语言问答系统(QA)相关的工作。在本文中,我们设计了一种旨在通过用户对QA系统的反馈,来进行提升QA系统的交互式框架(IMPROVE- QA),不仅可以使现有QA系统基于对原始答案的局部反馈获得更精确的答案,还可以提升已有的解析映射词典,以确保QA系统具有自动不断学习增强的能力。为了提供更好的交互性和在线性能,我们设计了一种整合的启发式图挖掘算法(HWspan)以进行查询图的自动修正。在Freebase和DBpedia上进行的大量实验,证实了我们方法的有效性和优越性。

继续阅读“论文浅尝 | 基于用户反馈的交互式自然语言回答系统提升机制”

技术动态 | 数据库研究者视角下的知识图谱研究

本文转载自公众号:图谱学苑 。

 

本次讲解的是数据库领域的三大会(SIGMOD、VLDB、ICDE)近两年关于图数据的研究进展,特别是知识图谱的最新研究。知识图谱是2012年Google为改进其搜索引擎而提出的概念,其本质是一个描述事物本身以及事物之间关联关系的大规模的语义图,然而在数据库领域关于图数据的相关研究已经有了很多年,图论的相关研究甚至在计算机诞生之前就已经有了大量的研究,早在1736年瑞典数学家欧拉(Leornhard Euler)解决了著名的哥尼斯堡七桥问题,由此图论诞生,欧拉也成为图论的创始人。

继续阅读“技术动态 | 数据库研究者视角下的知识图谱研究”