从0开始GAN-5-NAT Decoding

non-autoregressive decode 相关的paper:

paper1

Constant-Time Machine Translation with Conditional Masked Language Models

Motivation

把auto-regressive转换成non-autoregressive. 其做法是先确定一个target sentece的长度,然后可以看作是每一个time-step的分类任务了。这样decoder就是可并行的了。

architecture

模型架构采用transformer的架构。

原生的 Transformer:

  • source-language encoder: self-attention, 包括padding mask.

  • translation model decoder

    • self-attention, 包括padding mask和 look ahead mask,用以mask掉future information.

    • interaction attention with enc_out, 包括 padding mask.

这篇paper中的 conditional mask language model(CMLM) 与transormer的区别在于 decoder 部分的self-attention去掉了 look ahead mask. 所以可以类似于 BERT 那样基于上下文来预测被 mask 的词,decoder 是 bi-directional.

Decoding with Mask-Predict

decoder 的具体操作是一个迭代的过程。

| src | Der Abzug der franzsischen Kampftruppen wurde am 20. November abgeschlossen . |

| :—– | :—————————————————- |

|t=0|The withdrawal of French combat troops was completed on November 20th .|

|t=1|The departure of the French combat completed completed on 20 November .|

|t=2|The departure of the French combat completed completed on 20 November .|

表中加粗的部分是被 mask 的。可以看到随着迭代进行,mask的词越来越少。

如何选择mask的词:

  1. mask词的数量n: 基于一个递减的公式, $n=N\dfrac{T-t}{T}$. t 是迭代次数。

  2. mask哪些词呢:$Y^{(t)}_{mask}=argmin_i(p_i,n)$ $p_i$ 表示上一次prediction得到的每一个词的置信度,选择概率最低的 n 个词。

基于 encoder_src, $Y_{obs}$ 对 mask token 进行预测:

target sequence length

这中 non-Autoregressive 存在的一个大问题就是如何确定target sentence 的长度。在 auto-egressive 里面是根据 ${}$ 来确定句子长度的。

针对这个问题,作者采用了类似于 BERT 中 CLS 的做法。使用了 $LENGTH$ 来预测sentence的长度,也是一个分类任务,这个 LENGTH 对应的词表应该就是长度~

作者选取 top b length,类似于 beam search. 然后选择 candidated b sentence 中概率最大的.

$$\dfrac{1}{N}\sum logp_i^{(T)}$$

code reading

paper2

Non-Autoregressive Neural Machine Translation

Motivation:

现有的机器翻译模型在inference时,需要在生成前一个单词的基础上继续生成下一个单词,这种自回归的特性严重影响了推理的速度。

并且与训练阶段的不一致导致存在exposure bias。作者提出一个非自回归的方法,在infer阶段并行输出。

Exposure bias:

  • training 阶段上一个token是ground truth

  • infer 阶段上一个token是生成得到的,这样自回归生成整个句子存在误差累积

  • 两个阶段生成target的方式不一样,也就是 exposure bias.

Model Architecture:

  • 前一项表示基于监督学习来预测targets 句子的长度。在本文中作者使用了这个词 fertilities(生育能力) 来表示通过source句子通过encode之后所包含的知识.

  • 后一项依旧是极大似然估计,也就是 independent cross-entropy losses on each output distribution。 但不同的是,在inference阶段也是可以并行的。

这里有个疑问,在训练阶段会预测得到一个长度T,但是训练阶段时groud truth长度的,这个怎么解决?

这里在训练阶段显然需要长度与 ground truth 的target sentence长度一致,才能计算 word-wise corss entropy loss.

Decoder Stack

1.decoder input

首先关于 decoder 的初始输入,在已有的模型中,训练阶段 decoder 的输入是 time-shifted target outputs,推理阶段是前面时间步预测的输出。

对于NAT模型,需要提前确定 target output 的长度,作者提出了两种方法:

  • Copy source inputs uniformly

  • Copy source inputs using fertilities, 如上图中输入的每个时间步都有其对应的 fertility. 然后把source input按照其对应的次数copy到decoder的输入。

2.Non-causal self-attention

因为不是自回归,也就是下一个词的生成并不依赖于previous的tokens,所以可以去掉transformer中decoder部分的cause-mask,也就是可以结合上下文的词,而不仅仅只是上文。

3.position attention

We also include an additional positional attention module in each decoder layer, which is a multi-head attention module with the same general attention mechanism used in other parts of the Transformer network. 为了强调位置信息。

Modeling fertility to tackle the multimodality problem

$P_F(f_{t’}|x_{1:T’}; \theta)$ 表示 fertility 在 t’ 时间步的概率分布,其是通过encoder顶层的 mlp + softmax 得到的。

作者

Xie Pan

发布于

2019-06-29

更新于

2021-06-29

许可协议

评论