论文笔记--ERNIE: Enhanced Language Representation with Informative Entities

news2024/11/26 6:20:37

论文笔记--ERNIE: Enhanced Language Representation with Informative Entities

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 模型框架
    • 3.2 K-Encoder(Knowledgeable Encoder)
    • 3.3 预训练任务
    • 3.4 微调
  • 4. 文章亮点
  • 5. 原文传送门
  • 6. References

1. 文章简介

  • 标题:ERNIE: Enhanced Language Representation with Informative Entities
  • 作者:Zhengyan Zhang, Xu Han, Zhiyuan Liu, Xin Jiang, Maosong Sun, Qun Liu
  • 日期:2019
  • 期刊:ACL

2. 文章概括

  文章提出了ERNIE(Enhanced Language Representation with Informative Entities),一种可以将外部知识融合进入预训练模型的方法。数值实验表明,ERNIE可以提升一些知识驱动的下游任务的表现,且在其它NLP任务上效果基本持平SOTA。

3 文章重点技术

3.1 模型框架

  给定token序列 { w 1 , … , w n } \{w_1, \dots, w_n\} {w1,,wn},其中 n n n为序列长度,令 { e 1 , … , e m } \{e_1, \dots, e_m\} {e1,,em}表示对应的实体序列,其中 m m m为实体数。一般来说 m < n m<n m<n,这是因为不是每个token都可以映射为知识图谱(KG)中的实体(entity),且一个实体可能对应多个token,比如"bob dylan"两个token对应一个实体"Bob Dylan"。记所有token的词表为 V \mathcal{V} V,KG中所有实体的集合为 E \mathcal{E} E。如果对 v ∈ V v\in\mathcal{V} vV,存在与其对应的实体 e ∈ E e\in\mathcal{E} eE,则我们用 f ( v ) = e f(v)=e f(v)=e表示这种对齐关系。特别地,针对上述多个token对应单个实体的情况,我们将实体对齐给第一个token,例如句子中出现"bob dylan…"时, f ( "bob" ) = "Bob Dylan" f(\text{"bob"}) = \text{"Bob Dylan"} f("bob")="Bob Dylan"
  如下图所示,ERNIE的整体框架分为两部分:1) T-Encoder(Textual encoder),用于捕捉基本的词义和句法信息;2) K-Encoder(Knowledgeable encoder),用于将外部知识融合进入模型。记T-Encoder的层数为 N N N,K-Encoder的层数为 M M M
整体框架
  具体来说,给定输入序列 { w 1 , … , w n } \{w_1, \dots, w_n\} {w1,,wn}和对应的实体序列 { e 1 , … , e m } \{e_1, \dots, e_m\} {e1,,em},T-encoder层首先将token序列、segment序列和位置序列输入得到词汇和句法层面的特征 { w 1 , … , w n } = T-Encoder ( { w 1 , … , w n } ) \{\bold{w}_1, \dots, \bold{w}_n\} = \text{T-Encoder}(\{w_1, \dots, w_n\}) {w1,,wn}=T-Encoder({w1,,wn}),其中T-Encoder结构和BERT[1]相同,基本架构为Transformer的Encoder层。
  然后将上述特征传入到K-Encoder层。K-Encoder还会接受外部知识信息,首先我们会通过TransE生成 { e 1 , … , e m } \{e_1, \dots, e_m\} {e1,,em}对应的预训练实体嵌入 { e 1 , … , e m } \{\bold{e}_1, \dots, \bold{e}_m\} {e1,,em},然后将该嵌入同上述特征 { w 1 , … , w n } \{\bold{w}_1, \dots, \bold{w}_n\} {w1,,wn}一起输入K-Encoder层从而得到融合外部知识的输出嵌入: { w 1 o , … , w n o } , { e 1 o , … , e m o } = K-Encoder ( { w 1 , … , w n } , { e 1 , … , e m } ) \{\bold{w}_1^o, \dots, \bold{w}_n^o\},\{\bold{e}_1^o, \dots, \bold{e}_m^o\} = \text{K-Encoder}(\{\bold{w}_1, \dots, \bold{w}_n\},\{\bold{e}_1, \dots, \bold{e}_m\}) {w1o,,wno},{e1o,,emo}=K-Encoder({w1,,wn},{e1,,em}),上述输出嵌入后续可用来作为特征参与下游任务。

