This is my reading note for [ICLR 2018] Non-Autoregressive Neural Machine Translation.

另外,PaperWeekly 2018 年的时候让本文的第一作者 Jiatao Gu 来为这篇论文做了一次 PhD Talk,公众号里面有视频和 slides。

Abstract

  • 现有的神经机器翻译都是把每个新输出的词汇由先前生成的输出决定

    • 自回归,非并行,速度慢
  • 引入了一个模型,该模型避免了这种自回归属性并并行产生其输出,从而在推理过程中允许降低一个数量级的延迟。

    • 非自回归,并行,速度快

    • 通过knowledge distillation, the use of input token fertilities as a latent variable, and policy gradient fine-tuning 达到一个比较 nb 的水平

    这些暂时不算主体部分(有点多,我们先跳过这部分)

Introduction

  • 神经网络模型比传统统计模型在机器翻译 (MT) 上效果好
  • 但是神经网络模型在推理 inference 的时候比传统统计模型慢得多
  • 这俩模型都是用 autoregressive 解码器,每次的新 token 都是基于之前所有 token 来 generate 的
  • 这个思路首先肯定是没法并行做了(因为你要等前面的都 generate 完才能搞下一个)。另外,如果用神经模型的话还因为你用到了神经网络来算每一个 token(计算量特别大),所以还会特别慢

Conclusion

  • 我们为非自回归机器翻译引入了一个隐变量模型,该模型支持基于 Vaswani (2017)等人的解码器。 利用内部并行性(推理的时候也会用到)。

  • 翻译延迟做到了自回归模型的十分之一,BLEU 分数还是相当 competitive.

    主要还是提速了!!!

Background

论文很贴心地给了 Background。(但是有点太长了吧)

Autoregressive Neural Machine Translation

  • 给定源语句,NMT 将可能的输出句子分布分解为带有从左到右因果结构的条件概率链:
    • image-20220127194956641
      • Special Tokens: \(y_0\)(e.g. ) and \\(y_{T+1}\\) (e.g. )用于表示所有目标句子的开头和结尾。
      • 这些条件概率使用神经网络进行参数化。
      • 通常,使用带有单向基于 RNN 的解码器的编码器-解码器架构来捕获输出分布的因果结构。

Maximum Likelihood training

选择以自回归方式分解机器翻译输出分布可实现直接的最大似然训练,并在每个解码步骤应用交叉熵损失

image-20220127202454769

这种损失为每个条件概率预测提供了直接监督。

似乎是直接取了个对数就完事了

Autoregressive NMT without RNNs

  • 整个目标翻译结果在训练时是已知的 -> 后期条件概率(及其相应损失)的计算不依赖于在早期解码步骤中选择的输出单词(是不是就能做点并行了?毕竟不靠前面的输出了)
  • 即使推理的时候必须串行解码,训练的时候也可以想办法并行。
    • 有人把 decoder 里面的循环层换成了masked convolution layer 来提供自回归分解需要的因果结构。 (Kalchbrenner et al., 2016; Gehring et al., 2017)
  • 最近的一种方法(进一步减少串行计算)是用类似Transformer那种随机mask的自注意力机制来做 decoder 层。
    • 2017 年当时还是 SOTA 的 Transformer 网络采用这种方法。它允许信息以 constant 数量级(我理解就是\(O(1)\)?)的操作在任意长的距离上在解码器中流动,渐近少于卷积架构的复杂度。

Non-Autoregressive Decoding

Pros and Cons of AUTOREGRESSIVE ENCODING

Pros
  • 自回归的这种分解和人类语言中逐个字生成的特点是相符的,比较自然
  • 有效捕捉真实翻译的分布
  • 效果好,大规模语料库上做到了SOTA
  • Beam Search 提供了一种有效的局部搜索方法,来寻找近似最优的输出翻译。
Cons
  • 做不了并行,慢了
  • Beam search 因为 Beam size 受到收益递减的影响
  • Beam 之间有计算依赖性,所以搜索并行性有限

补课 beam search: https://zhuanlan.zhihu.com/p/82829880

Seq2seq 里面也有一步 Beam Search. 不过好像在后面我还没填坑…

Towards non-autoregressive decoding

比较简单的一个方法就是把现在的 encoder-decoder 架构中的自回归连接拿掉。假设目标序列长度 T 可以用单独的条件分布 \(P_L\) 建模,这就变成了:

