1、Seq2seq
Seq2seq由两个RNN/LSTM构成,其中encoder RNN产生原始sentence的encoding,decoder RNN将在encoding基础上产生目标sentence。如下图将法语翻译成英语,注意这个过程时两个词袋embedding的,一个是法语的,一个是英语的。
使用backpropagation进行参数最优化,所以这是一个end-to-end模型。
[2、Attention
可以看到,在seq2seq模型中,我们强制将所有信息集中在单独一个vector中,如上图的黄框所示,因为这是喂给decoder的唯一的信息,那么这样的话,如果encoder的vector没有包含相关信息的话,decoder也就不会翻译正确,这成为information bottleneck,attention就是用来解决这个问题的。核心思想为使用decoder时,直接关联encoder和并关注原始sequence的某一部分。
其中attention output可以理解为是encoder的加权和,这个权重和原始sequence相关,如下图所示。
公式如下:
更加通俗的解释为:
设给定一组values,单独的向量query,attention就是基于query,计算values的加权和。在上面说的seq2seq中,decoder hidden state就称为query,encoder称为values。
3、后记
参考来自:
https://www.youtube.com/watch?v=XXtpJxZBa2c&list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z&index=9&t=0s
https://zhuanlan.zhihu.com/p/28054589
tensorflow中RNN的实现详述 : //zhuanlan.zhihu.com/p/28196873