3.2 K-Encoder(Knowledgeable Encoder)

  如上图所示,K-Encoder包含堆叠的聚合器,每个聚合器包含token和实体两部分输入。在第 i i i个聚合器中,输入为来自上层聚合器的嵌入 { w 1 ( i − 1 ) , … , w n ( i − 1 ) } \{\bold{w}_1^{(i-1)}, \dots, \bold{w}_n^{(i-1)}\} {w1(i1),,wn(i1)}和实体嵌入 { e 1 ( i − 1 ) , … , e m ( i − 1 ) } \{\bold{e}_1^{(i-1)}, \dots, \bold{e}_m^{(i-1)}\} {e1(i1),,em(i1)},然后将token和实体嵌入分别传入到两个多头自注意力机制MH-ATTs得到各自的输出: { { w ~ 1 ( i ) , … , w ~ n ( i ) } = MH-ATT ( { w 1 ( i − 1 ) , … , w n ( i − 1 ) } ) { e ~ 1 ( i ) , … , e ~ m ( i ) } = MH-ATT ( { e 1 ( i − 1 ) , … , e m ( i − 1 ) } ) \begin{cases}\{\bold{\tilde{w}}_1^{(i)}, \dots, \bold{\tilde{w}}_n^{(i)}\} = \text{MH-ATT}(\{\bold{w}_1^{(i-1)}, \dots, \bold{w}_n^{(i-1)}\})\\ \{\bold{\tilde{e}}_1^{(i)}, \dots, \bold{\tilde{e}}_m^{(i)}\} = \text{MH-ATT}(\{\bold{e}_1^{(i-1)}, \dots, \bold{e}_m^{(i-1)}\})\end{cases} {{w~1(i),,w~n(i)}=MH-ATT({w1(i1),,wn(i1)}){e~1(i),,e~m(i)}=MH-ATT({e1(i1),,em(i1)})。然后模型通过将每个token与其对应的实体进行拼接,将外部实体信息融合进入嵌入。具体来说,针对一个有与之对应的实体的token,假设 e k = f ( w j ) e_k=f(w_j) ek=f(wj),则 h j = σ ( W ~ t ( i ) w ~ j ( i ) + W ~ e ( i ) e ~ k ( i ) + b ~ ( i ) ) \bold{h}_j = \sigma(\bold{\tilde{W}}_t^{(i)} \bold{\tilde{w}}_j^{(i)} + \bold{\tilde{W}}_e^{(i)} \bold{\tilde{e}}_k^{(i)} + \bold{\tilde{b}}^{(i)}) hj=σ(W~t(i)w~j(i)+W~e(i)e~k(i)+b~(i))为整合了实体和token信息的隐藏层输出, w j ( i ) = σ ( W t ( i ) h j + b ~ t ( i ) ) e k ( i ) = σ ( W e ( i ) h j + b ~ e ( i ) ) \bold{w}_j^{(i)} = \sigma (\bold{W}_t^{(i)} \bold{h}_j + \bold{\tilde{b}}_t^{(i)})\\\bold{e}_k^{(i)} = \sigma (\bold{W}_e^{(i)} \bold{h}_j + \bold{\tilde{b}}_e^{(i)}) wj(i)=σ(Wt(i)hj+b~t(i))ek(i)=σ(We(i)hj+b~e(i))表示当前聚合器的输出嵌入,其中 σ \sigma σ为GELU激活函数。对于没有与之对应实体的token,只需要把上述涉及 e e e的部分拿掉即可: h j = σ ( W ~ t ( i ) w ~ j ( i ) + b ~ ( i ) ) w j ( i ) = σ ( W t ( i ) h j + b ~ t ( i ) ) \bold{h}_j = \sigma(\bold{\tilde{W}}_t^{(i)} \bold{\tilde{w}}_j^{(i)} + \bold{\tilde{b}}^{(i)})\\\bold{w}_j^{(i)} = \sigma (\bold{W}_t^{(i)} \bold{h}_j + \bold{\tilde{b}}_t^{(i)}) hj=σ(W~t(i)w~j(i)+b~(i))wj(i)=σ(Wt(i)hj+b~t(i))

3.3 预训练任务

  为了将知识融合进入语言表达,文章提出了一种新的预训练任务:dEA(denoising entity auto-encoder):随机掩码一些token-entity的对齐,然后让模型给予对齐的tokens来预测被掩码的实体。具体来说,给定输入序列 { w 1 , … , w n } \{w_1, \dots, w_n\} {w1,,wn}和对应的实体序列 { e 1 , … , e m } \{e_1, \dots, e_m\} {e1,,em},通过下述公示预测token w i w_i wi对应的实体分布: p ( e j ∣ w i ) = exp ⁡ ( linear ( w i o ) ⋅ e j ) ∑ k = 1 m exp ⁡ ( linear ( w i o ) ⋅ e k ) p(e_j|w_i) = \frac {\exp (\text{linear}(\bold{w}_i^o) \cdot \bold{e}_j)}{\sum_{k=1}^m \exp (\text{linear}(\bold{w}_i^o) \cdot \bold{e}_k)} p(ejwi)=k=1mexp(linear(wio)ek)exp(linear(wio)ej)
  考虑到实际对齐过程中可能存在一些错误,我们增加如下策略:1)5%的时间用随机的实体替代当前实体,使得模型纠正token-实体对齐错误的情况 2)15%的时间将token-实体对齐进行掩码,使得模型可以纠正当实体对齐为被识别到的情况 3)其余时间保持token-实体对齐不变,从而使得模型学习到token和实体之间的对齐方法。
  最终,ERNIE使用MLM、NSP和上述dEA三种训练目标。

