GPT2文本生成有问题?这里有些潜在解决思路
作者 | Leo Gao
译者 | 凯隐
编辑 | 夕颜
出品 | AI科技大本营(ID: rgznai100)
【导读】在过去的一年中,人们对文本生成模型的兴趣重新燃起,这在很大程度上要归功于GPT2,它主要展示了使用更大模型、更大数据和更大计算量的Transformer架构的有效性。值得注意的是,在没有经过训练的情况下,该模型在几个语言建模数据集上就获得了SOTA结果,这显示了其惊人的泛化能力。
随着GPT2的成功,其他一些实体也加入了这一潮流,并发布了自己的大型单向语言模型,例如Grover,Nvidia的Megatron-LM和Salesforce的CTRL。且不说OpenAI声称该模型“太危险而不能发布”而引发的争议,GPT2生成的文本从各方面来看都要比以前的文本生成模型好很多。
然而这些模型也显示出一些缺陷,并且这些缺陷可能无法仅通过扩大模型(更大的模型、数据、计算量)来弥补。在这篇文章中,我们将快速概览其中的一些缺陷并尝试解决这些问题,并在此基础上讨论未来研究的一些潜在方向。
什么是自回归语言模型?为何这种模型很重要?
语言建模的核心问题是使用参数化函数逼近英语(或Lojban,Navajo,Python等) 中自然语言序列的分布。为了让建模更加灵活,自回归语言模型中将理想模型表示为:
可以从公式中看到,条件概率在xi处的值总是基于之前的值(
),换句话说,为了使建模问题更易于处理,我们转而训练参数化的函数,根据前面的符号来预测下一个符号,并使用附加到原始上下文的新生成的符号作为新上下文重复此操作。接着,我们可以通过对这些条件概率求积,得到对任意给定序列的可能性的估计。
包括分类和翻译在内的许多问题都可以等价地表述为自回归问题,或者可以显著地从一个强大的预训练自回归语言模型中受益,因此自回归语言模型是具有很强的泛化性的,其重要性不言而喻。从这个角度上讲,改进语言建模也可能是解决一般人工智能问题的重要一步。
定向搜索和文本重复性
在提供的GPT2样本中,作者使用top-k滤波和温度进行采样,而不是使用beam搜索,这样可以通过最大化似然得到更高质量的样本。然而令人惊讶的是, “The Curious Case of Neural Text Degeneration” (Holzman et al. 2019) 指出GPT2通过更高的预测概率得到的样本实际上质量更差,并且采样得到的文本趋向于高重复性。作者认为这个建模问题本质上是因为最大似然是一个根本错误的采样目标,并提出了核抽样,这种抽样方法可以截断低似然的符号,类似于top-k采样,同时保留长尾分布。然而高似然采样可以从更直观的角度理解,可以认为,既然从理想的语言模型中抽取了一个极大似然样本,根据定义,这个样本将提供最可能出现的英文文本,这已经考虑到了极其乏味和重复的文本的可能性!因此问题是出在训练目标,而不是采样目标。
因此另一个简单的解决方法就是在训练时添加对重复性的惩罚,事实上,在神经文本退化论文发表后不久,我就独立地实现了我自己的GPT2波束搜索采样器。在重新考虑文本退化问题之后,我为重复的字符添加了一个简单的、任意时间可解码惩罚,乍一看结果还可以接受,但在理论上几乎没有理由这样做。最近,“Neural Text DeGeneration with Unlikelihood Training” (Welleck, Kulikov et al. 2019)提出了一种更加复杂的训练时间惩罚方案,包括在训练目标函数中添加一项额外惩罚项:
其中Ct是之前已经使用过的符号。虽然从经验上来说是成功的,但是没有很好的理论理由来解释为什么较少的重复量会更好地模拟潜在的分布。
曝光误差
通过最大似然来训练自回归语言模型的一个主要问题是曝光误差(exposure bias, Ranzato et al., 2015)。自回归模型只对从目标语言分布中抽取的样本进行训练和评估,而在评估时则输入由该模型生成的样本。这个错误会极其迅速地加剧,并且人们已经观察到,GPT2在经过一定次数的训练后,其质量急剧下降,尽管这已经是公认的事实。
未来工作展望
这个问题与强化学习中的许多问题高度相似,目前许多工作,例如 “SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient” (Yu et al., 2016), “Improving Conditional Sequence Generative Adversarial Networks by Stepwise Evaluation” (Tuan et al., 2018), and “Toward Diverse Text Generation with Inverse Reinforcement Learning” (Shi et al., 2018) 使用强化学习来训练序列生成模型中的各个部分,从在GAN设置中传播生成器梯度到使用反向强化学习(它本身与GANs紧密相连)。
在这些基于强化学习的方法对GPT2中的模型这样大的模型变得实用之前,还有很长的路要走。中间步骤是使用现有的预训练语言模型,并在强化学习环境中对它们进行调优。此外,一个能够很好地量化曝光误差的评估指标对于适当的定量分析也很重要,该方向的一篇不错的论文是“Jointly Measuring Diversity and Quality in Text Generation Models” (Montahaei et al., 2019)。
总结
虽然最近的工作已经证明由于模型大小的增加,神经文本生成的质量有了巨大的改进,但是曝光误差的问题仍然存在于生成的长序列文本中。这方面的进展可能需要从强化学习的工作中吸取经验。事实上,在强化学习和语言建模的相互结合这个思路上,已经出现了许多有前途的工作。希望这些改进的语言模型不仅是在单个段落的尺度内,也可以整片文章的尺度内与人工文本竞争。
参考链接
GPT2:https://openai.com/blog/better-language-models/
“The Curious Case of Neural Text Degeneration” :https://arxiv.org/abs/1904.09751
“Neural Text DeGeneration with Unlikelihood Training” : https://arxiv.org/abs/1908.04319
原文链接:
https://leogao.dev/2019/10/27/The-Difficulties-of-Text-Generation-with-Autoregressive-Language-Models/
(*本文为AI科技大本营翻译文章,转载请微信联系 1092722531)
◆
精彩推荐
◆
1、评选进行中,参与投票即有机会参与抽奖,60+公开课免费学习
2、【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!活动咨询,可扫描下方二维码加入官方交流群~
CSDN「Python Day」咨询群 ????
来~一起聊聊Python
如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)
推荐阅读
连遭Google、Tesla“冷眼”,俄罗斯小伙8个月喜提顶级自动驾驶公司Offer
图模型+Bert香不香?完全基于注意力机制的图表征学习模型Graph-Bert
5个可以帮助你提高工作效率的新AI工具
亚马逊机器学习服务:深入研究AWS SageMaker
从4个月到7天,Netflix开源Python框架Metaflow有何提升性能的魔法?
管理7k+工作流,月运行超10000万次,Lyft开源的Flyte平台意味着什么?
漫画 | 每年春节程序员都要经历的灵魂拷问
疫情下的区块链企业:11家公司共捐赠6000多万元,发动海外采购渠道
你点的每个“在看”,我都认真当成了AI
相关文章:

