Attention模型

1、注意力模型的直观理解

我们以前用过这种Seq2Seq的编码解码架构(a Encoder-Decoder architecture)来完成机器翻译的任务。当使用RNN读入一个句子时候,另一个就会输出一个句子。这种模型对于短句子有用,但是长句子却效果不好。如图:


Attention模型

可以看到随着句子长度增长,Bleu Score在下降。因为上面的模型要记住一整个很长的法语句子,然后在Decoder中输出。而人工翻译可以先翻译出句子的部分,再看下一部分,并翻译一部分,就这样一直下去,因为记忆整个句子是很难的。所以,我们引入了注意力模型(the attention model),如图所示:


Attention模型

注意力模型来自于Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014.)。
让我们来举例说明一下。假如我们有一个法语句子:(法语)Jane visite l'Afrique en Septembre。假定我们使用RNN,在这种情况下,我们可以使用一个双向RNN(a bidirectional RNN),为了计算每个输入单词的特征集(set of features),你必须要理解输出Attention模型Attention模型一直到Attention模型的双向RNN。但是我们并不是只翻译一个单词,让我们先去掉上面的Attention模型,就用双向的RNN。我们将使用另一个RNN生成英文翻译。我们用Attention模型表示RNN(也就是解码器Decoder)的隐层状态(the hidden state in this RNN)。我们希望在这个模型里第一个生成的单词是Jane。于是等式就是,当你尝试生成第一个词时候,我们应该看输入的法语句子的哪个部分。所以,注意力模型就会计算注意力权重。我们用Attention模型来表示当你生成第一个词时你应该放多少注意力在输入的第一个词上。然后我们算第二个,Attention模型表示我们计算第一个词Jane时,我们将会放多少注意力在输入的第二个词上面,后面同理。这些将会告诉我们,我们应该花多少注意力在记号为Attention模型的内容上。这是最上面RNN(也就是解码器Decoder)的一个单元,如何尝试生成第一个此。对于RNN的第二步,我们将有一个新的隐藏状态Attention模型,我们也会用一个新的注意力权值集,我们将用Attention模型告诉我们生成第二个词visits时,我们将会放多少注意力在输入的第一个词上面,后面同理。最后直到结束。

2、注意力模型(Attention Model)

我们先记住这些符号的意义:Attention模型表示是双向RNN已经计算了的前向和后向的特征值,Attention模型表示Decoder的第几个隐层状态,Attention模型表示对于第Attention模型个输出我们关注第Attention模型个输入(注意力权重集),Attention模型表示Decoder第几个输出。上面我们看到,注意力模型翻译句子时,只注意到一部分的输入句子,更像人类翻译。如下图所示的注意力模型:

Attention模型

我们假定有一个句子,并使用双向RNN,去计算每个词的特征。这里的这项(上图编号1所示)就是注意力权重,这里的这项(上图编号2)来自于这里(上图编号3)。于是,当你在Attention模型处生成输出词,你应该花多少注意力在第Attention模型个输入词上面,这是生成输出的其中一步,其他的类似。
底层是一个双向RNN,需要处理的序列作为它的输入。改该网络中每一个时间步的**Attention模型中,都包含前向传播和后向传播的**:
Attention模型
顶层是一个“多对多”结构的RNN,第Attention模型步该网络前一个时间步的**Attention模型、输出Attention模型以及底层的BRNN中多个时间步的**Attention模型作为输入。对第Attention模型个时间步的输入Attention模型有:
Attention模型
其中参数Attention模型意味着顶层RNN中,第Attention模型个时间步输出Attention模型中,把多少注意力放在了底层BRNN的第Attention模型个时间步的**Attention模型上。它总有:
Attention模型
为了确保参数Attention模型满足上式,常用Softmax单元来计算顶层RNN的第Attention模型个时间步对底层BRNN的第Attention模型个时间步的**的注意力:
Attention模型
其中的Attention模型由顶层RNN的**Attention模型和底层BRNN的几乎Attention模型一起输入一个隐层中得到的。

Attention模型

在无法获知Attention模型Attention模型Attention模型之间的关系的时候,就用上图所示的神经网络进行学习。