论文标题:

A Systematic Characterization of Sampling Algorithms for Open-ended Language Generation

论文作者:

Moin Nadeem (MIT), Tianxing He (MIT), Kyunghyun Cho (NYU), James Glass (MIT)

论文链接:

https://arxiv.org/abs/2009.07243

代码链接:

https://github.com/moinnadeem/characterizing-sampling-algorithms


文本生成离不开采样,一个好的采样方法可以兼顾生成文本的质量和多样性。但是,目前主流的各采样算法并没有得到充分的研究,它们的优劣也难以量化。

本文在语言模型上比较了当前主流的几个采样算法Top-K, Nucleus, Tempered,发现他们都满足三个关键性质,因此在效果上难分伯仲。

进一步的研究表明,满足这三个性质的其他采样算法也能够取得很好的效果,这就指出了文本生成所需的必要条件。

文本生成的两大要素:质量与多样性

文本生成我们之前已经讲过很多了,但是读者有没有发现,基本上所有的文本生成任务,所谓的“目标句子”都是唯一的,或者很少。

比如,一个语言模型已经生成了“The news says that”,那么它下面会生成什么呢?对人来说,完全可以大开脑洞续写,但是对于一个已经训练好的模型来说,它下面要生成的就已经固定了(如果采取定性解码算法,如每一步都取概率最大的词),则说这个模型的多样性很差。

所以,对于文本生成模型来说,我们想要尽量在质量和多样性之间保持平衡。采样算法就是一种追求这种平衡的技术。

在解码的时候,不按照模型本身得到的每个词的概率采样,而是进行一定的变换,然后再采样,如果采样范围缩小,那么多样性就减少,但质量也会提高,如果采样范围扩大,多样性就会增大,但质量也会降低。

那么如何设计这样的采样算法,使得最大化保持质量与多样性的平衡呢?

本文针对当前主流的几种采样算法进行了系统性的比较,观察它们的Q (Quality)-D (Diversity)平衡,其中质量由BLEU衡量,多样性由n-gram entropy衡量。

进一步进行观察研究发现,这几个采样算法都满足三个关键性质:(1)减熵性;(2)保序性;(3)保斜率性。而一旦某种采样算法不满足其中一条性质,那么它的Q-D平衡就会被打破。因此,这三条性质是保证采样算法保持Q-D平衡的必要条件。

总的来说,本文研究贡献如下:

  • 系统性地比较了几种采样算法在文本生成上的效果,发现它们有很相似Q-D平衡性;

  • 提出这几种采样算法成功的关键在于三条性质;

  • 一旦不满足任意一条性质,则采样算法的表现就会显著降低;

  • 启发未来采样算法的设计。

比较的采样算法

用于文本生成的采样算法很多,最简单的就是直接取概率最大的词,或者叫top-1采样。

本文主要比较了下述几种采样方法(注意向量已经降序排列了,所以):

  • Top-k采样: 只考虑前个概率最大的词,注意要把它们的概率重新归一化,即

  • Nucleus采样:也是只考虑前若干个概率最大的词,不过以一种概率累计式的方法,即,

  • Tempered采样:在原概率上增加一个温度项,即

  • Tempered Top-k采样:结合Top-k采样和Tempered采样,即

之后,我们就得到了一个用于采样的概率向量。

采样算法的三个性质

在有了上述几个采样算法之后,我们可以发现,它们都满足下述三个性质:

  • 减熵性(Entropy Reduction):变换后的概率分布始终小于变换前的概率分布,即。

  • 保序性(Order Preservation):元素排列的顺序不变,即。

  • 保斜率性(Slope Preservation):分布的“斜率”保持不变,即

保斜率性指出了,变换后的概率分布在概率的量级变化上是成比例的,而保序性则说明概率大的仍然概率大。

性质2的证明是显然的,性质3也只需要代入公式即可。比较麻烦的是性质1,有兴趣的读者可以参考原文附录B完成证明。

采样算法的设计

上面我们证明了所述的采样算法都满足这三条性质,那么,是不是所有满足这三条性质的采样算法都能有比较好的Q-D平衡呢?是不是只要不满足其中至少一条性质,就不会有好的效果呢?前者是充分条件,后者是必要条件。

为了证明必要条件,只需要举例说明即可,但是充分条件难以用例子证明,故在本节我们仍然是举例进行一定程度的说明。