3.4 微调

  类似于BERT,我们使用[CLS]的嵌入作为句子的最终嵌入表示来进行分类。针对关系分类任务,我们增加[HD]和[TL]表示head/tail实体的开头和结尾;针对实体抽取任务,我们增加[ENT]表示实体位置。

4. 文章亮点

  文章提出了一种可以将外部信息融合至预训练的ERNIE模型。实验表明,ERNIE可以有效地将KG中的信息注入到预训练模型,从而使得模型在处理实体提取、关系分类等需要外部知识的任务时更加出色,且实验证明外部知识可以帮助模型充分利用少量的训练集。

5. 原文传送门

ERNIE: Enhanced Language Representation with Informative Entities

6. References

[1] 论文笔记–BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[2] 百度ERNIE论文笔记–ERNIE: Enhanced Representation through Knowledge Integration

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/778531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每天五分钟计算机视觉:单卷积层的前向传播过程

什么是单卷积层? 一张图片(输入)经过多个卷积核卷积就会得到一个输出,而这多个卷积核的组合就是一个单卷积层。 这些卷积核可能大小是不一样的,但是他们接收同样大小是输入,他们的输出必须是一般大小,所以不同的卷积核需要具备不同的步长和填充值。 单层卷积网络前向传…

springboot+vue开发后台增删改查

效果图 前端代码【User.vue】 <template><div class"data-container"><!--添加 start--><div class"data-header"><el-button round click"addHander" size"large" type"primary"><el-ic…

