Neural Machine Translation by Jointly Learning to Align and Translate
Neural Machine Translation by Jointly Learning to Align and Translate - 中文验证版
英文原始依据卡片:neural_machine_translation_align_2014.md
状态:已翻译。
元数据
- Slug:
neural_machine_translation_align_2014 - 年份: 2014
- 会议: ICLR
- 作者: Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio
- 阅读状态: read complete
- 计算范式: 单 GPU 深度学习
- 主要来源: PDF、抽取文本
计算设置
论文在附录表 2 中列出具体 GPU 和 wall-clock 训练时间。RNNenc-30 使用 TITAN BLACK,8.46e5 次更新,6.4 个 epoch,109 小时。RNNsearch-30 同样使用 TITAN BLACK,4.71e5 次更新,3.6 个 epoch,113 小时。RNNenc-50 使用 Quadro K-6000,6.00e5 次更新,4.5 个 epoch,108 小时。RNNsearch-50 使用 Quadro K-6000,2.88e5 次更新,2.2 个 epoch,111 小时,更长的 RNNsearch-50? 运行使用 Quadro K-6000,6.67e5 次更新,5.0 个 epoch,252 小时。正文将其概括为每模型约五天。
训练循环是单 GPU 循环序列训练。每次 SGD 更新使用 80 个句子的小批量,配合 Adadelta。WMT 2014 英法语料在选择前共 8.5 亿词,缩减至 3.48 亿词。模型使用 30,000 词源端和目标端短列表、1000 单元循环隐状态、620 维词嵌入和深度输出中的 500 单元 maxout 隐层。这还不是广泛的数据并行 TPU/GPU 设置;主要成本是循环展开、词表 softmax 工作以及不均匀句子长度造成的浪费 padding。
瓶颈
概念瓶颈是 encoder-decoder NMT 中的固定长度 context vector。论文指出,神经网络必须将源句的所有必要信息压缩到一个向量中,使长句处理困难;先前工作表明 encoder-decoder 性能随输入长度增加而急剧下降。这是表示空间中的内存瓶颈:无论源端包含多少信息,decoder 只收到一个固定摘要。
计算瓶颈是循环序列长度。附录说明每次更新所需时间与 minibatch 中最长句子的长度成正比。这意味着一个长样本可能迫使 GPU 为整个 batch 处理额外的循环步。与后来的 self-attention 模型不同,循环还阻止了跨位置的完全并行。RNNsearch 在源端位置上增加了逐目标步的 alignment,因此它花费更多计算来避免固定向量瓶颈,但仍受限于顺序解码和依赖于句子长度的工作量。
方法适配
attention/alignment 机制通过在动态内存访问上花费额外计算来适配这种 GPU 设置,而不是强迫所有源端信息通过一个固定向量。双向 encoder 创建源端标注序列。在每个生成的目标词处,decoder 对源端标注计算 soft alignment,并形成一个 context vector 作为加权和。论文强调,这使 encoder 不必将所有信息编码到一个固定长度向量中;信息可以分散在整个序列中并选择性检索。
实现还将数据管线适配到序列硬件浪费。每 20 次更新前,它检索 1600 个句子对,按长度排序,分成 20 个小批量,将 batch 中最长句子造成的浪费计算最小化。梯度 L2 范数被裁剪至最多 1,Adadelta 自适应每个参数的学习率。推理时,beam search 花费额外测试时计算来近似最佳翻译。这些选择都是计算感知的:长度排序改善 GPU 利用率,梯度裁剪稳定长循环展开,beam search 用延迟换取 BLEU。
证据
证据将翻译质量同时绑定到 alignment 机制和五天单 GPU 训练范式上。表 1 报告 WMT 2014 英法 BLEU 分数:RNNencdec-30 在所有句子上得 13.93,在无 UNK 句子上得 24.19,而 RNNsearch-30 得 21.50 和 31.44。RNNencdec-50 得 17.82 和 26.71,而 RNNsearch-50 得 26.75 和 34.16。更长的 RNNsearch-50? 达到 28.45 和 36.15,在无 UNK 句子上接近或超过 Moses(Moses 为 35.63),尽管 Moses 在所有句子上以 33.30 保持更高。
长度证据是核心。图 2 绘制了按句子长度的 BLEU 分数,正文说明 RNNencdec 性能随句子长度增加而急剧下降,而 RNNsearch-30 和 RNNsearch-50 更稳健。RNNsearch-50 即使对长度 50 或更长的句子也未表现退化,且 RNNsearch-30 甚至优于 RNNencdec-50。定性样本显示 RNNencdec 在约 30 词后漂移,而 RNNsearch 保持了长句含义。附录表 2 随后将这些改进锚定于训练规模:更好的长运行模型需要在 Quadro K-6000 上 252 小时。
历史影响
本文引入了可学习的注意力作为序列模型的计算分配机制:decoder 动态选择读取哪些源端状态,而非依赖单一瓶颈向量。在计算结构术语中,它将固定内存接口转换为逐 token 的按内容寻址读取。它是 Transformer 的直接前身;在 Transformer 中,attention 从围绕循环状态的附加模块变成了主要可并行计算。该卡片也标记了 2014 年的一个时刻:单 GPU 多日运行可以训练有用的 NMT 模型,但完全的序列并行尚未到来。
局限
模型仍然是循环的,因此在源端和目标端位置上无法完全并行。Attention 改善了内存访问,但增加了跨源端-目标端位置对评估的 alignment 计算;附录指出 alignment 模型的设计必须保证每句对需评估 Tx * Ty 次。词表限制为每种语言 30,000 词,未知词仍是主要质量问题。硬件规模也很窄:即使最强的运行也只是一块 Quadro K-6000 运行 252 小时,而非分布式训练系统。Attention 解决了固定向量瓶颈,但尚未解决 Transformer 后来针对的加速器级并行瓶颈。
链接
- 所属计算范式:compute spine
- 相关卡片:Seq2Seq 2014
- 后续链接卡:Attention Is All You Need 2017
- 方法索引:seq2seq
- Ledger 更新:compute bottlenecks