第二页 · 背景

上场之前的那几年

不讲 Transformer 如何搭建,只讲 2014–2017 年机器翻译已经形成的默认做法、其代价、先前补救仍缺什么,以及本文走进来时记分板上的分数。

2014 年有了编码器–解码器,2014–2015 年有了仍附着于循环网络的注意力,2016 年有了工业系统 GNMT,2016–2017 年有了卷积作为并行的另一条路。本文发表时,这些方法与可比分数均已在场。

机器翻译是怎样一种任务

机器翻译所求的是:给定源语言的一句,自动写出目标语言中与之对应的一句。评测时通常备有人工参考译文,再用自动指标比较系统输出与参考译文的重合程度。2014 年以后,有竞争力的系统几乎都改用神经网络来拟合这种对应。神经网络是一类由可调参数构成的函数,用大量成对例句学习输入与输出之间的映射;本文所讨论的翻译系统即属此类。

因而问题被写成:如何把源句读进去,再把目标句写出来。两端的长度不必相等,词序也不必一一对应。所缺的是一种能够阅读变长序列、并生成另一条变长序列的计算结构。

编码器–解码器:把任务拆成两段

2014 年,Sutskever、Vinyals 与 Le,以及 Cho 等人,分别给出了此后几乎所有神经翻译都沿用的任务形状:编码器阅读源句并形成内部表示,解码器再依据该表示逐词写出目标句。这个两段结构称为编码器–解码器。Sutskever 等人的系统名为 ,Cho 等人的系统名为 RNN Encoder–Decoder;所谓“序列到序列”,此后几乎就等于这一形状。

后来的系统——包括本文——仍然承认这一形状。改变的不是“要不要分成两端”,而是两端内部还用不用循环网络。循环神经网络按词的先后一步步更新内部状态;因此同一句里后一个位置必须等前一个位置算完。两端当时都用这种:编码器把源句逐步压入一串内部状态,解码器再逐步吐出目标词。Cho 等人与 Sutskever 等人用的是同一模板。

门控使这条路能走得更远。用输入、遗忘、输出三门,使误差信号能够穿过许多时间步而不迅速消失的循环单元,称为 (Hochreiter & Schmidhuber, 1997);用更轻的两门做相近之事的,称为 (Chung et al., 2014)。引言把二者并列为 already established recurrent SOTA。到 2016 年,几乎所有有竞争力的神经机器翻译都建立在深层 LSTM 编码器–解码器上。这不是因为无人设想过其他结构,而是因为这条路径已经能够训练、能够使用、能够部署。

并非从真空中出现。它是对这条默认答案的一次拒绝。拒绝之前,须先看清这条路付过的代价。

Section 1 citing Sutskever et al. 2014 [35];Cho et al. 2014 [5];Hochreiter & Schmidhuber 1997 [13];Chung et al. 2014 [7]

顺序计算的代价

循环网络把符号在句中的位置对齐到计算的时间步。内部状态 ht 必须等 ht−1 算完,一个训练样本内部,位置之间无法并行。短句上这一约束尚可忍受;序列一长,代价加重:既延长训练墙钟,也迫使远距离信号穿过一长串逐步更新。

须加一层区分:不同句子之间本来就可以并行处理。代价不在“一次训练许多句”,而在“同一句内部,第 t 个位置必须等待第 t−1 个位置”。图形处理器(GPU)是一种适合大规模并行数值运算的硬件,因而人们希望尽量把位置之间的计算同时做完。循环计算却仍须按位置依次推进,硬件的并行能力因此无法在句内充分发挥。Introduction 把这件事写成 later becomes critical at longer sequence lengths——所 critical 的,是墙钟与梯度路径叠在一起。

Section 1 写得很干脆:sequential dependence precludes parallelization within training examples,并且在更长序列上变得 critical。2017 年 Google Brain 的作者面对的,不只是“再堆一层 LSTM”,而是:翻译这种把一种序列变成另一种序列的任务,是否还必须把计算时间与符号位置一一对齐。

Hochreiter 等人 2001 年已讨论长程依赖的路径长度。循环网络中,两个相距很远的词,其间的最长计算路径为 O(n):中间隔着整段逐步更新。这张对照后来会在 Table 1 里与卷积、并置。此处先记住结论:默认骨架把位置当成必须依次经过的步骤,样本内并行因此被禁止;这不是实现细节,而是结构假设。

Section 1;Hochreiter et al. 2001 路径长度动机 [12];Table 1

2014 年的注意力:已经在场,但仍附着于循环

固定向量带来瓶颈:编码器须把整句压进一个向量,解码器再从这一个向量恢复整句。句子一长,信息损失加重。Bahdanau、Cho 与 Bengio(2014)因此让解码器在写每一个目标词时,用一个小型前馈网络为源句各位置打分(加性注意力),再按分数加权,而不必只依赖那个固定向量;这一机制即。Luong、Pham 与 Manning(2015)又发展了点积、拼接等变体。对齐——即判断目标侧当前词应主要参照源侧哪一处——至此已经可以计算。

然而当时的注意力多半仍与循环网络一并使用。它帮助循环网络够到远处,并不替代循环网络。Section 1 写明:in all but a few cases,注意力仍与 recurrent network 一起用。少数例外中,论文点名 Parikh 等人 2016 年的 Decomposable Attention;Cheng、Dong 与 Lapata 2016 年的 LSTMN 也用过句内注意力,但骨架仍是循环。

