文 | 苏剑林
编 | Sheryc_王苏
单位 | 追一科技

去年笔者写过博文《如何应对Seq2Seq中的"根本停不下来"问题?》[1],里边介绍了一篇论文中对Seq2Seq解码不停止现象的处理,并指出那篇论文只是提了一些应对该问题的策略,并没有提供原理上的理解。近日,笔者在Arxiv读到了AAAI 2021的一篇名为《A Theoretical Analysis of the Repetition Problem in Text Generation》的论文,里边从理论上分析了Seq2Seq重复解码现象。从本质上来看,重复解码和解码不停止其实都是同理的,所以这篇新论文算是填补了前面那篇论文的空白。

经过学习,笔者发现该论文确实有不少可圈可点之处,值得一读。笔者对原论文中的分析过程做了一些精简、修正和推广,将结果记录成此文,供大家参考。此外,抛开问题背景不讲,读者也可以将本文当成一节矩阵分析习题课,供大家复习线性代数哈~

论文题目:
A Theoretical Analysis of the Repetition Problem in Text Generation

论文链接:
https://arxiv.org/pdf/2012.14660.pdf

Arxiv访问慢的小伙伴也可以在【夕小瑶的卖萌屋】订阅号后台回复关键词【0202】下载论文PDF~

基本思路

所谓重复解码,指的是解码结果出现重复的片段,比如解码结果为"A B C D B C D B C D E F",那么"B C D"就是重复片段了,因此这个解码结果就出现了重复解码现象。

简单起见,如果解码过程中子序列























后面接着的子序列是




























,我们就称





















为一个"重复子序列",而我们现在要做的事情,就是要分析解码过程中出现重复子序列的概率。

可能有读者疑问,为什么




的最后要多加一个







?从后面的过程中我们可以明白到,这个其实只是为了分析上的方便,并没有什么必然性。我们希望得到的是一个有代表性的定量指标来衡量这个重复解码问题,最好还能从中能获得一些改进的思路,至于这个指标的具体细节,我们可以不用太在意。将研究目标量化是非常重要的,只有把目标量化后,我们才能更好地把握改进的方向,也才能去比较不同的方法优劣。不然就算吵得面红耳赤的,也终究无法得到个结论出来。

为了得到这样的一个指标,我们接下来先从简单的二元解码出发,得到一些有代表性的结果,然后看它能否推广到一般的自回归解码器中去。

二元解码

一般的自回归模型形式为:

也就是说,位置




的解码不仅依赖于输入




,还依赖于




之前已经获得的所有解码结果。而简单起见,我们先考虑一种简单的情况,假设每一步解码只依赖于前一时刻的结果,即:

这样一来,对于固定的输入




,解码器事实上就只是一个






的转移矩阵















,其中











表示从




后面接




的概率,




代表词表大小。这样的解码器叫做二元文法模型、2-gram模型、马尔可夫模型,等等。我们还需要一个终止标记<eos>,遇到<eos>就停止解码,所以实际上转移矩阵是














才对,但是我们考虑重复解码都是在终止之前的,所以只需要考虑除去<eos>的






部分就行了。

我们要计算的是重复子序列的出现概率,假如以










是一个三元重复子序列,那么它的出现概率就是序列


















出现的概率:

因此所有的三元重复子序列的概率为:

这里的




表示逐位元素对应相乘。最后,我们将所有长度的重复子序列概率都加起来:

这个就是二元解码器出现重复解码的概率。当然目前它还只是一个理论公式,不过它是我们重要的出发点。我们将分别推导它的上下界,以获得更具有启发性的结果。

一个下界

直接看重复解码概率




的表达式不好看出点啥,我们可以先推导它一个更加直观一点的下界。还是以三元重复子序列为例,利用均值不等式我们可以得到:

事实上,我们还可以做得更精细一些。假设矩阵




有一些元素为0,那么






























中的非零元素的个数就不是







了,我们假设非零元素个数为















,那么我们在利用均值不等式的时候,可以只对非零元素进行,结果是将上述的







换为





















的直接计算比较困难,没有一般通项公式,但我们可以做个简单估算:设




的非零元素的比例为




,也就是非零元素个数为








,那么我们可以认为






























的非零元素比例近似为







,而总的排列数为







,所以我们可以认为



















,或者一般地



