image-20220128115145244

该模型仍然具有显式似然函数,并且仍然可以在每个输出分布上使用独立的交叉熵损失进行训练。 然而,现在,这些分布可以在推理时并行计算。

在 PhD talk 中 Jiatao Gu 说这种 Naive Model 的效果是:

  • Endless repeating and repeating words
  • BLEU score < 10 (SOTA ~ 30)

主要是你把每个词都看做 independent 来翻译的话就无法避免这种错误:(下面小节有详细描述)

image-20220202113122261

The Multimodality Problem

  • 如果词组之间有很多种不同的组合,然后这些组合的意思又不同(很好理解),那你就不能把它搞成 independent 的模型。
  • MLE training tends to use a single-mode model to cover multiple modes.
  • Solutions:
    • Strengthen the model to handle multi-modes
    • Reduce the modes of the training data
    • Change the learning objectives
  • 然而,这种朴素的方法不会产生好的结果,因为这样的模型表现出完全的条件独立性。 每个标记的分布 p(yt) 仅取决于源句子 X。
  • 这使得它对真实目标分布的逼近很差,随着时间的推移表现出很强的相关性。
  • 直观地说,这样的解码器类似于一组人工翻译,每个人都被要求提供一个翻译的单个单词,而与他们的同事选择的单词无关。
  • 特别是,考虑一个像“谢谢你”这样的英语源句。 这可以准确地翻译成德语,如“Danke.”、“Danke sch¨on.”或“Vielen Dank.”中的任何一个,所有这些都可能出现在给定的训练语料库中。 该目标分布不能表示为第一个、第二个和第三个词的独立概率分布的乘积,因为条件独立分布不能允许“Danke sch¨on”。 和“Vielen Dank.”。 也不能弄出“Danke Dank”。 和“Vielen sch¨on”。 条件独立假设阻止模型正确捕获目标翻译的高度多峰分布。 我们将此称为“多模态问题”,并引入修改后的模型和新的训练技术来解决这个问题。

Model

image-20220128122354763

  • 引入一个新的NMT模型-非自回归的Transformer,这个就可以并行输出整个translation了
  • 由四个部分组成:
    • encoder stack
    • decoder stack
    • fertility predictor
    • translation predictor for token decoding

Encoder Stack

与自回归 Transformer 类似,编码器和解码器堆栈都完全由前馈网络 (MLP) 和多头注意力模块组成。 由于没有使用 RNN,因此对顺序执行没有内在要求,使得非自回归解码成为可能。 对于我们提出的 NAT,编码器与原始 Transformer 网络保持不变。

Decoder Stack

为了 parallel 和非自回归,魔改一下 decoder 栈。

Decoder Input

在解码开始之前,NAT 需要知道目标句子的长度,以便并行生成所有单词。

更关键的是,我们不能使用时移目标输出(在训练期间)或先前预测的输出(在推理期间)作为第一个解码器层的输入。

完全省略第一个解码器层的输入,或者只使用Positional embeddings性能太差了。 我们用从编码器端复制的源输入来初始化解码过程。 由于源句和目标句的长度通常不同,我们提出了两种方法.

  • 统一复制源输入:每个解码器输入 t 是第 (T’t/T) 轮编码器输入的副本。 这相当于以恒定的“速度”从左到右“扫描”源输入,并导致在给定(预测的)目标长度的情况下确定性的解码过程。
  • 使用 fertilities复制源输入:更强大的方法是将每个编码器输入复制为解码器输入零次或多次,每个输入被复制的次数称为那个输入词的“fertility”。 在这种情况下,源输入以与每个输入的生育力成反比的“速度”从左到右扫描(\(v ~ 1/fertility\)); 解码过程现在以生育率序列为条件,而结果输出长度由所有生育率值的总和确定。(为什么?)

Non-casual self-attention

没有输出分布的自回归分解的约束,我们不再需要阻止早期解码步骤访问来自后面步骤的信息。 因此,我们可以避免传统 Transformer 解码器的自注意力模块中使用的因果掩码。 相反,我们只屏蔽每个查询位置,使其不关注自身,我们发现相对于未屏蔽的自我关注,这可以提高解码器的性能。

Positional attention

我们还在每个解码器层中包含一个额外的位置注意模块,这是一个多头注意模块,具有与 Transformer 网络其他部分相同的一般注意机制,即