HTML5学习之二:HTML5中的表单2
(本内容部分节选自《HTML 5从入门到精通》) 对表单的验证 ———————————————————————————————————————————————————————— •1、required属性 required属性主要目的是确保表单控件中的值已填写。在提交时&…
Redis源码解析——有序整数集
有序整数集是Redis源码中一个以大尾(big endian)形式存储,由小到大排列且无重复的整型集合。它存储的类型包括16位、32位和64位的整型数。在介绍这个库的实现前,我们还需要先熟悉下大小尾内存存储机制。(转载请指明出于…
GitHub标星1.2w+,Chrome最天秀的插件都在这里
作者 | Rocky0429来源 | Python空间(ID: Devtogether)大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻...作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候ÿ…

基础篇 第四节 项目进度计划编辑 之 任务关联性设定
1.任务关联性的类型 ◎完成 —— 开始 FS ◎开始 —— 开始 SS ◎开始 —— 完成 SF 完成 —— 完成 FF 2.设定任务关联性 三种方法: ◎在条形图中直接拖拽 ◎在“前置任务”列中编辑 ◎在“任务信息”中的“前置任务”选项卡中编辑 3.设定“延隔时间” 延隔时间小于…
开坑,写点Polymer 1.0 教程第3篇——组件注册与创建
之前一篇算是带大家大致领略了一下Polymer的风采。这篇我们稍微深入一丢丢,讲下组件的注册和创建。 创建自定义组件的几种方式 这里我们使用Polymer函数注册了一个自定义组件"my-element" // register an element Polymer({is: my-element,created: funct…
Redis源码解析——Zipmap
本文介绍的是Redis中Zipmap的原理和实现。(转载请指明出于breaksoftware的csdn博客) 基础结构 Zipmap是为了实现保存Pair(String,String)数据的结构,该结构包含一个头信息、一系列字符串对(之后把一个“字符串对”称为一个“元素…

IIS7入门之旅:(3)CGI application和FastCGI application的区别
前言: 一如既往地,IIS支持通过提供pluggable module来提供对第3方script的支持,例如php等。在IIS7中,对于CGI的支持有了一个新的变化,就是同时提供了2种CGI支持模块,分别为:CGIModule (cgi.dll)和FastCGIMo…

抗击疫情!阿里云为加速新药疫苗研发提供免费AI算力
1月29日,阿里云正式宣布:疫情期间,向全球公共科研机构免费开放一切AI算力,以加速本次新型肺炎新药和疫苗研发。 目前,中国疾控中心已成功分离病毒,疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期…
SpriteBuilder中如何平均拉伸精灵帧动画的距离
首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标。 你可以通过查看Timeline中精灵帧方块上是否有阴影来辨识是否选中…

C++拾趣——类构造函数的隐式转换
之前看过一些批判C的文章,大致意思是它包含了太多的“奇技淫巧”,并不是一门好的语言。我对这个“奇技淫巧”的描述颇感兴趣,因为按照批判者的说法,C的一些特性恰巧可以让一些炫耀技术的同学有了炫耀的资本——毕竟路人皆知的东西…
数十名工程师作战5天,阿里达摩院连夜研发智能疫情机器人
作者 | Just出品 | AI科技大本营(ID:rgznai100)新型肺炎疫情防控战在各大互联网科技公司拉响,阿里、百度等公司陆续对外提供相应技术和产品。当前,疫情当前防控一线人员紧缺,多地政务热线迎来大波问询市民,…

路由器互联端口处于不同网段的路由方法和原理
如下图:两台cisco路由器相连接的两个端口不在同一个网络,如何实现两台路由器的互联?初看似乎绝对不可能,但是这是可行的,而且我已经把这个变成了现实。这里讲述配置的方法,以及解释原理。这个就要讲到路由原…

上网行为管理产品选型简单考量
信息化浪潮汹涌向前,人们的生活、工作、学习越来越离不开IT,离不开网络。 对于很多组织来讲,网络就意味着效率、甚至生产力,协同办公、决策、科研、资金划拨等等都对网络有了前所未有的依赖。网络应用日益复杂、多变、动态特征发展…
码农技术炒股之路——配置管理器、日志管理器
配置管理器和日志管理器是项目中最为独立的模块。我们可以很方便将其剥离出来供其他Python工程使用。文件的重点将是介绍Python单例和logging模块的使用。(转载请指明出于breaksoftware的csdn博客) 配置管理器 在《码农技术炒股之路——架构和设计》中我…
“数学不好,干啥都不行!”资深程序员:别再瞎努力了!
之前很多程序员读者向我们反馈:1)做算法优化时,只能现搬书里的算法,遇到不一样的问题,就不会了。2)面试一旦涉及到算法和数据结构,如果数学不行,面试基本就凉凉了。3)算法…