。注意可以举例说明这个估计既不能保证是上界,也不能保证是下界,所以将










替换为











后,我们无法保证上述不等号的成立。不过,如果我们愿意相信











是一个足够好的近似,我们我们依然可以(怀着忐忑而又坚定的信念)写下

以及

或者我们干脆不关心不等号,而是将最右面的结果视为




的一个估计。

原文下界

对于希望对着本文读原论文的读者,此时可能会有点懵了,因为不管是上面式




的表达式还是




的估计,都在原论文中找不到对应。事实上,原文并没有给出这两个公式,而是给出了另一个估计式,它也可以作为




的下界推导出来。

同样利用均值不等式,我们有

类似地,可以引入非零元素个数的技巧来提高估计精度,非零率依然是







,而这次求和的总数是







,因此非零排列数约为











,所以我们(依旧是怀着忐忑而又坚定的信念)写下:

以及

这基本就是原论文中的"定义2.3"了,跟原论文不同的是:

  1. 原论文算得是平均到每个字词的概率,所以需要多除以一个




    ,因此它的分母是







  2. 原论文求迹的是










    而不是












    ,事实上这是原论文的错误,它在推导过程中把

















    当成了



















    ,事实上它们是不等的,本文在上一节中推导出的




    的下界才是正确的结果。

初步结论

其实不管是本文推出的




的下界还是论文中给出的




的下界,形式都差不多,我们都可以用它来得出一些结论。此时,可能有些读者会疑惑:我们一般所用的模型的概率分布都是softmax出来的,softmax的结果都不等于0,所以




应该是恒等1,因此引入




似乎没有没有什么价值?

并非如此。的确,softmax出来的概率分布不会有严格等于0的情况,但是我们的解码算法,通常却会将它们强制置零!在文章《如何应对Seq2Seq中的"根本停不下来"问题?》[1]中我们就罗列了文本生成常用的解码算法,主要包括随机采样和确定性解码两种,其中随机采样分为直接随机采样、Top-k随机采样、Top-p随机采样,而确定性解码则包括Greedy Search、Beam Search两种,在这五种不同的解码算法中,除了最不常用的直接随机采样外,其余四种都是强行只保留若干个最优结果来作为候选值,这样就相当于直接截断了转移矩阵,大大降低了非零概率




比如最极端的Greedy Search,容易推出它实际上对应着最小的非零概率










,由于




是在分母中,所以




的缩小意味着重复率




的增加,这就告诉我们Greedy Search的重复解码风险是相当高的。尽管目前的结论仅仅是在二元解码模型的假设下得出的,但Greedy Search的重复解码确实是我们经常观察到的现象,所以这结论与解释确实已经有代表性了。

一个上界

有了下界,怎么可以没有上界呢?下界能帮助我们解释一些实验现象,而上界则可以给我们提供改进的思路。

为了推导上界,我们利用到如下两个结论:

  1. 矩阵的迹等于它所有特征值之和;

  2. 如果




























    是矩阵




    的所有特征值,那么是矩阵







    的所有特征值。

所以,我们可以推导:

上述过程用到了级数



























,该级数只有在








才收敛,而很巧的是,我们可以证明






的特征根绝对值必然不大于1,且通常都小于1:由于




是转移矩阵,因此它的每一行之和都为1,因此






的每一行之和都小于等于1,设









是它的特征值和特征向量,那么












,不失一般性,设




绝对值最大的元素为














的第一个行向量为










,那么我们有






























,从而








,并且等号成立的条件还是比较苛刻的,所以通常来说都是








注意函数





















区间是单调递增的,所以上式中占主导的是第一项

































,如果非要给整体弄一个上界的话,那么可以是


































再次结论

由此可见,如果想要降低重复率




,那么我们需要想办法降低矩阵






的最大特征值







是一个非负矩阵,根据非负矩阵的"Frobenius介值定理",我们有:

关于Frobenius介值定理,基本上在任何一本矩阵分析的书上都有介绍,它说的是"非负矩阵的最大特征值在它每一行的和的最小值于最大值之间"。现在我们知道,为了降低






的最大特征值,我们需要想办法降低它的每一行之和,即
















,并且由于均值不等式

知它的最小值为








,在































时取到,因此最终我们得出结论:要降低最大特征值,就要使得矩阵




每一行尽可能均匀,换言之,要降低




