编码解码with attention model

现有的基于神经网络的机器翻译都是基于一类encoder-decoder方法。encoder将输入映射到一个固定长度的向量(这个向量需要包含输入的所有信息,)然后输出翻译。这篇论文提出这个固定长度的向量是这种机器翻译模型的瓶颈,提出一个新方法允许模型在预测目标词的时候聚焦在源序列的某个部分。这种方法和普通的encode-decode方法对比不需要压缩序列的所有信息到中间向量(对于非常长的句子,尤其是训练库中都没有出现过的长句普通encode-decode方法不好使)。

rnn encoder-decoder:

编码器采用rnn加nonlinear function,

解码器就是在给定上下文c和已经预测的词预测下一个词:



对于rnn:



c是上下文,st是rnn的hidden state

还可以使用混合rnn(hybrid rnn),de-convolutional neural network。



learning to align and translate


编码解码with attention model_第1张图片

下面开始讲重点,

我们用一个bidirectional rnn作为编码器,解码器在产生翻译的时候会关注源序列的不同部分。


decoder:




可以看出来跟2式不一样,每一步它的context c 是不一样的。

the context vector ci depends on a sequence of annotations (h1,h2....htx) to which an encoder maps the input sentence .Each annotation hi contains information about the whole input sequence with a strong focus on the parts surrounding the i-th word of the input sequence.

ci的计算方式:




编码解码with attention model_第2张图片

最后这个式子叫alignment model ,eij 表示的是解码器的状态si-1和annotation hj的关系。这个模型我们用一个feedforward network(图中a) 来表示。和其它部分放在一起训练。在这里这个eij不是隐变量。

这个α可以看做当前目标词yi在源序列上的注意力的概率分布。而c就是annotation h的期望。这样就得到了当前词的上下文。

然后把当前词的上下文,加上一个词的输出和上一个词的隐层做为预测当前词的输入。


编码器部分:


上面那部分我们还有个annotation h没有搞定。


编码器使用一个brnn,因为你的h应该不止包含前面还包含后面的信息。


编码解码with attention model_第3张图片

brnn的正向序列的输入的隐层hi,反向输入的隐层h`i.把他们concatenate起来就得到annotation h了。



提出论文:NEURAL M ACHINE T RANSLATION BY J OINTLY L EARNING  TO A LIGN AND T RANSLATE

你可能感兴趣的:(编码解码with attention model)