当前位置: 首页 > 编程日记 > 正文

自回归与非自回归模型如何兼得?预训练模型BANG或许可解


作者 | 齐炜祯、宫叶云、段楠

来源 | 微软研究院AI头条

头图 | 下载于视觉中国

编者按:近两年,预训练技术的发展极大地提高了自然语言生成的效果,但随着数据量和模型大小的增加,模型在使用时的推断耗时也随之变大。为了降低自回归生成的时延,并行预测目标语句所有单词的非自回归模型被提出。然而,非自回归和半非自回归的依赖关系学习和生成难度较大,它们的生成质量往往弱于自回归模型。针对上述问题,微软亚洲研究院的研究员们提出了新的自然语言生成预训练 BANG。

近两年,预训练技术为自然语言生成的效果带来了极大的改善。基于 Transformer,更大的模型,更大的预训练语料往往可以在下游任务上提供更好的结果。与此同时,模型在使用时的推断耗时也随之变大。这些预训练工作往往针对自回归语言生成模型设计,自回归每次会使用已生成的序列作为已知信息预测未来的一个单词,最终再把每个时间步生成的单词拼成一个完整的序列输出。这其中的时延成为了线上使用或者实时使用这些预训练的自然语言生成模型的瓶颈。

非自回归模型的提出缓解了自回归模型的高时延问题。在非自回归模型中,每个单词之间没有依赖关系,整个输出序列的每个单词被并行地同步预测。虽然其推断速度得到了很大改善,但是生成质量却往往弱于自回归模型。为了平衡推断速度和生成质量,半非自回归的模型被提出和研究。半非自回归的经典做法是把非自回归生成的结果进行多次迭代,但不同半非自回归模型的算法差异比较大。由于和自回归相比,非自回归和半非自回归的依赖关系学习和生成难度较大,所以它们往往在文本-文本翻译,或者语音-文本翻译,文本-语音翻译等输入输出较为对齐的任务上可以提供不错的生成效果,但是很少在问答、对话、摘要等任务上进行研究,而这些领域被自回归生成验证可以拥有不错的生成质量且在预训练下得到提升。

针对上述问题,微软亚洲研究院的研究员们提出了新的自然语言生成预训练 BANG,并指出自回归和非自回归生成可以被统一地理解为,有多大比例的上文信息可以被使用。BANG 的贡献主要有:

1)BANG 在大规模预训练中,通过考虑遮盖任意长度的前文来沟通自回归和非自回归生成;

2)提出跨流可见的多流注意力机制来实现高效的预训练,所有单词在考虑到任意长度前文被遮盖的前提下都可被并行预测;

3)对于不同的需求状况,BANG 支持自回归微调,非自回归微调和半非自回归微调。BANG 第一次把不同的生成方案在同一个预训练模型里进行支持;

4)研究员们在 16GB 的英语语料上进行了预训练,在摘要、对话、问题生成上,BANG 对自回归效果和半非自回归效果带来了显著的提升,并达到了与非预训练的 Transformer 自回归模型相似的评测结果。对于自回归生成的微调,BANG 也可以和当前主流的自回归预训练模型达到相似的结果。

BANG 模型结构

总体结构

基于 Transformer 编码器-解码器的序列生成框架,BANG 由多层堆叠的使用自注意力机制的 Transformer 编码器和多层堆叠的使用跨流可见多流自注意力机制的 Transformer 解码器组成。研究员们考虑了使用输入序列 X={x_1,x_2,…,x_(|X|)},生成预测目标序列 Y={y_1,y_2,…,y_(|Y|)} 的过程。

首先,编码器将输入序列解码编码为隐状态 H_enc。

在解码器端,对于 Y 中的每个单词 y_t,解码器都会产生将前文中的任意长度前缀遮盖后的预测概率:

而 BANG 目标序列的条件生成概率和优化的语言模型则可描述为:

BANG 会优化 Y ̂ 而非原始的输出序列 Y。对 Y 中的每个单词 y_t,Y ̂ 都会考虑对任意 i<t,并用 [MASK] 遮盖掉 y_t 上文的前 i 个单词。可以看到,BANG 的优化目标由三部分组成,自回归部分,非自回归部分和沟通部分。自回归部分和非自回归部分直接优化了下游任务,而沟通部分则设计了一个从自回归到非自回归的课程学习路径。