因而 2014–2016 年的共识已经是:距离不应决定能否看见。所缺的并不是注意力这一零件,而是一次把循环本身去掉的决定。工业线上已经出现“深层 LSTM 加注意力”的生产系统(即后文的 ):注意力已经进入部署,却并未取消循环。Bahdanau 解决的是固定向量瓶颈,不是位置之间必须排队计算的问题。所以 2016 年可以同时成立两句并不矛盾的判断:注意力已经重要;骨架仍是循环。

Section 1 citing Bahdanau et al. 2014 [2];Luong et al. 2015 [24];Parikh et al. 2016 [27];Cheng et al. 2016 [4]

卷积:买到了并行,远距离仍然昂贵

不愿按位置排队的研究者,在 2016–2017 年转向卷积。卷积在每个位置上用同一组局部核做运算,相邻位置共享核的形状;因此各个位置可以同时计算,从而避开循环那种逐步等待。(Kalchbrenner et al.)、(Gehring et al.),以及 Neural GPU、Extended Neural GPU 一类工作,都属于这条路线。Section 2 把它们与循环放在同一张对照表里:想摆脱逐步更新,卷积是当时最显眼的另一条路。

并行换来的是另一项代价:两个位置要发生关系,中间须叠过的运算次数会随距离增长。一个位置只“看见”核覆盖的邻域;相距更远的两个词,必须经过若干层之后,感受野才能重叠。ConvS2S 中这条路径随距离线性增长;ByteNet 用膨胀卷积——核在位置轴上隔若干步取样,以扩大感受野——改为对数增长。Table 1 把三条路摊开:每层计算复杂度、最少串行步数、最长依赖路径。

Recurrent
路径 O(n)

每层 O(n·d²),串行步 O(n)。ht 须等 ht−1

Conv / dilated
O(n) / O(logk n)

位置可并行,但远距离须叠多层核。

Self-attention
路径 O(1)

每层 O(n²·d),串行 O(1)。任意两位置一步连上。

Table 1 · Section 2 · 讨论落在 Section 4

常数路径并非免费。自注意力对所有位置做加权平均,作者称之为降低了有效分辨率:一次平均把多种关系挤进同一组权重。后文的即针对这场平均——那是做法页的内容。背景只需记住:卷积已经证明可以不按位置排队,只是远距离仍然昂贵。

Section 2;Table 1;Kalchbrenner et al. [18];Gehring et al. [9];Kaiser & Bengio [16];Kaiser & Sutskever [17]

GNMT:循环加注意力的工业系统

2016 年,Wu 等人的 GNMT(Google's Neural Machine Translation)把“深层 LSTM 编码器–解码器加注意力”推到工业部署:word-piece 词表(把词切成可组合的子词片段,以便处理未登录词)、集束搜索、长度惩罚。2016–2017 年工业神经翻译的代表系统即是它。

Table 2 里仍会见到它。GNMT+RL:英德 24.6,英法 39.92;多模型平均(ensemble)26.30 / 41.16。它既是基线,也是本文借用解码配方的来源——Section 6.1 的 beam 4、长度惩罚 α=0.6,沿这条线。跨栈注意力后来被说成模仿 GNMT / Bahdanau / ConvS2S 里典型的序列到序列注意力,只是两端都将不再是循环网络。

称之为这条路线的工业尽头,并不是说循环突然失效,而是说:门控、注意力、词表与搜索都已加上。再往前,要么继续把 LSTM 堆深,要么更换骨架。本文后头用的解码配方并不是新发明,而是沿 GNMT 这条工业线借来的。更换骨架的工作,仍走在同一条评测与部署轨道上。

Wu et al. 2016 [38];Table 2;Section 6.1;Section 3.2.3

本文上场前,WMT 2014 的先前分数

主战场是 WMT 2014 的 newstest2014,指标是 tokenized BLEU:一种按片段重合程度自动打分的指标,完整说明见证据页。此处仅把它当作记分板上的数字,记为 。下列数字均来自 Table 2 的基线列——尚无 Transformer。它们就是 2017 年夏天本文发表时,先前系统已经报到的分数。

Table 2 基线 · WMT 2014 newstest2014 BLEU。只抄论文写出的先前系统,不写入 Transformer 自己的分数。

模型EN–DEEN–FR笔记
23.75卷积转导;路径对数增长
+ RL24.639.92循环工业线,附强化学习
25.1640.46卷积序列到序列
MoE26.0340.56Shazeer et al. 2017,专家混合
Deep-Att + PosUnk39.2深层注意力;ensemble 40.4
GNMT ensemble26.3041.16多模型平均的循环工业线
ConvS2S ensemble26.3641.29当时英德 / 英法表上最高的先前系统

ByteNet 以卷积做转导,英德 23.75,尚低于 GNMT 单模型。GNMT+RL 是循环加注意力的工业单模型,英德 24.6、英法 39.92。ConvS2S 以卷积序列到序列略高于 GNMT 单模型,25.16 / 40.46。MoE(Shazeer et al., 2017)用专家混合再抬一点,26.03 / 40.56,是当时单模型最好的一档。Deep-Att + PosUnk 只报英法,单模型 39.2,ensemble 40.4。GNMT 的 ensemble 把循环线推到 26.30 / 41.16;ConvS2S 的 ensemble 再高半档,26.36 / 41.29,为表上先前系统的最高分。

因而当时所谓 state of the art,并不是一句空话,而是这些自动打分:单模型德语停在 MoE 的 26.03,ensemble 把 ConvS2S 推到 26.36;法语单模型 MoE 40.56,ensemble 的 ConvS2S 41.29。卷积线已经能与循环工业线并列;MoE 再抬一点;ensemble 再加半个到一个点。下一页才是那笔选择如何落地。分数如何压过这些数字,再下一页。

Table 2 · 基线数字仅取自 blocks.json;Transformer 行留到证据页