Seq2Seq Attention模型

首先强调一下图文来源,真正的完全图解Seq2Seq Attention模型。本人目前用到此模型,发现该知乎作者的文章写得通俗易懂,于是整理作为自己的笔记。如果小伙伴对模型中各种隐层状态感到不解,请看我之前的一篇博文,RNN、LSTM神经网络输入输出究竟是怎样的?

Start

seq2seq 是一个Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。–简书

大框架如下:
Seq2Seq Attention模型_第1张图片

详细图解及公式
(1)
Seq2Seq Attention模型_第2张图片
注意:此处encoder中的LSTM默认只有一层隐藏层。
在这里插入图片描述
红框中的就是output,即每个时刻最后一层隐藏层的状态,可以理解为融合了上下文信息的word embedding。黄框中的是最后一个时刻的全部(当前为一层)隐藏层的状态,可以传入到其他LSTM中。不理解的去看here里的最后一张图。

(2)
Seq2Seq Attention模型_第3张图片
NB:decoder最开始的输入为句首的标志、原始context vector(为0)、以及从encoder最后一个hidden state: h8。
在这里插入图片描述
得到当前时刻的hidden state,然后开始attention了。
(3)
Seq2Seq Attention模型_第4张图片
当前时刻Decoder的hidden state与Encoder的output作为输入,放入Attention模块开始计算一个context vector。
Seq2Seq Attention模型_第5张图片
(4)
Seq2Seq Attention模型_第6张图片
接下来将context vector 与decoder 的最后一个隐藏层的状态串起来作为下一时刻的输入。在这里插入图片描述

(5)最后经过一系列非线性转换以及softmax计算得到概率分布。

----- end --------

其实经过一番图解后发现并不难,之前一直不理解是没有搞懂output与hidden state 的区别,区分开后,理解起来还是很容易的。

你可能感兴趣的:(Models)