0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Entity-Linking及基于Retreval的方法

深度学习自然语言处理 来源:圆圆的算法笔记 作者:圆圆的算法笔记 2022-07-13 14:29 次阅读

NLP预训练模型需要非常大的参数量以及非常多的语料信息,这些都是希望能尽可能多的记住文本中的知识,以此提升下游任务效果。相比而言,直接从数据库、知识图谱、搜索引擎等引入外部知识进行知识增强,是一种更直接、节省资源的方法。知识增强也是NLP未来的重要发展方向,由于在NLU这种需要理解、常识性知识的领域,知识增强更加重要。

ACL 2022的一篇Tutorial:Knowledge-Augmented Methods for Natural Language Understanding,对知识增强在NLU中的方法进行了详细汇总。本文整理了这篇Tutorial中重点介绍知识增强模型的10篇工作,包括基于Entity-Linking的方法以及基于Retreval的方法两大类。

Entity-Linking based methodsERNIE: Enhanced Language Representation with Informative Entities(ACL 2019)

ERNIE利用知识图谱中的实体信息给BERT模型引入外部知识,提升预训练语言模型效果。模型主要包括Text-Encoder和Knowledge-Encoder两个部分。在输入部分,除了原始的文本维度embedding,还会引入实体embedding,实体embedding利用TrasE算法基于知识图谱进行预训练。Text-Encoder和BERT相同,对原始的文本输入进行处理生成文本表示。Knowledge-Encoder将文本和对应位置的entity表示进行融合,得到实体知识增强的表示。Knowledge-Encoder的整个计算过程如下图,首先利用两个独立的multi-head attention生成文本word embedding和entity embedding,再将实体和对应位置的文本进行对齐,输入到融合层,再通过融合层生成新的word embedding和entity embedding,这样循环多层得到最终结果。

eeee622a-026d-11ed-ba43-dac502259ad0.png

在预训练阶段,ERNIE增加了一个entity denoising的任务:mask掉或者随机打乱某些word和entity之间的对齐关系,让模型去预测。这种预训练任务起到了将实体知识融入到语言模型中的作用。

KEAR: Augmenting Self-Attention with External Attention(IJCAI 2022)

为了让Transformer存储更多的知识来提升下游任务效果,一般都会采用更大的模型尺寸、更多的训练数据。而KEAR提出引入外部知识的方法,这样即使在中等尺寸的Transformer上也能由于这些外部知识增益带来显著效果提升。

本文主要关注QA任务,给定一个问题和一组答案,从中选择正确答案。模型的结构比较简单,将输入的文本,以及从各种外部知识库中检索到和原始输入相关的知识信息,都以文本的形式拼接到一起,输入到Transformer中。

外部知识主要来源于三个渠道,第一个渠道是知识图谱,从问题和答案中提取entity,然后从ConcepNet中提取包含对应entity的三元组;第二个渠道是从字典中检索相应实体的描述性定义,来弥补模型对于低频词的embedding可能学的不好的情况;第三个渠道是从训练数据中检索和当前输入相关的信息作为补充,缓解模型由于对某些训练数据中的信息记忆不全导致的信息缺失。

ef101f00-026d-11ed-ba43-dac502259ad0.png

Entities as Experts: Sparse Memory Access with Entity Supervision(2020,EaE)

这篇文章在Transformer模型中引入了一个Entity Memory Layer组件,用来从已经训练好的entity embedding memory中引入和输入相关的外部知识。Entity Memory Layer模块可以非常灵活的嵌套在Transformer等序列模型中。

具体做法为,首先要有一个已经训练好的entity embedding存储起来。在Transformer的一层输出结果后,对于输入文本中的每个entity mention,使用这个entity span的起始位置和终止位置的embedding拼接+全连接得到一个虚拟的entity embedding。利用这个虚拟的entity embedding去entity embedding memory中,利用内积检索出最相关的top K个实体的embedding,最后加权融合,得到这个entity对应的实体表示,公式如下。这个表示会和Transformer上层输入融合,作为下一层的输入。

ef54f6c0-026d-11ed-ba43-dac502259ad0.png

预训练任务除了MLM外,还包括Mention Detection和Entity Linking两个优化任务。其中,Mention Detection用来预测每个实体的start和end,采用BIO classification的方式;而Entity Limking任务主要为了拉近Transformer生成的虚拟entity embedding和其对应的entity embedding memory的距离。

ef84dec6-026d-11ed-ba43-dac502259ad0.png

FILM: Adaptable and Interpretable Neural Memory Over Symbolic Knowledge(NAACL 2021)

FILM在上一篇文章中的entity embedding memory基础上,引入了Fact Memory模块,entity embedding layer部分的实现和EaE中相同。

Fact Memory模块和Entity Memory使用的是相同的embedding。Fact Memory模块由Keys和Values两个部分组成,Keys对应的是知识图谱中的subject和relation,而Values是同一个subject和relation下的所有object的集合。使用subject和relation的表示拼接转换得到每个Keys的embedding表示。当需要预测输入文本被mask部分的答案时,使用Transformer在mask位置生成的embedding作为query,在Fact Memory中和各个Keys的embedding做内积,检索相关的object。这些检索出的object信息的embedding会和被mask部分的embedding融合,用于进行答案的预测。