为此,除了上述的几种算法外,我们还设计两类采样算法:一是不满足某些性质,二是满足所有性质。

不满足某些性质的采样算法

  • Target-Entropy采样:形式是Tempered采样,但其中的温度设定为让变换后的概率分布的熵恒定为一个常值,即

它违反了减熵性。

  • Random-Mask采样:随机抹去一些词后形成的概率分布,即

显然,它违反了保序性。

  • Noised Top-k采样:在原来的top-k得到的概率分布上再加上有序噪声分布,即

由于本身也是有序的,所以不违反保序性,但是它违反了保斜率性。

满足所有性质的采样算法

  • Random Top-k采样:这里的是随机产生的,即

  • Max-Entropy采样:和Target-Entropy采样类似,只是要保证减熵性:

实验

接下来就是要以绘制Q-D散点图的方式看这些采样算法的实际效果。自动测评指标有corpus-BLEU(衡量质量Q)与self-BLEU(衡量多样性D),人工测评则是在1-5之间打分(衡量质量Q)和使用n-gram entropy(衡量多样性D)。模型采用GPT-2,分别在Gigaword与Wiki103上微调。其他细节请参考原文。

首先来比较当前主流采样算法的Q-D平衡,下面两个图依次是人工测评和自动测评结果。可以看到,无论是人工测评还是自动测评,这几个算法的表现都没有显著差异。

在一个算法内部,调整不同的超参可能有不同的结果,但从所有算法的总体趋势和表现来看,它们还是很相似的。

那么,对我们设计的不满足某些性质的采样算法来说,它们的表现又如何呢?其结果如下图所示。可以看到,违反了减熵性的Target Entropy表现最差;Noised Top-k效果随着噪声的增加而效果变差;而Random Mask的效果和现有的算法表现相近。上述观察说明,在保序性这个条件上可以略有放松,但是在减熵性和保斜率性上不能放宽。

下图是设计的满足所有性质的采样算法的表现。可以看到,所提出的Max Entropy和Random Top-K完全和现有算法保持一致。

实际上,在人工测评上这些算法的表现趋势也都和自动测评一致。

下面来看一下不同算法具体生成的文本是怎样的,如下表所示。各个算法都调整超参数,使得它们的self-BLEU相似(即多样性相似),因此可以更直观地比对所生成文本的质量。

可以看到,满足全部性质的算法所生成的文本大致还是流畅连贯的,但是对违反某些性质的算法而言,总有不连贯的地方,导致其质量较低。也就是说,某些性质对文本质量有重要影响。

小结

本文从文本生成的角度比较系统地研究和比较了几种主流采样算法的效果,在发现他们的Q-D平衡都相似的情况下,提出了它们都满足的三种性质,从而猜测这三种性质对所生成文本的质量和多样性有重要作用。

为了验证这个猜想,本文设计了两组采样算法,一组全部满足这些性质,另一组不满足某些性质,然后比较它们的效果。

结果发现,不满足某些性质的采样算法的确在Q-D平衡上表现更差,即使控制相同的多样性,所生成的文本质量也较低,这印证了这三种性质在某种意义是的确是保障采样算法Q-D平衡的必要条件。

值得一说的是,尽管本文提出了这样的假设,并从经验上进行了验证,但该理论仍然属于猜想,究竟是不是这三个性质起决定作用,还是其背后更本质的数学原理在起作用,目前都尚没有定论。

本文算是给采样算法为何能提高文本质量与多样性的研究开了一扇门,以更好地指导采样算法的设计。

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