跨流可见多流自注意力

为了实现上述的优化目标,且高效并行化计算,研究员们提出了跨流可见多流自注意力机制。以预测 y_4 为例,如图1:

图1:BANG 预训练中的信息流

在图1 BANG 预训练中的信息流中,M-S 指主要流(main stream),喂入真实的字符;P-S 指预测流(predicting stream),喂入 [M]([MASK])。P-S 中的 [MASK] 向 M-S 和它之前的 P-S 进行注意力计算来获取前文的真实单词 +[MASK] 字符的信息。

图1最上面的一行展示了主要流和第一个预测流。预测 y_4 使用的 [M] 向主要流中的 y_1,y_2,y_3 进行注意力计算,即 y_4 以条件概率 P(y_4 |y_1,y_2,y_3) 进行预测,其效果如左侧所示。第一个预测流中的所有字符以完整的前文信息进行了自回归的预测。

图1中的第二行则展示了 y_4 在第二个预测流中的效果。第二个预测流中,每个被预测的单词所看到的前文信息都被遮盖住了一个字符,即如左侧所示,y_4 看到真实的 y_1 和 y_2,但是 y_3 被 [M] 遮盖。其实现如右侧的主要流和两个预测流所示。第二个预测流中的 [M] 向主要流的 y_1,y_2 以及第一个预测流中 y_3 的 [M] 进行注意力计算。第一个预测流 y_3 的 [M] 与第二个预测流中的 y_4 则组成了条件概率 P(y_3,y_4 |y_1,y_2)。比较第一行和第二行,可以看到,随着注意力流的增大,前面的上文信息被遮盖,生成方式也从自回归向非自回归移动。

图1中最后一行展示了 y_4 在第四个预测流中,最终以非自回归的方式进行预测。此时第四预测流中预测 y_4 的 [M] 向第一个预测流中 y_1 的 [M],第二个预测流中 y_2 的 [M] 和第三个预测流中 y_3 的 [M] 进行注意力计算,此时没有任何真实的上文信息被使用。

可以看到,第一个预测流中,每个单词都以自回归进行预测;每个预测流中的第一个单词以非自回归进行预测;其他位置则以介于自回归和非自回归之间的方式进行预测。假设目标序列长度 |Y|=n,则 BANG 设置 n 个预测流,此时每个词的任意长度前缀被 [M] 替换的情形都在同一个时间步中被进行并行的预测。

为了优化 GPU 的显存占用和计算量,BANG 采用了成块的计算方案。因为每个位置只会看到它之前的预测流信息,所以 BANG 从第一个预测流向最后一个预测流进行计算,将重复计算的 K 和 V 向量缓存下来。在第 l 层的工作流程如下:

其中,Linear 是从隐状态中获取 Q,K, V 向量的三个线性计算函数,⊕ 代表拼接操作,Attn 函数则可以描述为:

其中,L 为相对位置偏差和控制哪些位置可以被看到的遮盖矩阵。

微调策略

继续以预测 y_4 为例,来看一下针对自回归、非自回归、半自回归的微调策略。在 BANG 自回归生成微调中,预测流中的 [M] 可以从主要流中获取完整的前文信息。其训练方式同 XLNet 的双流机制。

图2:BANG 自回归微调

在 BANG 的非自回归微调中,只有一个预测流,并放置若干个 [M],使用单向信息流,与预训练一致。最后以第一个结束符 [SEP] 代表生成作为结束。

图3:BANG 非自回归微调

而在 BANG 的半非自回归微调中,训练过程同预训练方案,推断过程如图4所示,可以进行任意步数的自回归生成,作为高质量的上文线索,然后将剩余部分并行生成。

图4:BANG 半非自回归生成

实验结果

主实验

BANG 使用了 Wikipedia 加 BookCorpus 的 16GB 英语语料,使用 MASS 的连续字段掩盖预测任务进行了 BANG_base 的预训练。对于每个连续的64个单词的片段,会掩盖其中连续的15%即9个单词,用预测其掩盖的部分作为输出。BANG_base 使用了6层编码器、6层解码器、隐状态768和9个预测流进行了35轮的预训练。并使用了 SQuAD 1.1 问题生成、XSum 摘要和 PersonaChat 对话生成作为评测集,进行了自回归、非自回归、半自回归的对比,结果如下:

