作者 | PROoshio

整理 | NewBeeNLP

写在前面

文本生成作为自然语言处理非常重要的一环,百度发布了全新的生成式预训练模型ERNIE-GEN,一起看看来自paper作者对ERNIE-GEN的解读。

『ERNIE-GEN』主要针对:

  • 生成训练中的“曝光偏置(exposure bias)”问题;

  • 如何用人类写作习惯去训练自然语言生成;

  • 如何在预训练中增强encoder和decoder的交互。这三个问题,提出了一种Multi-Flow结构的预训练和微调框架。

论文中,ERNIE-GEN利用更少的参数量和数据,在摘要生成、问题生成、对话和生成式问答4个任务共5个数据集上取得了SOTA效果。

  • 论文链接:https://arxiv.org/pdf/2001.11314.pdf

  • 开源地址:https://github.com/PaddlePaddle

Motivation

之前的生成式预训练模型如MASS、UniLM、BART等,将 Mask LM学习任务和seq2seq框架结合,在一系列生成任务上取得了显著的提升,并刷新SOTA。但这些预训练模型却很少关注自然语言生成中的一些具体的问题,对此ERNIE-GEN从以下3个问题展开了实验:

  • 「曝光偏置(exposure bias)」 问题:teacher forcing的生成训练,在训练中用Ground Truth作为decoder端的输入,而解码时用之前生成的序列作为decoder端的输入,导致训练和解码的产生偏差;

  • 「逐字符学习」问题:传统的seq2seq训练,采用逐字符(word-by-word)的学习方式,存在1)预测时过度依赖上一个词;2)与人类写作习惯 (实体、短语甚至句子同时构思,并非单个字符) 不一致的问题;

  • 「Encoder和Decoder相关性减弱」问题:在自监督的seq2seq预训练中,当输入序列很长时(假如encoder和decoder各50%),那么decoder和encoder的语义相关性减弱,模型学习将逐渐退化为Language Modeling。

针对以上3个问题,ERNIE-GEN提出一套基于Multi-Flow attention结构的预训练和微调框架:

Methods

“曝光偏置(exposure bias)”问题

在基于Transformer的seq2seq框架中,decoder端第个字符的预测公式如下:

其中,分别表示预测字符向量和Ground Truth字符向量,为encoder端的表示;对的预测起着直接影响的是用来汇聚上文表示的 ,这也是训练和解码阶段产生差异最直接的地方。同时,在训练和解码中也存在差异,但对 的影响相对较弱。

为了在预训练阶段减小下游任务的“曝光偏置(exposure bias)”问题,ERNIE-GEN提出了两种适用于大规模无监督预料的生成训练方法:1)填充生成机制(Infilling Generation);2)噪声感知生成方法(Noise-aware Generation)。

  • 「Infilling Generation Mechanism 填充生成机制」

针对训练和解码中存在的差异,Infilling Generation通过在decoder端每个字符后填充符号[ATTN]作为来汇聚上文表示,统一了训练和解码中的差异:

Infilling Generation的好处有两点:

  1. 减弱了预测 时对 上一个字符 (训练时)或者 (解码时)的依赖,将预测的注意力转移到更全局的上文表示,从而在解码阶段,有利于缓解 预测错误对 的影响,增强生成的鲁棒性。同时在训练阶段,有利于缓解局部过度依赖;

  2. 统一了训练和解码中的差异,有利于减弱"曝光偏置"。

  • 「Noise-aware Generation Method 噪声感知生成」

针对训练和测试中的差异,ERNIE-GEN在训练中对decoder的输入序列添加随机噪声,来训练模型感知错误,并通过调整attention权重来减弱错误对后续生成的影响;

但最好的方式是用模型先生成一遍目标序列,再根据生成的分布进行采样,这种方式是最本质解决”曝光偏置“的方法,如ACL2019最佳论文,将模型生成序列和Ground Truth序列融合输入decoder进行学习。考虑到预训练基于大规模的无监督预料,ERNIE-GEN只采用简单的随替换,来缓解“曝光偏置”。

逐字符学习的问题