每一行的方差。

怎么降低方差呢?很简单,不能出现过高的概率值即可,比如某一行接近one hot的形式,那么平方之后依然接近one hot的形式,那么求和就接近1,远远大于理论最小值








。什么情况下会出现过高的概率值呢?也不难理解,就是某个字词后面可以接的字词很少,甚至只有1个候选值的时候,比如"忐"几乎只能接"忐",那么



















就相当高,"矩"后面大概接"阵"、"形"比较多,所以"矩"那一行的方差也不小。那怎么才能不出现这种过高的概率值呢?很简单,将高概率值的合并起来,当作一个新词来看待就行了,比如"忐忑"合并为一个词,那么"忐"那一行就不存在了,也就无所谓方差大了。同理,"矩形"、"矩阵"也应该合并为一个词比较好。

所以,说白了这就告诉我们,对于文本生成任务来说,以词为单位比以字为单位更加靠谱(更不容易出现重复解码)。适当地合并一些相关程度比较高的词作为新词加入到词表中,降低转移矩阵的方差,有助于降低重复解码的风险,原论文还给这个操作起了个很高端的名字,叫做Rebalanced Encoding Algorithm,事实上就是这个意思。我们之前词颗粒度的WoBERT在生成任务上比字颗粒度的BERT做得更好,也算是这个结论的验证了吧(参考《我的BERT!改改字典,让BERT安全提速不掉分(已开源)》)。

一般解码

那这个证明过程容易推广到一般的自回归模型中吗?很遗憾,并不容易。对于一般的自回归模型来说,它相当于每一步的




都是不一样的,因此只要模型的性能足够好,其实基本上不会出现重复解码,事实上经过充分预训练的生成式模型,确实很少出现重复解码了。但是,我们又能观察到,哪怕是一般的自回归解码,偶尔也能观察到重复解码现象,尤其是没有经过预训练的模型,这又该怎么解释呢?

前面的小节是基于二元解码模型的,结论是二元解码模型确实容易出现重复解码,那么我们或许可以反过来想,一般的自回归模型出现重复解码现象,是因为它此时退化为了二元解码模型?对于难度比较高的输入,模型可能无法精细捕捉好每一步的转移概率,从而只能将转移矩阵退化为二元解码,这是有可能的。

那么原论文对这一块又是怎么处理的呢?其实也差不多这样。原论文假设一般的自回归模型的转移矩阵,只是在二元解码的转移矩阵




的基础上加了个特定时刻的扰动



















,然后指出在







足够小的时候它跟二元解码的差距也足够小(有点像废话),因此二元解码的结果也能代表一般自回归模型了。所以,对一般的自回归模型来说,我们确实很无力了,只能用这种想法跟它沾点边了~

文章小结

本文是对Seq2Seq重复解码现象的一次理论分析尝试,主要的篇幅是针对二元解码模型得出一些定量的结果,并且发现这些结果确实能解释一些现象,并且还能带来一些改进的思路,最后比较"勉强"地将二元解码与一般的自回归模型联系了起来。本文在思路上受启发于论文《A Theoretical Analysis of the Repetition Problem in Text Generation》[2],但推导过程都是自己闭门造车的,公式定义也跟原论文略有不同,但总体而言结论是一致的,还请读者自行辨别,如果谬误,敬请斧正。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] 如何应对SeqSeq中的“根本停不下来”问题? https://kexue.fm/archives/7500

[2] Fu et al. A Theoretical Analysis of the Repetition Problem in Text Generation. In AAAI'21. https://arxiv.org/abs/2012.14660

