使用注意力机制的seq2seq
动机:机器翻译中,每个生成的词可能相关于源句子中不同的词,也就是说,我们希望翻译后的句子中,每一个词元的位置对应源句子的位置。
加入注意力
编码器对每次词的输出作为key和value(一样的) ,解码器RNN对上一个词的输出是query,注意力的输出和下一个词的词嵌入合并进入RNN
使用注意力机制,使得与上一个输出相近的权重更大,提高准确性。
更详细的说,就是将上下文变量根据隐状态进行加权求和了:
c t ′ = ∑ t = 1 T α ( s t ′ − 1 , h t ) h t c_{t'}=\sum ^{T}_{t=1} \alpha(s_{t'-1},h_t)h_t ct′=t=1∑Tα(st′−1,ht)ht
其中,时间步 t ′ − 1 t'-1 t′−1的解码器隐状态