受限列表 队列与栈
2019独角兽企业重金招聘Python工程师标准>>> 队列与栈为受限列表,队列为先入先出型列表,而栈为先入后出型列表,有关列表的实现可以查看 http://my.oschina.net/u/2011113/blog/514713 。 结构图为 Queue实现了IQueue接口ÿ…
码农技术炒股之路——数据库管理器、正则表达式管理器
我选用的数据库是Mysql。选用它是因为其可以满足我的需求,而且资料多。因为作为第三方工具,难免有一些配置问题。所以本文也会讲解一些和Mysql配置及开发相关的问题。(转载请指明出于breaksoftware的csdn博客) 数据库管理器 Mysq…

Overview of ISA and TMG Networking and ISA Networking Case Study (Part 1)
老方说:此篇文章摘自ISASERVER.ORG网站,出自Thomas Shinder达人之手。严重建议ISA爱好者看看。Published: Dec 16, 2008 Updated: Jan 21, 2009 Author: Thomas Shinder What ISA/TMG firewall Networks are about and how the firewall uses these ne…
阿里云免费开放一切AI算力,加速新型冠状病毒新药和疫苗研发
近日,阿里云宣布,为了帮助加速新药和疫苗研发,将向全球公共科研机构免费开放一切AI算力。目前,中国疾控中心已成功分离病毒,疫苗研发和药物筛选仍在争分夺秒地进行。新药和疫苗研发期间,需要进行大量的数据…

