1、Seq2Seq Attention 出现解决的问题
上文中写到了Seq2Seq 对应定长编码是信息瓶颈、前边的信息容易被稀释,基于此能再优化吗?能,Seq2Seq + Attention。
2、Seq2Seq Attention 介绍
如图,不同于Seq2Seq模型,右上角多了一块计算,这一块计算的作用就是attention。在Seq2Seq中,左侧的Encoder 传递给右侧的 Decoder 只有最后的隐含状态,但发现了信息会丢失,所以Seq2Seq Attention 中传递的不仅仅是Encoder 最后的隐含状态,还将Encoder 每步生成的隐含状态也传递给了 Decoder 。在传递Encoder 每步生成的隐含状态过程中更进一步做了优化,因为Decoder 每步的输入和Encoder 每步生成的隐含状态是有一定的关系的,比如:此时Decoder 此时的输入和Encoder 的前5个隐含状态关联大,这样的关联关系称作为attention。
所以,基本的步骤是:
1、Encoder 对输入的语料进行编码,最终的隐含状态传递给Decoder 作为初始的隐含状态
2、在当前步的Decoder 生成的隐含状态,和Encoder 的所有的隐含状态做计算,算出attention_weights,将attention_weights 和 Encoder 的所有的隐含状态再做计算,算出的结果称作为context
3、Encoder 下一步接收的输入就为 ,Encoder 下一步输入 加上 context
4、循环往复,直至结束。
具体的数学和公式推导,可以看参考资料↓↓
可以看出,基于attention的seq2seq,去除了定长编码,将信息无损的从Encoder传到了Decoder。但attention 只在Encoder和Decoder间,这种注意力生效了,能不能在Encoder和Decoder过程中也加上attention ?下篇说一说,这样的一种模型。