image-20220130214931434

其中 \(d_{model}\) 是模型隐藏大小,但位置 encoding 作为 query 和 key,解码器状态作为 value。 这将位置信息直接合并到注意力机制的过程中,并提供比单独的嵌入层更强的位置信号。 我们还假设这些附加信息的大小提高了解码器执行本地重新排序的能力。

Modeling Fertility to tackle the the multimodality problem

多模态问题的解决:引入潜在变量 z 来直接对翻译过程中的非确定性建模。我们首先从先验分布中采样 z,然后以 z 为条件以非自回归方式生成翻译。

这个 z 就是后面我们要提到的 Fertility(borrowing old ideas from IBM model2)。这东西来自于统计机器学习,简单来说就是 source 端的东西需要被翻译多少遍(概念上的,不一定真的翻译多少遍,其实是表示一种翻译的方式)

下图的 2 0 0 2 1 就是 Fertility. 可以看出相比于左边的 AUTOREGRESSIVE MODEL 右边的 NAT 做到了并行,速度显然快了不少。

image-20220202120726538

这个 z 我们咋理解呢,这里给出了一种解释的方法:把这个隐变量看做一个句子级别的”plan”.这个隐变量有几个比较好的性质:

  • 给定特定的输入-输出对,推断这个隐变量的值应该很简单,这是端到端训练模型所必需的。
  • 将 z 添加到条件上下文中应尽可能考虑不同输出之间跨时间的相关性,以便每个输出位置的剩余边际概率尽可能接近满足条件独立性。
  • 它不应该直接考虑输出翻译的变化,以至于 \(p(y|x, z)\) 变得容易学习,因为这是我们的解码器神经网络将近似的函数。

Translation Predictor and the Decoding Process

Inference 的时候模型扫一遍所有 fertility 序列找到最大条件概率的翻译。

如果 fertility 序列给定,识别最优翻译只需要独立地把每个位置的翻译最大化输出就可以了。

我们定义 Y = G(x1:T0 , f1:T0 ; θ) 来表示给定源句子和生育率值序列的最佳翻译。

为了不 brute force 搜索,这里有三种启发式解码算法来压缩搜索空间:

Argmax Decoding

Best Translation <-> highest-probability fertility for each input word:

image-20220202152409591

Average Decoding

We can also estimate each fertility as the expectation of its corresponding softmax distribution:

image-20220202152548229

Noisy parallel decoding (NPD)

目标分布的真正最优值的更准确的一个近似是从 Fertility 空间中抽取样本,并计算每个 Fertility 序列对应的最佳翻译。然后我们就可以用自回归教师来确定最佳整体翻译了。

image-20220202153446493

请注意,当使用自回归模型作为一组解码翻译的评分函数时,它可以像在训练时一样快地运行,因为它可以并行提供所有解码器输入。

NPD 是一种随机搜索方法,它也会根据样本量提前增加所需的计算资源。 但是,由于所有搜索样本都可以完全独立地计算和评分,因此如果有足够的并行性,与计算单个翻译相比,该过程只会使延迟加倍。

在测试时,传统的greedy decoding将每个源单词的fertility均取有最大可能性的值,因此很难接近全局最优的翻译结果。因此,作者提出了基于Noisy Parallel Decoding的方法,首先生成多个可能的翻译候选,再从中利用AT teacher挑选probability最大的句子作为最终的翻译结果。这个过程和AT模型训练时teacher forcing的模式类似,因而可以并行,不影响non-autoregressive的本质。(Source: Non-Autoregressive NMT Summary (1): https://zhuanlan.zhihu.com/p/82892975 )

补课:一分钟带你认识深度学习中的知识蒸馏:https://zhuanlan.zhihu.com/p/258390817

Reference

什么是知识蒸馏?:https://zhuanlan.zhihu.com/p/90049906

机器学习-隐变量模型和期望最大算法:https://zhuanlan.zhihu.com/p/136169435

Non-Autoregressive NMT 小结 (一):https://zhuanlan.zhihu.com/p/82892975(点进去一看是师兄的博客……)

香港大学顾佳涛:非自回归神经机器翻译 | 直播预告:https://zhuanlan.zhihu.com/p/34248246 (PaperWeekly 主办的 PhD Talk,这个是一作过来做 pre。。。建议看下,感觉讲得还挺好的)

Categories:

Updated: