The Illustrated Attention
Attention
Seq2Seq 是一种由Encoder和Decoder组成的结构,可以将输入转化成一种中间形态并在Decoder输出;
而Attention则是解决方案,经典的是Bahdanau et al., 2014 and Luong et al., 2015.Attention可以使模型关注于输入序列中的需要关注的地方,即相关性高的部分。
以更加抽象而高层次的角度去看Attention机制,在以下两个方面,Attention和Seq2Seq不同:
Encoder传递了更多的数据给Decoder;现在不是将最后一个隐藏状态传给Decoder而是所有的隐藏状态。
Attention的Decoder在产生结果之前多进行了额外的步骤:
- 查看它接收道德所有Encoder的隐藏状态(向量)
- 给每一个隐藏状态一个得分
- 通过Softmax计算每一个状态的权重,并进行乘积运算
可以看出主要区别在于Decoder的部分;
具体在Decoder的运行步骤如下:
- 得到Encoder的输出,初始化Decoder的隐藏状态
- RNN处理输入,产生输出和隐藏变量H,其中输出被丢弃
- Attention Step:
- 使用Encoder的隐藏状态和刚产生的隐藏变量H计算Context Vector
- 将C和H连接
- 通过一个前馈网络传输
- 输出的结果就是这个时间步骤的输出单词
- Repeat
该模型不仅仅是将输出中的第一个单词与输入中的第一个单词对齐,而是在训练阶段学习到如何将两种语言的单词对应(翻译过程)。
得到以上结果。