NLG的Decoding方法相关论文笔记(2)—— Nucleus Sampling

The Curious Case of Neural Text DeGeneration

Summary

文章介绍了一种基于truncation的Necleus Sampling策略,通过设定概率p,动态地选取每次sampling的tokens集合,并对先前提出的top-k sampling和Samplingh with Temperature的多种sampling策略做出了比较。

Research Objective

文本生成中的文本退化的问题。

Problem Statement

问题背景与上一篇NLG的论文笔记相同,通过MLE的训练方法所得的NLG模型很容易产生合乎语法但多样性、质量很差的文本,对此GAN方法和其他task-specific的beam search的变种不断被提出。上一篇unlikelihood training的文章是从NLG模型的训练方法上解决文本退化的问题,而本文则在decoding的方法上提出了一个新的解决方案。

文中还提到许多pair-wise的文本生成问题,如机器翻译、data-to-text生成、summarization等此类任务(被称为directed generation)通常以encoder-decoder架构,decoding的方法使用beam search,而其中的output是受到input的限制的,所以output中的重复等文本退化问题都不是什么大问题。而对于想故事生成这些open-ended的文本生成问题而言,其高自由度的特性是文本退化问题的难点。

Method(s)

Nucleus Sampling

文中提出了一个新的decoding策略:Nucleus Sampling。核心思想是以timestep t的token概率分布来决定sample tokens的集合。设定超参数p,定义top-p的sample token集为最小的,使得:

而后,在decoding时从此中sample,sample的概率是中token的概率的归一化结果。

Top-k Sampling

这种sample方法顾名思义就是选取一个timestep中概率为top-k的tokens作为sample的token集合。

那top-k sample中k值的选取是一个很大的问题。当k值太小,就可能会生成单调且空泛的token,而当k值太大,又可能会包含进来很多不合适的token,经过归一化之后就可能会被sample到decoded序列中,横竖就是k值的选取是个大问题,可能会影响decoded序列的质量。而使用Nucleus Sampling则sample的集合会根据不同的语境动态的变化,从而保证decoded序列的质量。

Samplingh with Temperature

此方法通过temperature(温度)来塑造概率的分布。给定logits a和temperature t,定义带有温度t的softmax如下:

时,此softmax就会更倾向于高概率的事件,而会隐形低降低那些概率低的token的权重。此方法能够部分解决top-k sampling的问题,因此常被在top-k sampling之前用于shaping tokens的概率分布。然而,Samplingh with Temperature的方法虽说能够改进生成的质量,却降低了生成文本的多样性。

Evaluation

文章使用困惑度(Perplexity)、Zipf(齐夫定律,一个单词出现的频率与它在频率表里的排名成反比)、Self-BLEU(A lower Self-BLEU score implies higher diversity.)、repetition、HUSE(训练一个鉴别器【实际上是KNN】去区分自然文本和机器生成的文本)这些指标来衡量,Nucleus Sampling的各项指标综合最优(其实表现也并不是绝对优势,超参数p的取值很可能也与top-k sampling的k的取值存在同样的问题)。

Conclusion

文章提出了Nucleus Sampling,并与其他decoding策略做了对比,Nucleus Sampling和Top-k Sampling都是用了truncation的策略,区别就在于选择哪些token to truncate。最后作者在结论中说,如果不用truncation的可能会造成模型从low-confidence的tail中选取token来做预测。

Reference

知乎上对于decoding的策略有一个比较好的专栏总结:
https://zhuanlan.zhihu.com/p/68383015

注意,decoding的策略是不用于训练的,而只限于预测阶段。在训练时,decoder是使用Teacher Forcing进行训练的。Teacher Forcing 是一种用于序列生成任务的训练技巧,与Autoregressive模式相对应,这里阐述下两者的区别:

  • Autoregressive 模式下,在 timesteps t decoder模块的输入是 timesteps t-1 的输出 。这时候我们称 为当前预测步的 context;
  • Teacher-Forcing 模式下,在 timestep t decoder模块的输入是 ground-truth 语句中位置的 单词。这时候我们称 为当前预测步的 context;

Teacher-Forcing 技术之所以作为一种有用的训练技巧,主要是因为:

  • Teacher-Forcing 能够在训练的时候矫正模型的预测,避免在序列生成的过程中误差进一步放大。
  • Teacher-Forcing 能够极大的加快模型的收敛速度,令模型训练过程更加快&平稳。
  • Teacher-Forcing 技术是保证 Transformer 模型能够在训练过程中完全并行计算所有token的关键技术。

但Teacher-Forcing存在以下问题:

  • Exposure Bias:由于训练和预测的时候decode行为的不一致, 导致预测单词(predict words)在训练和预测的时候是从不同的分布中推断出来的,而这种不一致导致训练模型和预测模型之间的mismatch。
  • Teacher-Forcing 技术在解码的时候生成的字符都受到了 Ground-Truth 的约束,希望模型生成的结果都必须和参考句一一对应。这种约束在训练过程中减少模型发散,加快收敛速度。但是一方面也扼杀了翻译多样性的可能。
  • Teacher-Forcing 技术在这种约束下,还会导致一种叫做 Overcorrect(矫枉过正) 的问题。

关于Teacher-Forcing更多的讨论见知乎专栏:https://zhuanlan.zhihu.com/p/93030328

Expression Record

be calibrated to:被校准到…