传统的自回归seq2seq训练采用逐字符(word-by-word)的学习范式,而人类写作,往往是实体、短语甚至句子同时构思好的,并非逐字思考;而且逐字符学习很容易局部过拟合,过度依赖上一个字符的表示。

针对逐字符学习的不足,ERNIE-GEN提出了逐片段(span-by-span)的学习范式,即训练时,每步不只预测一个字符,而是预测一个语义完成的片段:

图中为一个语义完整的span。逐字符学习(word-by-word)的目标序列的概率为:

逐片段学习(span-by-span)的目标序列的概率为:

在 内, 和 是同时预测的,它们都依赖相同的上文 。使模型在位置具有生成下一个语义片段span的能力,让模型更具「远见」,并提高生成质量。

为了连续地采样语义完整片段(semantically-complete span),ERNIE-GEN通过「T-检验」来统计训练数据中的片段:

  • 「step1:」 基于初始假设 : “一个随机的 不是一个具备统计意义的片段“,可以计算得到训练数据中所有和的t-统计值,公式如下:

其中 为 的统计概率, 为 的方差(伯努利分布); 为 的总数;

  • 「step2:」 筛选出t-统计值. top 20w的bi-gram和top 5w tri-gram以及全部uni-gram来构造span词典 ;*注:_t-统计值_越高表示越否定假设 , 越可能是统计意义下完整的片段。

  • 「step3:」 根据词典 在ground truth序列中采样span,按照tri-gram bi-gram uni-gram的顺序在中查询,直到一个gram被查到。

Encoder和Decoder相关性减弱的问题

在构造预训练数据时,UniLM和MASS都采样一段连续的子序列作为生成目标,当输入序列很长时,由于目标序列较长,decoder端对encoder的依赖减弱,模型训练有退化为language model的风险,不利于encoder和decoder的联合预训练。对此ERNIE-GEN采用「多片段-多粒度采样」的策略来构造预训练数据:

给定输入序列 ,ERNIE-GEN先采样一个长度分布 ,根据 在 中采样子序列,直到所有子序列 的总长度到 的 25%。拼接后的的序列 为预训练学习的目标序列,采样后的 记作 。如此一来,采样的子序列和 的语义相关性很强,encoder和decoder的相关性也进一步得到增强,有利于encoder和decoder的联合预训练。

Model Architecture

「Multi-Flow Attention」 多流attention结构

基于Infilling generation机制,ERNIE-GEN在预训练中将word-by-word和span-by-span的训练任务进行联合学习。在具体实现中,ERNIE-GEN将infilling generation中插入的[ATTN]符号抽出,拼接成了一个[ATTN]符号序列 用于预测。模型通过输入两个等长的符号序列 来预测word-by-word任务和span-by-span任务的生成结果。

图中蓝色区域为「Contexture Flow」,用于提供上文表示,其 层到  层更新如下:

其中,encoder序列为 ,加噪后的decoder输入序列为

图中绿色区域为基于Infilling generation机制的「Word-by-word generation flow」,用于学习逐字符地生成,其  层到  层更新如下

其中 表示 l-th层,符号序列 的 第 个隐层向量。

图中橘色区域为基于Infilling generation机制的「Span-by-span generation flow」,用于学习逐片段地生成。在给定采样span的边界序列 时,其  层到  层更新如下:

其中 表示 l-th层,符号序列 的 第 个隐层向量,也即第 个span的第 个隐层向量, 。片段 是在给定上文时,同时预测的。

在实现中,「Contexture Flow」「Word-by-word Flow」「Span-by-span Flow」的输入分别是 、 和 ,并通过不同的_attention mask_矩阵 来实现具体的逻辑:

「Contextual Flow」中 是双向可见的, 是单向可见的 (seq2seq);而「Word-by-word Flow」中的符号序列 不能看见相同位置的目标字符;「Span-by-span Flow」中,符号序列 不能看见同一个span中的所有目标字符,如图中的 。

「Word-by-word Flow」「Span-by-span Flow」的loss加权更新,Pre-train阶段,ERNIE-GEN同时训练两个任务;Finetune阶段,ERNIE-GEN只学习word-by-word的生成任务:

「Infilling Decoding」填充解码