AAAI21 | Seq2Seq模型成为“复读机”的原因找到了?相关推荐

  1. 开源 | IBM、哈佛共同研发:Seq2Seq模型可视化工具

    作者 | Ben Dickson 译者 | 刘旭坤 编辑 | Jane 出品 | AI科技大本营 近年来随着深度学习和神经网络技术的发展,机器翻译也取得了长足的进步.神经网络结构越来越复杂,但我们始终 ...

  2. 简单复读机LR如何成为推荐系统精排之锋?

    文 | 水哥 源 | 知乎 saying 1. 众所周知, 人类(划掉)推荐的本质是复读机 2. 精排之锋,粗排之柔,召回之厚 3. 在推荐里谈"过拟合"很容易给我们造成心理上的松 ...

  3. seq2seq模型_直观理解并使用Tensorflow实现Seq2Seq模型的注意机制

    采用带注意机制的序列序列结构进行英印地语神经机器翻译 Seq2seq模型构成了机器翻译.图像和视频字幕.文本摘要.聊天机器人以及任何你可能想到的包括从一个数据序列到另一个数据序列转换的任务的基础.如果 ...

  4. 机器翻译Seq2Seq模型的启发-人工神经网络系统-诞生

    该模型采用了将信息通过某种编码 ,而后通过一个循环神经网络模型解码来实现语言的翻译, 那么我们如果把有的信息都看作是人类的信息,而机器训练需要的数据不是直接的信息,是神经网络的信息,也就是说某个模型的 ...

  5. 从Encoder到Decoder实现Seq2Seq模型

    首发于机器不学习 关注专栏 写文章 从Encoder到Decoder实现Seq2Seq模型 天雨粟 模型师傅 / 果粉 ​ 关注他 300 人赞同了该文章 更新:感谢@Gang He指出的代码错误.g ...

  6. 使用seq2seq模型进行机器翻译的方法不同

    自然语言处理| 深度学习 (Natural language processing | Deep learning) Machine translation is a computational li ...

  7. Seq2Seq模型讲解

    概述 Seq2Seq是一个Encoder-Deocder结构的模型,输入是一个序列,输出也是一个序列. Encoder将一个可变长度的输入序列变为固定长度的向量,Decoder将这个固定长度的向量解码 ...

  8. 英语磁带与计算机磁带区别,小学英语教材配听力磁带 家长:谁还用复读机?...

    时间倒回十多年,大家听歌.听英语还是用磁带,复读机.录音机也是学生人手必备的学习用品.但在各种高端电子产品充斥的今天,再去找个录音机可能就非常困难了.这不?刚刚开学,就有小学一年级的家长被难倒了,学校 ...

  9. 带你玩转序列模型之seq2seq模型定向(集束)搜索

    目录 一.基础模型 二.选择最可能的句子 三.定向搜索 四.改进定向搜索 五.定向搜索的误差分析 一.基础模型 在这一周,你将会学习seq2seq(sequence to sequence)模型,从机 ...

最新文章

  1. Matlab大气湍流退化模型
  2. 【青少年编程】【蓝桥杯】绘制莲花图形
  3. NLP领域近期有哪些值得读的开源论文?(附下载)
  4. 网络推广——网络推广优化基础问题必须明确
  5. 又一个jquery+flash上传插件
  6. vs2013 matlab 教程,Matlab 2016a和VS2013混合Dll编程步骤总结
  7. 设计模式学习总结1 - 创建型1 - Abstract Factory抽象工厂模式
  8. 《软技能:代码之外的生存指南》一一21.3 打造成功博客的秘诀
  9. 打码(C语言)常见粗心小错误 (前方高能,一定要点)
  10. stone (组合数学 + Lucas定理)
  11. 分销商城业务逻辑设计_功能思维导图_OctShop
  12. java 计算一个月有多少天和多少周
  13. 行星齿轮传动电动滚筒设计【设计说明书(论文)+11张CAD图纸】
  14. C语言——运算符优先级
  15. 阿尔法元并未否定AI需要“人类师父”
  16. 网络编程面试题:OSI模型是什么?/OSI模型介绍
  17. MH(梦幻)型电子配线架使用说明书
  18. 100集华为HCIE安全培训视频教材整理 | 安全认证概述
  19. 计算机网络课程设计——中小型网络工程设计与实现
  20. 阿里云ACP有什么用?该怎么获取?

热门文章

  1. python使用循环结构编程打印出如下图案_使用双层for循环编写程序,在屏幕上打印输出如下图案...
  2. idea插件translation插件“翻译失败”
  3. Spring IoC详解
  4. Android MediaPlayer 播放器网络音频播放总结
  5. PHP+Mysql—学生信息管理系统网站开发(整套源码)
  6. Data Mining Pipeline(数据挖掘实践指南--特征发现,处理与评估)
  7. 算法设计-卡布列克圆舞曲
  8. 如何穷养儿子,富养女儿
  9. html 透明的圆形,CSS-具有渐变边框的透明圆形按钮
  10. oracle /dev/shm