seq2seq和attention原理详解

1、Seq2seq

Seq2seq由两个RNN/LSTM构成,其中encoder RNN产生原始sentence的encoding,decoder RNN将在encoding基础上产生目标sentence。如下图将法语翻译成英语,注意这个过程时两个词袋embedding的,一个是法语的,一个是英语的。

image.png

使用backpropagation进行参数最优化,所以这是一个end-to-end模型。

[
image.png

2、Attention

可以看到,在seq2seq模型中,我们强制将所有信息集中在单独一个vector中,如上图的黄框所示,因为这是喂给decoder的唯一的信息,那么这样的话,如果encoder的vector没有包含相关信息的话,decoder也就不会翻译正确,这成为information bottleneck,attention就是用来解决这个问题的。核心思想为使用decoder时,直接关联encoder和并关注原始sequence的某一部分。

其中attention output可以理解为是encoder的加权和,这个权重和原始sequence相关,如下图所示。

image.png

公式如下:

image.png

更加通俗的解释为:

image.png

设给定一组values,单独的向量query,attention就是基于query,计算values的加权和。在上面说的seq2seq中,decoder hidden state就称为query,encoder称为values。

3、后记

image.png

参考来自:

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

你可能感兴趣的:(seq2seq和attention原理详解)