0.参考了
1、https://www.zmonster.me/2016/05/29/sequence_to_sequence_with_keras.html
2、https://www.jianshu.com/p/b2b95f945a98
3、https://www.jianshu.com/p/80436483b13b
1.前言
1、seq2seq和encoder-decoder模型总体思想大致相同,只在细节上稍有差别。seq2seq属于encoder-decoder的一种。
2、seq2seq基于RNN,利用了RNN对时序序列天然的处理能力。
3、输入输出都是不定长的,机器翻译是一个很好的例子。
4、在encoder(编码)部分,将任意长的输入信息,编码成固定长度的向量c中(embedding的过程),decoder部分就是将c解码。
5、seq2seq的encoder和decoder部分都是RNN,其实其他的encoder-decoder模型可以不用RNN换成其他的模型。
2.seq2seq模型结构
第一种

Encoder部分,三种的encoder部分都是相同的。

encoder部分的RNN,输入是x,最终输出一个编码所有信息的上下文向量 c。与一般的RNN区别不大,只是中间的神经元没有输出。

第一种decoder比较简单,将上下文向量c当做是RNN的初始隐藏状态,输入到RNN中,后续只接受上一个神经元的隐藏层状态 h' 而不接收其他的输入 x。
公式:

第二种


第二种Decoder 结构有了自己的初始隐藏层状态 h'0,不再把上下文向量 c 当成是 RNN 的初始隐藏状态,而是当成 RNN 每一个神经元的输入。可以看到在 Decoder 的每一个神经元都拥有相同的输入 c。
公式:

第三种


公式:

网友评论