表1:SQuAD 1.1 问题生成的实验结果

表2:XSum 摘要任务的实验结果

表3:PersonaChat 对话生成的实验结果

可以看到,BANG 对于非自回归和半非自回归的效果提升非常明显,推断速度基本相似,而对于自回归模型的效果与当前主流的自回归预训练模型也达到了相似的水准。BANG 非自回归的结果达到了未预训练 Transformer 的相似水平,并带来了约十倍的推断速度提升,这表明,通过预训练,非自回归也可以在普通的自然语言生成任务上得到不错的生成质量。

与非自回归预训练对比

因为 BANG 是非自回归的第一个大规模语料的预训练工作,所以在表1-表3中的非自回归和半非自回归的对比模型是没有经过预训练的。为了验证 BANG 对于非自回归生成预训练的有效性,研究员们使用了非自回归的方案进行了预训练并与 BANG 进行对比:

表4:SQuAD 1.1 问题生成上,没有预训练、非自回归预训练和 BANG 预训练的对比

表5:Xsum 摘要任务上,没有预训练、非自回归预训练和 BANG 预训练的对比

可以看出,预训练可以显著提升非自回归的生成结果,而经过相同的非自回归微调,BANG 一致地超过了纯非自回归预训练结果。这表明,BANG 所提出的沟通自回归和非自回归的预训练方案是取得更好结果的原因。

案例分析

本文作者:齐炜祯、宫叶云、段楠

论文链接:(将于近日更新)

BANG: Bridging Autoregressive and Non-autoregressive Generation with Large Scale Pretraining

https://arxiv.org/abs/2012.15525

近期,研究员还将开源代码,敬请关注:

https://github.com/microsoft/BANG

福 利

CSDN给大家发压岁钱啦!

2月4日到2月11日每天上午11点

价值198元的芒果TV年卡,价值99元的CSDN月卡现金红包,CSDN电子书月卡等奖品大放送!百分百中奖

电脑端点击链接参与:

https://t.csdnimg.cn/gAkN

更多精彩推荐
☞爬了20W+条猫咪交易数据,它不愧是人类团宠☞英超引入 AI 球探,寻找下一个足球巨星
☞三年投 1000 亿,达摩院何以仗剑走天涯?☞2021年浅谈多任务学习
点分享点收藏点点赞点在看

相关文章:

STL--自定义类型的排序

STL的排序太坑了&#xff0c;尤其是在VS2010上重载sort函数的第三个比较参数的时候。 invalid operator < 这个错在写多关键字排序的时候就没有停止过。 本来想查书解决&#xff0c;结果各种重载都试了还是不行&#xff0c;百度才知道是因为&#xff1a;strict weak orderin…

《树莓派Python编程指南》——2.3 小结

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第2章&#xff0c;第2.3节,作者&#xff1a;&#xff08;美&#xff09; Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 小结 我们的Python快速导览到此为止。希望这些程序能…

十年沉浮,用Python看创业公司消亡史

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国前言IT桔子有一个新经济死亡公司数据库&#xff1a;https://www.itjuzi.com/deathCompany&#xff0c;统计了2000-2020年之间比较出名的公司 "死亡" 数据。"死亡公司数据库" 的公司关闭时间是依据公开…

.NET下正则表达式应用的四个示例

1.确认有效电子邮件格式 下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址&#xff0c;则 IsValidEmail 方法返回 true&#xff0c;否则返回 false&#xff0c;但不采取其他任何操作。您可以使用 IsVali…

static的本质

通过反编译发现&#xff0c;static的本质是abstract sealed。因此&#xff0c;无法继承System.Math类&#xff0c;因为它是static的。转载于:https://www.cnblogs.com/Benjamin/p/3319856.html

Sunrun2016年Q3财务业绩强劲 冲刺全年目标

美国第二大住宅太阳能光伏系统安装商Sunrun&#xff0c;第三季度业绩表现强劲&#xff0c;促使该公司提高其今年的部署前景。Sunrun也采用当下流行的零首付商业模式&#xff0c;从而获取长期收益。 Sunrun2016年Q3财务业绩强劲 冲刺全年目标责任编辑&#xff1a;editor006 作者…

tcpdump移植和使用