Cesium态势标绘专题-普通点(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

ORB-SLAM2学习笔记5之EuRoc、TUM和KITTI开源数据运行ROS版ORB-SLAM2生成轨迹

文章目录 0 引言1 数据预处理1.1 EuRoc数据1.2 TUM数据1.3 KITTI数据 2 代码修改2.1 单目2.2 双目2.3 RGB-D 3 运行ROS版ORB-SLAM23.1 单目3.2 双目3.3 RGB-D ORB-SLAM2学习笔记系列&#xff1a; 0 引言 ORB-SLAM2学习笔记1已成功编译安装ROS版本ORB-SLAM2到本地&#xff0c;本…

3、基于Zookeeper实现分布式锁

目录 3.1、Zookeeper安装和相关概念3.1.1 安装启动3.1.2 相关概念3.1.3 Java客户端 3.2 Zookeeper实现分布式锁的思路分析3.3 ZooKeeper分布式锁的基本实现 3.1、Zookeeper安装和相关概念 3.1.1 安装启动 # 解压到/mysoft文件夹下 tar -zxvf zookeeper-3.7.0-bin.tar.gz # 重…

SAP从放弃到入门系列之批次派生-Batch Derivation-Part1

文章目录 一、概述二、系统配置三、主数据3.1 分类主数据3.2 派生规则设置3.2.1发送物料3.2.2 接收物料 四、 测试数据&#xff08;生产订单&#xff09;五、 最后 Batch Derivation翻译成批次派生&#xff08;衍生&#xff09;或批次继承都是问题不大&#xff0c;继承和派生个…

day31贪心算法 用最少数量的箭引爆气球 和无重叠区间

题目描述 题目分析&#xff1a; x轴向上射箭&#xff0c;12一支&#xff0c;重叠的需要一支&#xff0c;3-8一支&#xff0c;7-16一支 返回2&#xff1b; 就是让重叠的气球尽量在一起&#xff0c;局部最优&#xff1b;用一支弓箭&#xff0c;全局最优就是最少弓箭&#xff1b…

ShardingSphere分库分表实战之MySQL主从集群搭建

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

uniapp 微信小程序 uni.modal弹框+content内容自定义(内容换行)

效果图&#xff1a; 1、template <view click"showPriceDialog"></view>2、data data() {return {contentText:"",} },3、methods // 价格公示 showPriceDialog: function() {// 吨let minPriceTon 1900let maxPriceTon 3895// 袋let …

23.多项式与非多项式曲线拟合对比(matlab程序)

1.简述 拟合标准&#xff1a; (1)原始数据向量与拟合向量之间的距离最小&#xff0c;该距离的度量一般使用误差平方和表示&#xff0c;即均方误差&#xff1a;R||Q-Y||22 (2)当均方误差最小时&#xff0c;说明构造的拟合向量与原始向量最为接近&#xff0c;这种曲线拟合的方法…

sql中group by 的使用

1、概述 Group By 从字面意义上理解就是根据By指定的规则对数据进行分组&#xff0c;所谓的分组就是将一个数据集划分为若干个小区域&#xff0c;然后针对若干个小区域进行数据处理 2、原始表 3、简单的Group By 示例1 select 类别&#xff0c;数量 as 数量之和 from A gro…

easyui Uncaught TypeError: Cannot read properties of null (reading ‘width‘)

问题描述 在将easyui1.3.6版本替换为1.7版本的时候。只有表头显示出来了&#xff0c;内容并没有显示出来&#xff0c;且报异常。表头也没有按照期望的宽度正常显示。错误提示如下 问题原因及解决办法 该问题出现的原因是因为该表格的表头涉及到跨行跨列问题&#xff0c;原因…

2023年国际高校数学建模竞赛A题:购物网站的数据分析

数据处理&#xff1a; Appendix II的词频统计和数据可视化&#xff1a; 代码: 代码注释完美&#xff0c;可直接运行&#xff0c;简单易用&#xff0c;不懂可以直接问我&#xff0c;在线答疑。 四个题目的代码获取&#xff1a; 可直接运行代码 可直接运行代码 可直接运行…

小程序自定义步骤条实现

效果展示&#xff1a; 支持背景颜色自定义 <view class"hl_steps"><view class"hl_steps_item" wx:for"{{steps}}" wx:key"id"><view class"hl_steps_item_circle_out" style"background-color: {{col…

数据可视化——如何绘制地图

文章目录 前言如何绘制地图添加配置项 根据已有数据绘制地图整体代码展示 前言 前面我们学习了如何利用提供的数据来对数据进行处理&#xff0c;然后以折线图的形式展现出来&#xff0c;那么今天我将为大家分享如何将提数据以地图的形式展现。 如何绘制地图 前面我们绘制折线…

Flutter动画库:animations(路由过渡动画或者页面切换动画)

animations animations 是一个 Flutter 库&#xff0c;它提供了一组用于创建动画效果的工具和组件。这个库的核心重点是路由过渡动画或者页面切换动画 地址 https://pub-web.flutter-io.cn/packages/animations 安装 flutter pub add animations看了下官方文档和官方例子&a…

编程规范—代码风格

先看以下两段代码。 对于计算机来说&#xff0c;这两段代码并没有什么区别&#xff0c;都可以执行&#xff0c;执行结果也一样。但是对于我们人类来说&#xff0c;第二段代码显然看起来更舒适&#xff0c;程序的可读性也更强&#xff0c;跟写作文类似&#xff0c;把所有内容挤在…

RocksDB架构

1、rocksdb是什么? RocksDB中文网 | 一个持久型的key-value存储 rocksdb是一种KV存储引擎&#xff0c;常用于数据库存储数据&#xff0c;无法直接使用&#xff0c;没有提供sql命令&#xff0c;通过调用rocksdb提供的api进行数据库的读写等操作。 rocksdb是以leveldb为基础开…

WinCE OSDesign项目创建模拟器

vs2005创建OSDesign项目&#xff0c;WinCE6 1.解决方案管理器&#xff0c;项目鼠标右键属性 默认语言设置 编译选项 2.主菜单&#xff1a;Target->Connectivity Options Add Device/Remove Device不用管 Kernel Service Map Core Service Settings默认 Service Status默…

网络安全(黑客)自学路线笔记

一、什么是黑客&#xff1f; 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手&#xff0c;现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术&#xff1f; 其实&#xff0c;网络信息空间安全已经成为海陆空之外的第四大战场&#xff0c;除了国与国之间的博弈&am…