今天继续学习了注意力机制,尤其学了添加了attention的seq2seq模型,还学习了自注意力机制,理解了attention机制的精髓
使用注意力机制的seq2seq
之前提到使用两个循环神经网络的编码器解码器结构实现了seq2seq的学习,实现 机器翻译的功能
循环神经网络编码器将可变序列转换为固定形状的上下文变量,然后循环神经网络解码器根据生成的词元和上下文变量按词元生成输出序列词元
然而不是所有的输入词元 都对 解码某个词元 都有用,在每个解码步骤中仍使用编码相同的上下文变量
在此时attention的加入就能改变这一点,科威助力模型Bahdanau,在预测词元时,如果不是所有输入词元都相关,模型将仅对齐输入序列中与当前预测相关的部分,这是通过将上下文变量视为注意力集中的输出来实现的
模型图:
上图就是一个带此结构的编码解码器模型 图中,sources经过embedding后进入RNN形成 编码器,编码器对于每次词的输出作为key和 value(它们是同样的) 解码器RNN对上一个词的输出是query attention的输出与下一个词的词嵌入合并后进入下一次的RNN
自注意力机制
所谓自注意力就是KVQ都是来自同一个输入所得