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

文 | 苏剑林
编 | 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | ICLR 2020 - 图神经网络的预训练策略

论文笔记整理&#xff1a;杨帆&#xff0c;浙江大学计算机学院。动机现有的用于图结构的预训练方法要么只关注node-level&#xff0c;导致在图表示空间没有区分度&#xff0c;要么只关注graph-level&#xff0c;导致在节点表示空间没有区分度。一种优质的节点表示应该保证不仅在…

常见的距离算法和相似度计算方法

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/138107999 首发于算法加油站写文章常见的距离算法和相似度计算方法奋发的菜鸟酱​华东师范大学 计算机技术博士在读91 人赞同了该文章注&#xff1a;不定时更新1.常见的距离算法1.1 欧几里得距离&#xff08;Euclidean Dista…

美团AI全景图:吃喝玩乐背后的黑科技

很多人都会发现日常生活已经越来越离不开美团了&#xff0c;这个互联网平台涵盖了吃、住、行、游、购、娱……能帮我们做很多事情&#xff0c;非常接地气。黄色的美团外卖骑手&#xff0c;橙色的摩拜单车&#xff0c;还有美团和大众点评的Logo……会不时出现在各个角落&#xf…

LeetCode 547. 朋友圈(图的遍历BFS DFS)

文章目录1. 题目2. 解题2.1 BFS 广度优先2.2 DFS 深度优先1. 题目 问有几个连通网络 2. 解题 2.1 BFS 广度优先 参考图的数据结构 class Solution { public:int findCircleNum(vector<vector<int>>& M) {int n M.size(), groups 0, i;bool visited[n] …

开源开放 | 《大词林》开源 75 万核心实体和围绕核心实体的细粒度概念、关系列表...

1《大词林》简介《大词林》(http://101.200.120.155/)是由哈尔滨工业大学社会计算与信息检索研究中心推出&#xff0c;由我中心秦兵教授和刘铭副教授主持开发&#xff0c;是一个自动构建的大规模开放域中文知识库。自2014年11月推出第一版《大词林》&#xff0c;《大词林》共经…

推荐几个不错的CUDA入门教程(非广告)

文 | godweiyang最近因为项目需要&#xff0c;入坑了CUDA&#xff0c;又要开始写很久没碰的C了。对于CUDA编程以及它所需要的GPU、计算机组成、操作系统等基础知识&#xff0c;我基本上都忘光了&#xff0c;因此也翻了不少教程。这里简单整理一下&#xff0c;给同样有入门需求的…

logging.getLogger(logger)

https://www.cnblogs.com/bjdxy/archive/2012/12/03/2799322.html logging模块学习笔记&#xff1a;logger 对象、日志等级 logger&#xff1a;日志对象&#xff0c;logging模块中最基础的对象&#xff0c;用logging.getLogger(name)方法进行初始化&#xff0c;name可以不填。通…

美团DB数据同步到数据仓库的架构与实践

背景 在数据仓库建模中&#xff0c;未经任何加工处理的原始业务层数据&#xff0c;我们称之为ODS(Operational Data Store)数据。在互联网企业中&#xff0c;常见的ODS数据有业务日志数据&#xff08;Log&#xff09;和业务DB数据&#xff08;DB&#xff09;两类。对于业务DB数…

论文浅尝 | AAAI2020 - 基于生成对抗的知识图谱零样本关系学习

论文笔记整理&#xff1a;耿玉霞&#xff0c;浙江大学直博生。研究方向&#xff1a;知识图谱&#xff0c;零样本学习等。来源&#xff1a;AAAI2020论文链接&#xff1a;https://arxiv.org/pdf/2001.02332.pdf本文是发表在AAAI2020上的一篇基于生成对抗网络进行知识图谱零样本关…

LeetCode 1184. 公交站间的距离

1. 题目 环形公交路线上有 n 个站&#xff0c;按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离&#xff0c;distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘客从出发点…

追剧计划第三弹!UC Berkeley出品,全栈深度学习!

关注卖萌屋比较早的小伙伴&#xff0c;大概还记得2020年初时我们组织的斯坦福大学CS224N自然语言处理公开课追剧计划&#xff0c;以及后来的斯坦福大学CS520知识图谱公开课追剧活动。尽管活动已经结束很长一段时间&#xff0c;但是仍然有小伙伴后台问“什么时候开始下一波追剧哇…

美团外卖iOS App冷启动治理

一、背景 冷启动时长是App性能的重要指标&#xff0c;作为用户体验的第一道“门”&#xff0c;直接决定着用户对App的第一印象。美团外卖iOS客户端从2013年11月开始&#xff0c;历经几十个版本的迭代开发&#xff0c;产品形态不断完善&#xff0c;业务功能日趋复杂&#xff1b;…

LeetCode 538. 把二叉搜索树转换为累加树(逆中序 根右左)

文章目录1. 题目2. 逆中序&#xff08;根右左&#xff0c;降序循环遍历&#xff09;1. 题目 给定一个二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;把它转换成为累加树&#xff08;Greater Tree)&#xff0c;使得每个节点的值是原来的节点值加上所有大于…

应用实践 | 电商应用——一种基于强化学习的特定规则学习模型

本文转载自公众号&#xff1a;浙大KG。作者&#xff1a;汪寒&#xff0c;浙江大学硕士&#xff0c;主要研究方向为知识图谱和自然语言处理。应用场景在电商实际应用中&#xff0c;每个商品都会被挂载到若干个场景&#xff0c;以图结构中的节点形式存在。商品由结构化信息表示&a…

20W奖金+实习机会:阿里巴巴达摩院最新时间序列赛事来了!

Datawhale赛事 赛事&#xff1a;2021“AI Earth”人工智能挑战赛2021“AI Earth”人工智能创新挑战赛&#xff0c;由阿里巴巴达摩院联合南京信息工程大学、国家气候中心、国家海洋环境预报中心、安徽省气象局共同创办。大赛以“AI助力精准气象和海洋预测”为主题&#xff0c;聚…

关于python中带下划线的变量和函数 的意义,class类带一个下划线和带两个下划线的定义

总结:变量:1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量,3. 大写加下划线的变量: 标明是 不会发生改变的全局变量函数:1. 前带_的变量: 标明是一个私有函数, 只用于标明,2. 前带两个_…

论文浅尝 | ICLR2020 - 基于组合的多关系图卷积网络

论文笔记整理&#xff1a;吴锐&#xff0c;东南大学计算机学院硕士。来源&#xff1a;ICLR 2020链接&#xff1a;https://arxiv.org/pdf/1911.03082.pdf动机目前针对于GCN的研究大多数都关注在学习无向图的结点表示上&#xff0c;然而我们在研究中更常见的通常是多关系图&#…

Hades:移动端静态分析框架

只有通过别人的眼睛&#xff0c;才能真正地了解自己 ——《云图》 背景 作为全球最大的互联网 生活服务平台&#xff0c;美团点评近年来在业务上取得了飞速的发展。为支持业务的快速发展&#xff0c;移动研发团队规模也逐渐从零星的小作坊式运营&#xff0c;演变为千人级研发军…

GitHub超级火!任意爬取,超全开源爬虫工具箱

文 | 程序员GitHub最近国内一位开发者在 GitHub 上开源了个集众多数据源于一身的爬虫工具箱——InfoSpider&#xff0c;一不小心就火了&#xff01;&#xff01;&#xff01;有多火呢&#xff1f;开源没几天就登上GitHub周榜第四&#xff0c;标星1.3K&#xff0c;累计分支 172 …

LeetCode 413. 等差数列划分(DP)

1. 题目 一个数列的等差数列子数组有多少个。 A [1, 2, 3, 4]返回: 3, A 中有三个子等差数组: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。2. 解题 状态公式 if(A[i]−A[i−1]A[i−1]−A[i−2]),thendp[i]dp[i−1]1,i>2if (A[i]-A[i-1] A[i-1]-A[i-2]) , \quad then \…