几十年来,统计机器翻译一直是主要的翻译模型[9],直到神经机器翻译(NMT)诞生。 NMT是一种新兴的机器翻译方法,它试图构建和训练一个大型的神经网络,该网络可以读取输入文本并输出翻译[1]。
NMT的先驱者是Kalchbrenner and Blunsom (2013), Sutskever et. al (2014) and Cho. et. al (2014b)等人。其中最熟悉的框架是从Sutskever等人那里借鉴的序列到序列(seq2seq)。本文将基于seq2seq框架以及如何在此框架上构建立注意力。
在seq2seq中,其思想是有两个具有编码—-解码体系结构的递归神经网络(RNN):编码器逐一读取输入的words以获得固定维数的矢量表示,然后基于这些输入,解码器使用另一个RNN进行输出。
seq2seq的问题在于,解码器从编码器接收的唯一信息是最后一个编码器隐藏状态(图0.1中的2个红色小节点),这是一个矢量表示,类似于输入序列的数字摘要。因此,对于较长的输入文本(图0.2),我们“不合理”地期望解码器仅使用一个向量表示形式(并且希望它“充分包含输入序列的信息”)来输出翻译。这可能会导致灾难性的遗忘。
让我们为解码器提供一个来自编码器不同时间步长的不同向量表示,以便它能进行更准确的翻译?,而不是仅仅使用一个固定的向量表示。那么我们将引入Attention来实现。
注意力是编码器和解码器之间的“接口”,该“接口”为解码器提供来自每个编码器隐藏状态的信息(图0.3中红色显示为隐藏状态)。通过这种模式,模型可以选择地性关注输入序列的有用部分。这有助于模型有效应对输入为长句子的情境[9]。
对齐
对齐是指将原始文本的各个部分与其翻译的相应部分进行匹配。
作为示例,我将分享过去5年中设计的4种NMT架构。我还将在本文中介绍一些比较直观的概念。
Contents
- Attention: Overview
- Attention: Examples
- Summary
Appendix: Score Functions
1. Attention: Overview
在我们研究如何使用注意力之前,我先与您分享怎样使用seq2seq模型进行翻译任务。
seq2seq
翻译人员从头到尾阅读德语文本。完成后,他开始逐字翻译成英语。如果句子过长,则他可能会忘记他在课文前面部分中所读的内容。
解决方案:seq2seq +注意力
译者从头到尾阅读德语文本时会写下其中的关键字,然后他开始翻译成英语。在翻译每个德语单词时,他使用了自己写下的关键字。
通过为每个单词分配分数,注意力将不同的注意放在不同的单词上。然后,使用softmaxed得分,我们使用编码器隐藏状态的加权和来聚合编码器隐藏状态信息,以获得上下文向量。注意层的实现可以分为4个步骤:
Step 0: Prepare hidden states.
首先,准备所有可用的编码器隐藏状态(绿色)和第一个解码器隐藏状态(红色)。在我们的示例中,我们有4个编码器隐藏状态和当前解码器隐藏状态。 (注意:最后一个合并的编码器隐藏状态将作为输入提供给解码器的第一时间步。解码器的此第一时间步的输出称为第一解码器隐藏状态,如下所示。)
Step 1: Obtain a score for every encoder hidden state.
得分(标量)是通过得分函数(也称为比对得分函数[2]或比对模型[1])获得的。在此示例中,得分函数是解码器和编码器隐藏状态之间的点积。
decoder_hidden = [10, 5, 10]
encoder_hidden score
---------------------
[0, 1, 1] 15 (= 10×0 + 5×1 + 10×1, the dot product)
[5, 0, 1] 60
[1, 1, 0] 15
[0, 5, 1] 35
在上面的示例中,对于编码器隐藏状态[5,0,1],我们获得了60分的较高关注分数。这意味着下一个字(解码器的下一个输出)将受到此编码器隐藏状态的严重影响。
Step 2: Run all the scores through a softmax layer.
我们将分数放入softmax层,以便softmaxed分数(标量)加起来为1。这些softmaxed分数代表注意力分布[3,10]。
encoder_hidden score score^
-----------------------------
[0, 1, 1] 15 0
[5, 0, 1] 60 1
[1, 1, 0] 15 0
[0, 5, 1] 35 0
Step 3: Multiply each encoder hidden state by its softmaxed score.
通过将每个编码器隐藏状态与其softmaxed分数(标量)相乘,我们可以获得对齐矢量[2]或注释矢量[1]
encoder score score^ alignment
---------------------------------
[0, 1, 1] 15 0 [0, 0, 0]
[5, 0, 1] 60 1 [5, 0, 1]
[1, 1, 0] 15 0 [0, 0, 0]
[0, 5, 1] 35 0 [0, 0, 0]
我们看到由于[5,0,1]以外的所有编码器隐藏状态的对齐由于注意力分数较低经过softMax后降低为0。这意味着我们可以预期第一个翻译输出的单词应该与具有[5,0,1]嵌入的输入单词匹配。
Step 4: Sum up the alignment vectors.
encoder score score^ alignment
---------------------------------
[0, 1, 1] 15 0 [0, 0, 0]
[5, 0, 1] 60 1 [5, 0, 1]
[1, 1, 0] 15 0 [0, 0, 0]
[0, 5, 1] 35 0 [0, 0, 0]
context = [0+5+0+0, 0+0+0+0, 0+1+0+0] = [5, 0, 1]
Step 5: Feed the context vector into the decoder.
完成的方式取决于体系结构设计。稍后,我们将在第2a,2b和2c节的示例中看到架构如何将上下文向量用于解码器。
Training and inference
在推断期间,每个解码器时间步骤t的输入是来自解码器时间步骤t-1的预测输出。
在训练期间,每个解码器时间步长t的输入是我们从解码器时间步长t-1输出的真实值。
直观感受:注意力实际上是如何工作的?
答:反向传播。反向传播将尽一切努力确保输出接近真实值。这是通过更改RNN和得分函数(如果有)中的权重来完成的。这些权重将影响编码器隐藏状态和解码器隐藏状态,进而影响注意力得分。
今天的文章Attn: Illustrated Attention分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/62199.html