训练时,ERNIE-GEN通过[ATTN]符号序列来生成序列,而在解码时,则需要一步一步地插入[ATTN]符号来汇聚上文表示,预测当前位置的字符。为了保证解码的效率,ERNIE-GEN在[ATTN]预测完毕后,会将[ATTN]的表示从序列中去除。具体的解码步骤如下图所示:

Experiments

Pre-training

ERNIE-GEN使用和BERT、UnilM相同的训练数据(16G),base和large模型分别用BERT-base和BERT-large热启,训练40W步左右。预训练阶段,在decoder输入序列中加入比例为 的噪声。ERNIE-GEN在最近补充了用160G预训练数据(同Roberta)下的模型性能,多个生成数据集上取得了SOTA。

Fine-tuning

ERNIE-GEN在摘要生成、问题生成、对话和生成式问答4中任务上进行了实验,都验证了策略的有效性。

  • Finetune参数配置

Ablation Studies

  • Infilling Generation 和 传统生成机制

ERNIE-GEN在3个小数据集上(Gigaword-10k, CNN/DM-10k和SQuAD)上对比了Infilling generation和传统生成机制。对比结果分别用Infilling generation机制和传统生成机制pre-train和finetune,实验结果如下:

当finetune不加噪声时,Infilling generation机制在CNN/DM-10k和SQuAD上较传统机制更好,但在Gigaword-10k上持平;当finetune加入噪声时,两种生成机制的效果都有明显的提升,且infilling机制在摘要生成任务上的涨幅为明显。

左图指出,infilling generation机制在不同的噪声 比例下,都较传统生成机制性能更好;为了进一步说明噪声对生成训练起的作用,论文中分析了不同噪声比例下,比较了encoder字符、未加噪的decoder字符和加噪的decoder字符在最后一层的平均attention权重。有意思的是,随着噪声比例增加,模型将更多的注意力分配到decoder端,用于检测decoder端的错误,并且给错误的字符分配更小的权重,给正确的字符分配更高的权重,从而增加了生成的鲁棒性。

  • Span-by-span 训练任务 和 Noise-aware 生成方法

表中上方的对比实验指出,span-by-span训练任务和Noise-aware生成方法都起到了显著的性能提升作用。

UniLM利用Mask LM的方式进行finetune,实质上是在输入序列中加入[MASK]噪声,随后预测噪声位置的真实字符。这种噪声finetune方式存在Mask(噪声)和预测耦合的问题,学习性能不高 (UniLM在finetune中的mask比例为 )。因此,为了验证ERNIE-GEN的Noise-aware生成方法相较于Mask LM方式更有效,论文也列出了ERNIE-GEN使用Mask LM(0.7)方式进行finetune训练的实验结果结果,并验证了Noise-aware生成方法的有效性。

总结

ERNIE-GEN针对生成任务的具体问题,如“曝光偏置”、局部强依赖性等,提出了一套在预训练中可行的解决方案,增强了自然语言生成学习的鲁棒性。通过设计一套pre-train和fine-tune的统一的学习框架,ERNIE-GEN缩小了pre-train和fine-tune间的差异;同时,通过infilling generation机制和noise-aware generation方法,也缩小了training和decoding之间的差异。最终,ERNIE-GEN在多项生成任务上取得了最好的效果,验证了所提出策略的有效性。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),关注公众号回复『入群』加入吧!

END -

美团算法 SP  | NLP 三面复盘

2021-04-13

独家专访@爱可可-爱生活:如何做好科学研究(干货满满)

2021-04-12

推荐系统技术演进趋势:召回篇

2021-04-06

955 不加班的公司名单!2021 最新版!

2021-04-05