采样算法哪家强?一个针对主流采样算法的比较相关推荐

  1. android手机系统对比,国产手机系统哪家强?几大主流手机系统盘点对比

    原标题:国产手机系统哪家强?几大主流手机系统盘点对比 现在手机系统基本可以分为安卓和苹果两大阵营.在这之后,安卓系统又因为手机厂商不同可以细分.可以说,几乎每一个手机品牌都在安卓系统基础上进行了优化, ...

  2. rnn词性标注算法_Python预测算法哪家强?权游龙妈是生还是凉凉?

    这个世界上只有两种人,看「权游」(权利的游戏)的,和不看「权游」的. 你们心心念的权游终于迎来了最终季,狼家史塔克的家训「Winter is coming」终终终终终于是应验了,人类与异鬼的战争一触即 ...

  3. python预测发展趋势_Python预测算法哪家强?权游龙妈是生还是凉凉?

    这个世界上只有两种人,看「权游」(权利的游戏)的,和不看「权游」的. 你们心心念的权游终于迎来了最终季,狼家史塔克的家训「Winter is coming」终终终终终于是应验了,人类与异鬼的战争一触即 ...

  4. java实现k 近邻算法_K近邻算法哪家强?KDTree、Annoy、HNSW原理和使用方法介绍

    1.什么是K近邻算法 K近邻算法(KNN)是一种常用的分类和回归方法,它的基本思想是从训练集中寻找和输入样本最相似的k个样本,如果这k个样本中的大多数属于某一个类别,则输入的样本也属于这个类别. 关于 ...

  5. 求组合数的算法 java,求一个整数的组合数算法(java)

    开始需求: 产生一堆数字. 然后我输入一值,这个值等于这些数中的一个,或是任意多个数的和.但只能是其中一种情况. 比如我输入8.这些数里面,可以直接有8. 也可以是1+2+5 的和,也可以是 1+7 ...

  6. java凑数算法_求教一个有关“凑数”的算法

    "凑数算法"已知:string类型定长数组(如sName[5]={aa,bb,cc,dd,ee},各元素互不相等)unsigneddouble类型定长数组(如dP[5]={1.1, ...

  7. python算法集合_python – 一个集合联合查找算法

    一旦你建立了数据结构,你想要运行什么查询呢?告诉我们您现有的代码.什么是T(x)?你谈论"数字组",但你的样本数据显示T1,T2等;请解释. 或者你可以把你自己的东西比较简单和容易 ...

  8. 自动驾驶哪家强?全球自动驾驶竞争力排行分析

    近年来得益于传感器处理.自适应算法.高精度地图和人工智能等技术的快速迭代及进步,自动驾驶汽车市场及技术正走向一个新的水平.据Research and Marketing预测数据,至2030年,全球自动 ...

  9. python算法的缺陷和不足_机器学习算法优缺点及其应用领域

    决策树 一.  决策树优点 1.决策树易于理解和解释,可以可视化分析,容易提取出规则. 2.可以同时处理标称型和数值型数据. 3.测试数据集时,运行速度比较快. 4.决策树可以很好的扩展到大型数据库中 ...

最新文章

  1. python strip
  2. 网站面临改版!在修改标题后该如何快速提升排名?
  3. 用c++来开发php的底层模块|用c++来开发apache模块,Apache模块开发实例(2)
  4. 解决fullgc_「OOM」Java heap space原因与解决
  5. kafka报错Failed to find any class that implements Connector
  6. Intel X86 CPU寄存器学习笔记
  7. linux锁定账号 让其不能修改密码,passwd - 用于让用户可以更改自己的密码
  8. 深度学习在推断阶段(inference)的硬件实现方法概述
  9. iOS基础 - UIScrollView
  10. Python判断文件是否存在、访问
  11. 《CCNA学习指南:数据中心(640-911)》——1.2 一般网络的构成
  12. 我的家乡html网页设计,创作一个以“我的家乡”为主题的网站
  13. B2C商城系统优势开发源码
  14. 最热BMS可直接下载!!
  15. 毕设论文-word格式问题
  16. 从Alexander Egyed的论文看程序语言和软件工程的论文写作风格差异
  17. 【linux】运维之LAMP
  18. “select count (1)”是什么意思?
  19. 906007-10-1,Azide-PEG6-Tos叠氮化物(N3)基团可以通过点击化学与炔烃、BCN、DBCO反应
  20. 一款科幻题材基地建设策略游戏——太空避难所中文版 附游戏玩法

热门文章

  1. 服务器修改mime类型,服务器上没有设置mime类型
  2. python顺序结构实验设计_实验二 顺序结构程序设计(验证性实验)
  3. Android之ExpandableListView的各种效果(默认展开不合闭,自定义父栏目及箭头控制)
  4. jmeter设置代理录制请求
  5. 网络工程师历年试题解析(PDF文字版)2004-2009
  6. 关于JS在IE和FF下attachEvent,addEventListener学习笔记
  7. 对新手的忠告:拒绝创意,回归基础
  8. centos 开机启动java_java程序在centos7里面开机自启动
  9. python版本升级和系统更新下载安装_Python环境安装与升级
  10. Java输出彩色字符