作者:himon
时间:2021.2.3
来源: ICLR 2020
关键词:NLG, Decoding Strategy
1.背景及问题描述
这篇论文主要讨论使用语言模型的文本生成编码策略(decoding strategy),充分对比了概率最大化编码和随机编码两种编码策略,并分析了之前方法的问题。同时提出核心采样(Nucleus Sampling),经过实验分析,证明是一种非常简单又有效的编码策略。
2.已有的解决方案
Greedy Decoding
非常直接的解码策略,在每一步选择最大得分(argmax)的词语,然后再把生成的词语喂到下一个时刻。这种链式的解码策略,会发生错误积累,往往效果很差。
1.Beam Search
核心思想:在解码的每一步,追踪topk得分的子序列(hypotheses)。当解码结束(遇到EOS或者达到最大长度),选取最大得分的序列作为结果。 下面以k=2为例子:
2.Pure sampling
在解码的每一步,从词典中随机选择一个词语。
3.Top-k Sampling
在解码的每一步,根据概率分布,从top-k中随机选取一个词语。
如果k=1就是greedy decoding,k=n就是Pure sampling。 k变大可以增加多样性(diverse),但同时可能导致更多错误(risyk)。 k减小让生成更普通(generic),但同时更安全(safe)。
- Softmax + Temperature
在编码的每一步,语言模型使用softmax计算得到一个关于所有token的的概率分布向量,这里可以优化softmax,加入temperature来强化softmax的表达:
带有temperature的softmax大概就像下面的效果。所以当设置,可以将整个的概率向较大概率处倾斜,从而降低选择尾部的概率。
尽管使用
3.解决方案概述
3.1 OPEN-ENDED VS DIRECTED GENERATION
作者首先总结了两种文本生成任务。 open-ended generation,是一种更自由的文本生成任务,输入只是限制输出的范围。比如*受限故事生成(conditional story generation)*和“文本续写”。
directed generation,就是常见的、典型的encoder-decoder模式,数据定义一般是(input, outpu)对,比如机器翻译,文本摘要等,这类问题的解码策略通常使用beam search。因为输出是依据输入,所以容易生成重复(repetition),*通用(genericness )*的结果。即使是加大beam search的size,也不能很好的解决这类问题。
3.2 解码语言模型
作者给出了open-ended generation的模型定义。给定m长度的序列作为输入语境,根据输入的语境,使用典型的单向语言模型生成后面长度为n的扩展序列:
然后使用上述模型使用特定解码策略逐一生成词语。
3.3 核心采样(Nucleus Sampling)
这是一种随机解码策略,核心想法是根据概率分布动态的决定采样的词空间,而不是每次只取前k个区间。 给定i时刻的概率分布:,它是i时刻每个词语的选取概率,经过softmax计算得到的归一化概率。取概率和(排序后从大到小计算)大于固定阈值p的词语作为的采样空间:
另,然后对采样的概率重新归一化:
实际上,这种策略可以保证选择最大概率的词,他们的累积概率密度大于预设的阈值p。每一步采样空间大小会根据概率分布来动态调整。当使用一个比较大的p值是,就可以保证每步的采样空间都是**核心(Nucleus)**词语。
可视化:
3.4 各解码策略的问题
- Maximization-based decoding
作者发现,每一步选择最大条件概率并不一定是合理的!
上图作者对比了,在给定同样引文的情况下使用beam search和人来续写,两者选择的词语通过语言模型计算出来的概率分布。可以发现,人类选择的并不总是最大条件概率的词语。而总是选择最大条件概率会发生正反馈从而陷入重复,所以beam search算法容易出现重复现象。
- Top-k sampling
top-k sampling 是采用固定区间来切断概率分布,他与本文提出的Nucleus Sampling的唯一区别就是,如何选取top的概率。 top-k sampling的最大问题是,选取多大的k比较合适? 从上图可以看出来,对于左边这种概率分布比较平均的情况,k取较小值不合适。但是对于右边这种概率分布比较分明的,k取值也不合适。 通常来讲,k取较小值,容易生成无用的普通的词语;k取较大值,因为需要将top-k的概率重新归一化,就更容易生成错误的词语。
4.结果分析
解释一下各个指标:
-
Perplexity 困惑度,用来评价语言模型的好坏。分别计算各种解码策略结果和人工结果的困惑度,并且认为一个好的解码策略的结果的困惑应该接近人工结果的困惑度。
5.创新点或贡献
- 提出了一种非常简单又有效的解码策略。
- 分析了各种解码策略的缺点和原因。
6.个人思考
- 很容易想到的思路,学习文章的实验设置。
- 关于其他几个解码策略问题的分析非常清楚,根本原因一目了然。
【参考】 Transformers编码例子