tcpdump移植和使用[摘要]&#xff1a;本文主要讲解了tcpdump相关概念和主要参数的使用&#xff0c;并通过事例来讲解tcpdump的用法&#xff0c;最后讲解如何将其移植到嵌入式开发环境&#xff0c;使其在嵌入式主控板中发挥其强大功能。一. tcpdump概念tcpdump就是dump the traf…

在ASP.NET中自动给URL地址加上超链接

作为一个程序员&#xff0c;在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进&#xff0c;这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后&#xff0c;发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而我当…

释放联接新价值,华为提出“1+N”5G目标网,推动运营商构筑四大数字化转型的核心能力

近日&#xff0c;在MWCS 2021 媒体分析师预沟通会上&#xff0c;华为常务董事、运营商BG总裁丁耘发表了主题为《点亮未来&#xff0c;释放联接新价值》的主题演讲&#xff0c;提出华为将立足联接&#xff0c;通过持续的技术与商业创新&#xff0c;为客户创造价值&#xff0c;为…

光伏电价断崖式下跌 企业遭遇成长烦恼

在弃光限电严重、补贴欠发(三年缺口将达600亿元)、用地问题突显的情况之下&#xff0c;近日&#xff0c;2017年光伏上网电价将酝酿下调近三成&#xff0c;新“四座大山”将蚕食新能源企业的利润。 协合新能源 在香港上市的协合新能源却在不利情况下逆势扩张&#xff0c;营收从2…

asp.net2.0如何加密数据库联接字符串

asp.net2.0如何加密数据库联接字符串 在asp.net2.0中,发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis -pc "hnlaw" -exp 其中"hnlaw"为密钥名…

机器学习 KNN算法实践

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国KNN算法简介KNN&#xff08;K-Nearest Neighbor&#xff09;最邻近分类算法是数据挖掘分类&#xff08;classification&#xff09;技术中常用算法之一&#xff0c;其指导思想是"近朱者赤&#xff0c;近墨者黑"&…

【生活随想】实习结束以及开始校园招聘

我发现很多时候我处理事情的思维是局限的&#xff01;就拿前几天辞职的事情来说吧&#xff0c;我原打算直接向公司辞职&#xff0c;但后来听同学说“还是先试着向公司请假比较好”&#xff0c;不用细想也是&#xff0c;如果公司同意我请假&#xff0c;我还能给自己留一条后路&a…

《21世纪机器人》一一第1章 他用自己的思想打造机器人

第1章 他用自己的思想打造机器人 我在前面说过&#xff0c;这本书的结尾是吉米站在后台&#xff0c;准备闪亮登场&#xff0c;这是他的首次亮相。当我把吉米的这张照片发给我太太时&#xff0c;她很快回复&#xff1a;“这真的是用你的思想打造出的机器人&#xff01;&#xff…

牛年快乐~新一年从甜蜜的烘焙里学AI

作者 | 神经小兮来源 | HyperAI超神经头图 | 下载于视觉中国经过数千年的积累&#xff0c;人类已经开发出了各色美味&#xff0c;但我们的味蕾却永远不知满足。谷歌一位 AI 开发者&#xff0c;为了探索新的可能&#xff0c;用 AI 来开发新的甜点食谱。AI 在菜谱开发这一领域&am…

Datalist控件,Repeater控件如何分页?

Asp.net提供了三个功能强大的列表控件&#xff1a;DataGrid、DataList和Repeater控件&#xff0c;但其中只有DataGrid控件提供分页功能。相对DataGrid&#xff0c;DataList和Repeater控件具有更高的样式自定义性&#xff0c;所以很多时候我们喜欢使用DataList或Repeater控件来显…

java List集合中contains方法总是返回false

ArrayList的contains方法 java 今天在用ArrayList类的caontains方法是遇到了问题&#xff0c;我写了一个存放User类的ArrayList 但在调用list.contains(user)时总是返回false。 去看了下ArrayList的源码&#xff0c;源码如下&#xff1a; Java代码 public boolean contains…

营销自动化的4大预测分析错误

预测分析是数字营销的新领域。许多专家已经讨论了将预测分析与营销自动化工具&#xff08;如HubSpot和Marketo&#xff09;合并的好处。 将预测分析整合到用户的营销自动化策略中可能非常有益&#xff0c;但也很难执行。以下是可能会阻止其实施的一些常见的错误&#xff1a; 1.…