下图是一个例子,被mask部分的embedding包含了句子中的关键信息,利用该embedding在fact memory中可以实现相关信息的检索,对于QA有比较大的帮助。

efd36ed8-026d-11ed-ba43-dac502259ad0.png

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

K-BERT首先将输入文本的实体识别出来,然后去知识图谱中搜索和该实体相关的子图,用这个子图插入到输入句子的对应位置,形成一个句子树。比如下面的图中,Tim Cook从知识图谱检索出是苹果CEO,就将对应文本插入到Tim Cook后面的位置。

f003fdd2-026d-11ed-ba43-dac502259ad0.png

一个核心问题在于,新引入的知识图谱文本会影响原来输入句子的语义。另外,文中采用的是将知识图谱引入的文本直接插入到对应实体后面,其他文本位置对应后移,如何设置position embedding也是个问题。如果直接按照顺序设定position embedding,会让原本距离比较近的单词之间的position embedding变远,也会影响原始语义。为了解决这个问题,插入的知识图谱文本不会影响原来句子各个单词的posistion编号。同时引入了Visible Matrix,让原始输入中和引入的知识信息不相关的文本在计算attention时不可见。通过这种方式,引入的知识信息只会直接影响与其相关的实体的表示生成,不会直接影响原始句子中其他文本的表示生成。引入的知识通过影响对应实体的表示生成,间接影响其他文本的表示生成过程。

2

Retrieval based methodsDense Passage Retrieval for Open-Domain Question Answering(2020)

这篇文章采用的是一种最基础的基于检索的QA解决方法。离线训练一个passage encoder和一个question encoder,目标是让question和包含其答案的passage的表示的内积最大。训练过程中的负样本构造采用了随机采样、BM25和question高相关性但不包含答案的passage、训练样本中包含答案但不包含当前question答案的passage三种方法。在在线使用时,通过计算question和passage表示内积的方式,检索出高相关性的passage解析出问题答案。

REALM: Retrieval-Augmented Language Model Pre-Training(2020)

REALM在预训练语言模型中引入了外部知识检索模块,让模型在进行预测时,不仅能够根据自身参数保存的信息,也能根据丰富的外部信息给出答案。整个预测过程包括两个部分:检索阶段和预测阶段。检索阶段根据输入句子从外部知识中检索相关的文档;预测阶段根据输入句子以及检索到的信息进行最终结果的预测。

在检索阶段,跟上一篇文章类似,使用预训练的两个BERT的表示计算内积求得输入和各个文档的相关性,并进行高相关文档的检索。检索到的文档和原始输入拼接到一起,输入到BERT模型中进行结果预测。

f01f3ca0-026d-11ed-ba43-dac502259ad0.png

RETRO: Improving language models by retrieving from trillions of tokens(2022)

RETRO相比REALM,采用的是chunks维度的检索。首先构造一个数据库,存储文本chunks以及它们的embedding,embedding是由一个预训练BERT产出的。接下来在训练语言模型时,对于每个输入文本,将其切分成多个chunk,每个chunk利用向量检索从数据库中检索出k个最近邻chunks。这些被检索出来的相关chunks会利用attention和原始输入进行融合,增强原始输入信息。原始输入的每个chunk都和该chunk检索出的chunks以及其邻居检索出的chunks进行attention。

f0af4962-026d-11ed-ba43-dac502259ad0.png

WebGPT: Browser-assisted question-answering with human feedback(2022)

WebGPT实现了利用GPT模型使用搜索引擎检索答案。人们在浏览器中搜索的操作可以表述成例如下面的这些文本。预先定义一些下表中的command,训练GPT模型让它根据已经进行的搜索操作,生成下一个command。这个过程一直执行到某个终止条件位置(例如生成end command、执行次数超过一定长度)。某些command代表着采用这些文档作为reference。在执行完所有command后,根据收集到的reference以及问题,生成最终的答案。比如下图b中就是已经执行的command以及问题等信息,这些信息组成了当前搜索的上下文,以文本形式输入GPT中,让模型生成下一个command。

f0ee15d4-026d-11ed-ba43-dac502259ad0.png

f1577b50-026d-11ed-ba43-dac502259ad0.png

Training Data is More Valuable than You Think: A Simple and Effective Method by Retrieving from Training Data(2022)

这篇文章通过检索+拼接的方法扩充原始输入文本的信息,提升多项任务上的效果。整个检索过程在训练数据中进行,将训练数据构造成key-value对。对于输入样本,从训练数据中检索出高相关性的样本,作为知识信息拼接到原始输入中。不同任务会采用不同的检索对象以及拼接方法,如下图。

f197d2d6-026d-11ed-ba43-dac502259ad0.png

3