【作者解读】ERNIE-GEN : 原来你是这样的生成预训练框架!相关推荐

  1. 作者解读ICML接收论文:如何使用不止一个数据集训练神经网络模型?

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:欧明锋,浙江大学 导读:在实际的深度学习项目中,难免遇到多个相似数 ...

  2. 【学术相关】作者解读ICML接收论文:如何使用不止一个数据集训练神经网络模型?...

    作者:欧明锋,浙江大学 导读:在实际的深度学习项目中,难免遇到多个相似数据集,这时一次仅用单个数据集训练模型,难免造成局限.是否存在利用多个数据集训练的可能性?本文带来解读. 01 介绍 迄今为止,在 ...

  3. 【Pytorch基础教程36】基于Ernie预训练模型和Bert的新闻分类

    文章目录 一.新闻分类任务 1.1 中文数据集 1.2 数据特点 1.3 跑起代码 二. 预训练语言模型ERNIE 2.1 ERNIE模型结构 2.2 bert模型结构 三.项目代码 1. bert模 ...

  4. ECCV2022 商汤 发布最大的表征学习预训练数据集OmniBenchmark解读

    近些年,基于深度模型的表征学习算法在某些知识域上(例如人脸.动物等)取得了非常优异的成绩,然而由于现有数据集覆盖的视觉类别仍然比较有限,一个覆盖视觉类别足够广,且能够支持学习到适用于许多视觉类别的全面 ...

  5. 漫画解读ERNIE:能和BERT一较高下的知识增强语义表示模型

    -----  五分钟后 ----- ERNIE 是百度开源深度学习平台飞桨(PaddlePaddle)推出的知识增强语义表示模型,通过海量数据建模词.实体及实体关系.相较于 BERT 学习原始语言信号 ...

  6. 直播 | ACL 2021论文解读:提升预训练语言模型实体与关系理解的统一框架

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  7. 微软最新论文解读 | 基于预训练自然语言生成的文本摘要方法

    作者丨张浩宇 学校丨国防科技大学计算机学院 研究方向丨自然语言生成.知识图谱问答 本文解读的是一篇由国防科技大学与微软亚洲研究院共同完成的工作,文中提出一种基于预训练模型的自然语言生成方法. 摘要 在 ...

  8. 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练

    摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...

  9. 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)

    前言 本文系对BERT及其各种优化的简单总结.如RoBERTa.ALBERT.ERNIE.SBERT.MacBERT等. 随积累,即时更新. 总结 BERT 初始预训练任务简介: MLM,即完形填空. ...

最新文章

  1. Nhibernate常见的错误
  2. DFTug - Getting Started(下篇)
  3. c语言的编译环境出错怎么办,编译是通过,连接时出错,怎么办
  4. angular select设置默认选中_技术分享 | Charset 和 Collat??ion 设置对 MySQL 性能的影响...
  5. 《大话设计模式》6个原则 转帖
  6. python时间差转换成天数_Python实现计算两个时间之间相差天数的方法
  7. pip指定源安装_几种python安装简单方法
  8. linux HA工作模型详解
  9. flink写入 mysql_基于 Binlog + Flink 实现多表数据同构/异构方案
  10. 写一个函数将传入的字符串转换成驼峰表示法
  11. inode file 结构
  12. Atitit web 之道 艾龙著 Atitit web 之道 艾龙艾提拉著v2 saa.docx 1. 第1章 Web编程基础知识 (1) 3 1.1. 1.1 什么是Web (1) 3 1.2.
  13. kernelchina.org内核研究
  14. Udacity也弃用React Native了 !
  15. ad15图层显示_AD15视图配置窗口太大点击不了确定怎么设置?
  16. [ajaxpro] ajax效果可以实现但是报错,还经常使ie假死的问题解决
  17. R语言——自定义函数求置信区间
  18. 怎么用photoshop抠图,得到透明图片,填充颜色,得到一个程序透明图标
  19. 网易云发布“工业智能平台”,开放技术赋能工业企业
  20. SQL之case when then用法(用于分类统计)

热门文章

  1. 关于小微商户反欺诈监控指标的内容参考
  2. 数据分析报告应该包含的内容
  3. SpringBoot中快速实现邮箱发送
  4. 关注Ionic底部导航按钮tabs在android情况下浮在上面的处理
  5. PHP自动加载下——PSR4
  6. opencv函数制作的秒针模型
  7. Spring,FetchType.LAZY和FetchType.EAGER什么区别?
  8. 回车,根据编码获取相应记录,然后再将这录绑定到AutoList
  9. 关于自定义脚本rc.local里开机不启动的问题--以tomcat和perl相关的脚本为例
  10. ExtJs之combobox详解