每周论文31

本周论文:

  1. Quantifying Exposure Bias for Neural Language Generation
  2. Sequence-to-Sequence Learning as Beam-Search Optimization
  3. Learning to Stop in Structured Prediction for Neural Machine Translation
  4. Scheduled Sampling for Transformers
  5. Parallel Scheduled Sampling

[Quantifying Exposure Bias for Neural Language Generation]

讨论了exposure bias在生成任务上的影响大小。结论是影响较小。
其具体方法是①人工评测,在给定相同前缀下,模型是否能生成合理的句子。
②定量分析,通过定义指标,分别计算模型分布与真实分布之间的差异。


[Sequence-to-Sequence Learning as Beam-Search Optimization]

经典论文。写得比较好的笔记:https://zhuanlan.zhihu.com/p/29969582

本文目的是缓解传统机器翻译训练方法的几个问题。

背景

传统机器翻译训练方法一般采用teacher forcing。具体而言有以下三个问题:

  1. Exposure Bias:训练使用ground truth作为输入,而在测试期间使用上一阶段的prediction作为输入,错误会迅速累积
  2. Loss-Evaluation Mismatch:训练使用word-level的loss而在测试期间使用BLEU作为指标
  3. label bias:word probabilities at each time-step are locally normalized, guaranteeing that successors of incorrect histories receive the same mass as do the successors of the true history

Beam Search Optimization

简单谈谈主要做法:

  1. 在训练过程中也使用beam search
  2. 这里的beam search与传统的beam search不同,每一步不使用normalized probability,而是直接使用raw score。也即,去掉softmax层。每一维代表的意义不再是概率,而是在给定$w_{1 : t-1}$下,生成$w_t$的分数,也即:$f\left(w_{t}, h_{t-1}, x\right)$。
  3. Search-Based Loss:计算loss不再是word-level的CrossEntropy,而是在某个时间步t当ground truth掉出beam size的窗口时才会计算loss。下面会讲一下具体怎么做的
  4. 引入sentence-level cost,具体也即当ground truth掉出beam size的窗口时会计算ground truth与beam search窗口内分数最低的句子的前缀的BLEU,如果两个前缀很相似,则该loss就会小一些,否则会大一些。也即在loss的前面加了一个scale,能够动态放大或缩小loss。

具体操作

如图,黄色的是ground truth。在训练过程中,使用beam search生成,当ground truth在beam size内,则不计算loss,继续生成下去;当ground truth掉出beam size了,如图第4个step,则计算ground truth所对应的分数和beam size内分数最小的差距的loss,其目的是希望能够让模型将ground truth排进beam size,计算loss的方法是:

其中$\Delta$所代表的是两个$y$所对应的前缀的匹配程度,用以缩放loss的大小,比如可以将$\Delta$设为1-BLEU。

当ground truth掉出beam size时,显然不能再用模型生成的词去预测接下来的词,因此在step=4时用ground truth继续生成下去,直到再次出现掉出beam size的情况。

注意到在t<N时,ground truth一直是与beam size内的最后一个词进行比较的,但在最后一个step希望模型能够将ground truth排在第一位,因此在t=N时是与beam size的第一位进行比较。

因此最后的算法则是:

一点思考

BSO摒弃了传统的word-level的loss,引入sentence-level cost,能够缓解Loss-Evaluation Mismatch的问题;同时训练和测试都使用了beam search,也即在训练过程中就接触了自己的prediction,这样就缓解了exposure bias的问题;论文中还提到用raw score而不是normalized probability可以解决label bias的问题。确实这个算法很精妙。

但似乎仍然有一点问题。第一,在训练过程中的loss非常sparse,可能难以训练收敛;为了解决这个问题,论文的解决方案是使用teacher forcing先预训练一个标准的模型,也即BSO是没办法learn from scratch;同时该方法具有序列性,因此可能难以应用于Transformer这样的模型上。


[Learning to Stop in Structured Prediction for Neural Machine Translation]

针对BSO进行了一定的改进。

①BSO在训练过程中倾向于生成更长的句子,因为是使用raw score作为beam search的句子打分,因此生成越长的句子分数可能越高;
改进:在raw score外面套一层sigmoid

②为了鼓励模型生成和ground truth类似的长度,对提早停止的句子进行惩罚,也即对在ground truth之前就生成eos的情况计算loss:

$\begin{aligned} \mathbb{L}^{\mathrm{s}}=& \sum_{t=1}^{|\mathbf{y}|} \sum_{j=1}^{b} \mathbb{1}\left(\hat{y}_{t}^{j}=<\langle\mathrm{eos}\rangle\right) \cdot Q\left(\hat{y}_{t}^{j}, \hat{y}_{t}^{b+1}\right) \\ Q\left(\hat{y}_{t}^{j}, \hat{y}_{t}^{b+1}\right)=&\left(g_{\mathbf{x}}\left(\hat{y}_{t}^{j} | \hat{\mathbf{y}}_{<t}^{j}\right)-g_{\mathbf{x}}\left(\hat{y}_{t}^{b+1} | \hat{\mathbf{y}}_{<t}^{b+1}\right)\right)^{+} \end{aligned}$

图例:


[Scheduled Sampling for Transformers]

讨论了scheduled sampling如何应用于transformer。
其做法非常直观,首先将golden传入获得预测然后将预测和golden混合再传入一次decoder。没啥新的地方


[Parallel Scheduled Sampling]

尝试缓解scheduled sampling的序列性的特点。其实就是针对transformer这种并行性的提出新的scheduled sampling。做了一点小创新。

具体做法是:先用ground truth获得prediction,然后用prediction和ground truth混合,循环几次,其中混合的方法是,每个循环都会将一个前缀从golden换成prediction,其他的词用概率sample。这样到最后就全是prediction了。

算法:

引入了recurrent以及不同的替换方式。