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

论文笔记--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.mzph.cn/news/6119.shtml

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

相关文章

从0到1完成UI自动化测试框架搭建之Pytest

上篇文章中&#xff0c;我们学会了如何使用UI Automator2atx编写简单的Android自动化脚本。 但是有个问题&#xff0c;大家可以思考下&#xff0c;光用自动化脚本让它自己动起来&#xff0c;是不是缺了点什么&#xff1f; 我们写测试用例的时候&#xff0c;是不是经常写&…

C语言第七课----------函数的定义及使用--------C语言重要一笔

作者前言 个人主页::小小页面 gitee页面:秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 __________________________________________________________ 目录 1.函数是什么 2. 库函数 3. 自定义函数 4. 函数参数 5. 函数调用 6. 函数的嵌套调用和链式访问 7. 函数的声…

两天学会用Webpack打包前端代码-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 什么是 Webpack&#xff1f; 使用 Webpack 体验webpack打包过程 修改 Webpack 打包入口和出口 入口 出…

一些抄袭CSDN的爬虫网站(长期收集更新)

目录 一、CodeAntenna1. 简介2. 网址 二、待更新。。。 本文由CSDN点云侠原创&#xff0c;爬虫网站请努力加油爬。 一、CodeAntenna 1. 简介 互联网耻辱柱排行榜Top 1。本人博客里任何一点免费可读的部分都被该网站爬得体无完肤。 2. 网址 https://codeantenna.com/a/B4cMB…

MQTT 与 Kafka|物联网消息与流数据集成实践

MQTT 如何与 Kafka 一起使用&#xff1f; MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议&#xff0c;专为受限网络环境下的设备通信而设计。Apache Kafka 是一个分布式流处理平台&#xff0c;旨在处理大规模的实时数据流。 Kafka 和 MQTT 是实现物…

数学建模-时间序列分析 实例

实例1销量数据预测和实例2人口数据预测实例3上证指数预测和实例4gdp增长率预测 数据-定义时间 不加置信区间清晰点 例二 实例3

json-server Node.js 服务,前端模拟后端提供json接口服务

json-server Node.js 服务,前端模拟后端提供json接口服务 背景&#xff1a; 前后端分离的项目&#xff0c;如果前端写页面的话&#xff0c;必须的后端提供接口文件&#xff0c;作为前端等待时间太久&#xff0c;不便于开发进行&#xff0c;如果前端写的过程中自己搭建一个简要的…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer&#xff08;Qt 设计师&#xff09;使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…

wpf prism使用

目录 1.Nuget中安装prism框架&#xff1a; 2.改造程序启动入口 3.View和ViewModel自动关联 4.绑定 5.Command 6.Event Aggregator&#xff08;事件聚合器&#xff09;、消息通知 7.弹窗、对话服务 DialogService 8.Region区域 9.Navigation导航 10.module 模块 1.Nug…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

【C++技能树】Vector类解析与模拟实现

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我bua&#xff01; Vector 0.Vector简介1.Vector常用接口1.1constructor构造函数1.2 iteratorsort与findfindsort 1.3 Capacity相关接口1.4 Modify相关接口 2. Vector模拟实…

linux:secureCRT通过pem证书远程访问服务器

参考&#xff1a; secureCRT通过pem证书远程访问服务器_Fengshana的博客-CSDN博客 总结&#xff1a; 配置公钥即可

前端vue uni-app仿美团下拉框下拉筛选组件

在前端Web开发中&#xff0c;下拉筛选功能是一种非常常见的交互方式&#xff0c;它可以帮助用户快速选择所需的选项。本文将介绍如何利用Vue.js和uni-app框架来实现一个高效的下拉筛选功能。通过使用这两个强大的前端框架&#xff0c;我们可以轻松地创建具有响应式用户操作的下…

Sublime Text 4 激活教程(Windows+Mac)

下载安装 官网 https://www.sublimetext.com 点击跳转 2023.7.21 版本为4143 Windows激活方式 一、激活License方式 入口在菜单栏中"Help” -> “Enter License” 注意格式&#xff0c;可能会过期失效&#xff0c;失效就用方式二 Mifeng User Single User License E…

Linux底层

一. arm基础知识 基础&#xff1a;c语言 具有一定硬件基础 特点---》前后联系 arm目标&#xff1a; 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解&#xff1f; 以计算应用为中心&#xff0c;软硬件可裁剪的…

Cloudreve搭建云盘系统,并实现随时访问

文章目录 1、前言2、本地网站搭建1.环境使用2.支持组件选择3.网页安装4.测试和使用5.问题解决 3、本地网页发布1.cpolar云端设置2.cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#xff0c;一时间公…

ONNX Runtime 加速深度学习(C++ 、python)详细介绍

ONNX Runtime 加速深度学习(C 、python)详细介绍 本文在 https://blog.csdn.net/u013250861/article/details/127829944 基础上进行了更改&#xff0c;感谢原作&#xff01; ONNXRuntime(Open Neural Network Exchange)是微软推出的一款针对ONNX模型格式的推理框架&#xff0c…

妙记多 Mojidoc PC端(Mac 端+windows端)Beta版本正式上线!

你们呼唤了无数次的妙记多 Mojidoc PC客户端 Beta版本正式上线啦&#xff01; 感谢300位妙友积极参与内测&#xff0c;给予了我们很多非常有效的意见和建议&#xff01;我们会根据用户反馈不断优化和修复相关功能&#xff0c;在此感谢妙友们一直以来的支持&#xff5e; PC端拥…

SkyWalking链路追踪中span全解

基本概念 在SkyWalking链路追踪中&#xff0c;Span&#xff08;跨度&#xff09;是Trace&#xff08;追踪&#xff09;的组成部分之一。Span代表一次调用或操作的单个组件&#xff0c;可以是一个方法调用、一个HTTP请求或者其他类型的操作。 每个Span都包含了一些关键的信息&am…