ASP.net(C#)批量上传图片(完整版)
来自:http://blog.itpub.net/9869521/viewspace-667955/ 这篇关于ASP.Net批量上传图片的文章写得非常好,偶尔在网上看到想转载到这里,却费劲了周折。为了更新这篇文章,我用了近半个小时,网上的转载都残缺不全ÿ…

码农技术炒股之路——任务管理器
系统任务和普通任务都是通过任务管理器调度的。它们的区别是:系统任务在程序运行后即不会被修改,而普通任务则会被修改。(转载请指明出于breaksoftware的csdn博客) 为什么要有这样的设计?因为我希望它是一个可以不用停…
面对新型肺炎疫情,AI能做什么?
作者 | 马超出品 | AI科技大本营(ID:rgznai100)根据最新的新型冠状病毒疫情通报,截至1月30日24时,国家卫生健康委公布确诊病例9692例,重症病例1527例,累计死亡病例213例,另有疑似病例15238例。为…

大家帮忙.谢谢!..(急急急急急)
大家帮忙.谢谢!..(急急急急急) Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061218224617231.htmlprocedure TForm1.Button4Click(Sender: TObject); var P : pstring; i, j : integer; begin GetMem(p, sizeof(stri…

HDU4866 Shooting (要持久段树)
意甲冠军: 给你一些并行x行轴。总是询问坐标x的顶部之前,k一个段高度,。标题是必须在线。思路: 首先要会可持久化线段树(又称主席树和函数式线段树)。不会的能够去做下POJ 2104。 把全部线段高度离散化,作为结点建线段…
C++过去的这一年
作者 | Bartek译者 | 苏本如,责编 | 屠敏出品 | CSDN(ID:CSDNnews)【导读】本文旨在让我们回顾 C 2019年里的变化和发展!我们将重点关注本年度里 C 上发生的重大事件,标准的发展,工具的变化等等…
码农技术炒股之路——抓取股票基本信息、实时交易信息、主力动向信息
从本节开始,我们开始介绍各个抓取和备份业务。(转载请指明出于breaksoftware的csdn博客) 因为我们数据库很多,数据库中表也很多,所以我们需要一个自动检测并创建数据库和表的功能。在《码农技术炒股之路——数据库管理…

TemplateBuilder
http://msdn.microsoft.com/zh-cn/vstudio/system.web.ui.templatebuilder_members(VS.85).aspx TemplateBuilder 成员TemplateBuilder 成员支持在生成模板及其包含的子控件时使用的页分析器。 下表列出了由 TemplateBuilder 类型公开的成员。 公共构造函数 名称 说明 Templat…

【iOS UI】iOS 9 GUI 资源分享
分享的内容包括一个【DesignCode-iOS-9-GUI】Sketch 文件, 和苹果官方释出的【SF-UI、SF-Compact】两种字体的安装包。 以上内容是正版、免费的 <a href "https://itunes.apple.com/cn/app/sketch-3/id852320343?mt12">Sketch</a> 是收费软…
反向R?削弱显著特征为细粒度分类带来提升 | AAAI 2020
作者 | VincentLee来源 | 晓飞的算法工程笔记导读:论文提出了类似于dropout作用的diversification block,通过抑制特征图的高响应区域来反向提高模型的特征提取能力,在损失函数方面,提出专注于top-k类别的gradient-boosting loss来…