总结知识增强方法是解决自然语言理解的核心方法,重点在于研究从哪获取知识、如何获取知识以及如何融合知识。使用知识增强的方法可以帮助模型更直接获取预测需要用到的外部知识,也能缓解需要越来越大的预训练模型提升下游任务效果的问题。知识增强+预训练语言模型起到互补的作用,知识增强方法可以给模型提供预训练阶段没见过或者忘记的信息,提升预测效果。

原文标题:ACL 2022 Tutorial解析——知识增强自然语言理解

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3112

    浏览量

    48646
  • nlp
    nlp
    +关注

    关注

    1

    文章

    483

    浏览量

    21985
  • 知识图谱
    +关注

    关注

    2

    文章

    132

    浏览量

    7682

原文标题:ACL 2022 Tutorial解析——知识增强自然语言理解

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言生成可执行二进制文件的具体过程

    C语言源码到生成可执行文件的过程通常包括预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)等多个步骤,每个步骤都有其特定的任务
    的头像 发表于 10-21 14:30 294次阅读
    C语言生成可执行二进制文件的具体过程

    如何将布局受限的从属entity应用到另一个项目

    为了方便大家理解,以下将准备两个项目,分别为 [项目A] 和 [项目B]。我们需要在 [项目B] 中实现 [项目A] 中使用的低级别 entity。在这种情况下,器件型号和 Quartus Prime Pro Edition 环境如下表 (表1) 所示:
    的头像 发表于 08-22 16:42 402次阅读
    如何将布局受限的从属<b class='flag-5'>entity</b>应用到另一个项目

    DC/DC模拟的基本使用方法和特性确认方法

    本篇介绍了DC/DC模拟的基本使用方法及确认基本特性的方法
    的头像 发表于 08-20 17:08 531次阅读
    DC/DC模拟的基本使用<b class='flag-5'>方法</b>和特性确认<b class='flag-5'>方法</b>

    聚徽触控-拼接屏的安装方法和维护方法是什么

    拼接屏的安装方法和维护方法如下:
    的头像 发表于 07-18 09:34 348次阅读

    nlp自然语言处理的主要任务及技术方法

    (Tokenization)、词性标注(Part-of-Speech Tagging)和命名实体识别(Named Entity Recognition)等子任务。 1.1.1 分词(T
    的头像 发表于 07-09 10:26 739次阅读

    鸿蒙开发接口Ability框架:【@ohos.ability.wantConstant (wantConstant)】

    wantConstant模块提供want中action和entity的权限列表的能力,包括系统公共事件宏,系统公共事件名称等。
    的头像 发表于 04-30 16:33 575次阅读
    鸿蒙开发接口Ability框架:【@ohos.ability.wantConstant (wantConstant)】

    stm32cubemx生成电机库5.33,启用了RTOS会报错的原因?

    Internal fault: [0xc43ed8:5050106] in osSignalWait Please contact your supplier. linking
    发表于 04-22 08:18

    《深入理解FFmpeg阅读体验》FFmpeg摄像头测试

    : Found UVC 1.00 device HIK 720P Camera (2bdf:0280) [ 1812.863363] uvcvideo 1-1.5:1.0: Entity type
    发表于 04-17 19:06

    【米尔-芯驰D9360商显板试用评测】USB摄像头测试

    :0280) [ 1812.863363] uvcvideo 1-1.5:1.0: Entity type for entity Extension 3 was not initialized
    发表于 04-17 19:03

    以太网中MDIO协议工作原理与应用

    MDIO主机(即产生MDC时钟的设备)通常被称为STA(Station Management Entity),而MDIO从机通常被称为MMD(MDIO Management Device)。通常STA都是MAC层器件的一部分,而MMD则是PHY层器件的一部分。
    发表于 02-27 09:32 2973次阅读
    以太网中MDIO协议工作原理与应用

    贴片电感的识别方法及故障更换方法

    贴片电感的识别方法及故障更换方法 贴片电感是现代电子设备中常用的一种电子元件,它们通常用于电源滤波、电感耦合和振荡电路中。在使用和维修过程中,有时需要识别贴片电感的参数和故障,并进行更换。本文将详细
    的头像 发表于 02-03 15:23 1670次阅读

    this可以出现在类方法中吗

    是的, this 关键字可以出现在类方法中。在Java中, this 是一个引用,用于引用当前对象的实例。它可以在类的实例方法中使用,以访问该实例的成员变量和方法。 当在类方法中使
    的头像 发表于 11-28 16:24 1280次阅读

    python的insert方法

    insert()方法是Python中的列表对象提供的一个方法,用于在指定位置插入一个元素。该方法的语法如下: list. insert ( index , obj) 其中,index表示要插入的位置
    的头像 发表于 11-21 14:27 1363次阅读

    DAB Service Linking高效测试方案

    DAB仪器
    度纬仪器
    发布于 :2023年11月21日 09:36:32

    DABDRMRDS AF+Linking高效测试方案

    仪器仪表
    度纬仪器
    发布于 :2023年11月09日 14:09:50