Prolog学习:数独和八皇后问题

上一篇简单介绍了下Prolog的一些基本概念&#xff0c;今天我们来利用这些基本概念解决两个问题&#xff1a;数独和八皇后问题。 数独 数独是一个很经典的游戏&#xff1a; 玩家需要根据nn盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列…

每年节省170万美元的文档预览费用,借助机器学习的DropBox有多强​?

【CSDN 编者按】Dropbox 借助机器学习的预测功能&#xff0c;每年能为公司节省了一百多七十多万美元的基础架构成本。非常了不起的成就。本文&#xff0c;一起来看一看 Dropbox 采用机器学习的经过&#xff0c;以及分析一下其中的利弊。译者 | 弯月 责编 | 张文出品 | CSDN&a…

asp.net 对xml文件的读写,添加,修改,删除操作

asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using…

阿里重金投数梦工场 布局PaaS动了谁的奶酪

就目前云计算市场来看&#xff0c;巨头的争夺表面上还在IaaS激战&#xff0c;但实际上他们对PaaS也在默默布局。6月8日&#xff0c;PaaS相关服务商数梦工场宣布完成光大实业资本、阿里巴巴等公司共同投资的7.5亿元A轮融资。值得注意的是&#xff0c;阿里巴巴是几位投资方中唯一…

ASP.net中太长的数据缩略显示

问题&#xff1a;用<%# DataBinder.Eval(Container.DataItem,"NewsID"&#xff09;%>显示数据的&#xff0c;如果标题太长了怎么规定字数&#xff0c;多余的用"..."代替解决方法&#xff1a; 1.使用后台代码解决&#xff1a; cs文件代码&#xff1a;…

再见 for 循环!pandas 提速 315 倍~

for是所有编程语言的基础语法&#xff0c;初学者为了快速实现功能&#xff0c;依懒性较强。但如果从运算时间性能上考虑可能不是特别好的选择。本次东哥介绍几个常见的提速方法&#xff0c;一个比一个快&#xff0c;了解pandas本质&#xff0c;才能知道如何提速。下面是一个例子…

UVa 374 - Big Mod

题目大意&#xff1a;计算R BP mod M&#xff0c;根据模运算的性质计算。 正常计算会超时&#xff0c;可以用分治的思想降低时间复杂度。不过如果遇到00&#xff0c;结果...话说00的结果是1吗&#xff1f;忘了都... 1 #include <cstdio>2 3 int powMod(int base, int ex…

微软在慕尼黑设立欧洲首个物联网实验室

北京时间3月30日晚间消息&#xff0c;微软今日在慕尼黑设立了其在欧洲的首个物联网实验室。在此之前&#xff0c;微软已经在雷德蒙(Redmond)总部和中国深圳设立了物联网实验室。 慕尼黑是德国许多知名大企业的故乡&#xff0c;如宝马和西门子等。在此之前&#xff0c;思科和IBM…

linux的strace命令

linux的strace命令 strace 命令是一种强大的工具&#xff0c;它能够显示所有由用户空间程序发出的系统调用。 strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息&#xff0c;而且不需要以任何特殊的方式来构建内核。 下面记录几个常用 option . …

明年,我要用 AI 给全村写对联

作者 | 神经小兮来源 | HyperAI超神经春节已经过完&#xff0c;你是否还沉浸在年味里&#xff1f;到腊月二十九、三十&#xff0c;家家户户贴上了 红红的春联&#xff0c;春节就正式拉开了序幕。春联也称为「对联」、「门对」、「楹联」&#xff0c;是汉语所独有的一种艺术形式…

C++实现int与string之间的相互转换

2019独角兽企业重金招聘Python工程师标准>>> c 利用stringstream实现int与string类型的相互转换&#xff0c;记录在此&#xff0c;以备后用 #include<iostream> #include<sstream> #include<string>using namespace std;string add_int(const st…

逆变器的技术创新 让光伏电站更具发展前景

曾几何时&#xff0c;光伏发电因为光照强度和温度的变化&#xff0c;逆变器输出功率波动大&#xff0c;对电网产生冲击&#xff0c;而被称为垃圾电而受到限制。随着技术的进步&#xff0c;光伏逆变器完善了多种保护功能&#xff0c;增加了低&#xff08;零&#xff09;电压穿越…