几十年来,统计机器翻译在翻译模型中一直占主导地位 [9],直到神经机器翻译(NMT)出现。NMT 是一种新兴的机器翻译方法,它试图构建和训练单个大型神经网络,该网络读取输入文本并输出译文 [1]。
NMT 的最初开拓性研究来自 Kalchbrenner 和 Blunsom (2013)、Sutskever 等人 (2014) 和 Cho. 等人 (2014b) 这三篇论文,其中我们较为熟悉的框架是 Sutskever 等人论文提出的序列到序列(seq2seq)学习。本文基于 seq2seq 框架阐述如何构建注意力。
图 0.1:seq2seq,输入序列长度为 4在 seq2seq 中,初步设想是让两个循环神经网络(RNN)构成编码器-解码器架构:编码器逐个读取输入词,获得固定维度的向量表示,然后另一个 RNN(解码器)基于这些输入逐个提取输出词。
图 0.2:seq2seq,输入序列长度为 64seq2seq 的问题在于,解码器从编码器接收的唯一信息是「最后一个编码器隐藏状态」(图 0.1 中的两个红色节点),这是一种类似于输入序列数字总结的向量表示。因此,对于较长的输入文本(图 0.2),我们如果仍希望解码器仅使用这一个向量表示(希望它「充分概括输入序列」)来输出译文,那这是不合理的。这可能导致灾难性遗忘。这段话有 100 个单词,你能立刻把它翻译成另一种语言吗?
如果我们做不到,那么也不应该对解码器这么苛刻。如果向解码器提供每个编码器时间步的向量表示,而不是只有一个向量表示,是不是可以得到更优质的翻译结果?
引入注意力机制。
图 0.3:引入注意力机制作为编码器和解码器之间的接口。这里,第一个解码器时间步是在给出第一个翻译单词之前从编码器接收的信息。
注意力是编码器和解码器之间的接口,它为解码器提供每个编码器隐藏状态的信息(图 0.3 中的红色隐藏状态除外)。通过此设置,模型能够有选择地侧重输入序列的有用部分,从而学习它们之间的 alignment。这有助于模型有效地处理输入长句 [9]。
alignment 定义:alignment 意为将原始文本片段与其对应的译文片段匹配。
图 0.4:法语单词「la」的 alignment 分布在输入序列中,但主要分布在这四个词上:『the』、『European』、『Economic』 和 『Area』。深紫色表示注意力得分更高。(图源:https://distill.pub/2016/augmented-rnns/#attentional-interfaces)
[2] 中有两种类型的注意力机制。使用所有编码器隐藏状态的注意力类型也称为全局注意力。而局部注意力仅使用编码器隐藏状态的子集。本文主要介绍全局注意力,因此本文中对「注意力」的任何引用都是指「全局注意力」。
本文阐述注意力机制时应用了动画形式,以便我们在不理解数学公式的情况下也能更好地理解它们。在案例中,作者将分享在过去 5 年中出现的 4 个 NMT 架构,也将对这篇文章中的一些概念做一些直观解释。