神经网络之Seq2Seq模型(二)

1.seq2seq模型是什么?

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

2.Encoder–Decoder 结构又是怎样的?

Encoder–Decoder 结构是由一个或多个 RNN (或LTSM或GRU)组成,Encoder对输入进行编码,然后将编码后的输出传到Decoder解码。结构如下图所示:

                        神经网络之Seq2Seq模型(二)

(1)Encoder(编码器)

每个时刻输入一个词,隐藏层状态根据公式ht=f(ht−1,xt)改变。其中**函数f可以是sigmod, tanh, ReLU, sotfplus, LSTM等;

读完序列的每一个词之后,会得到一个固定长度向量c=tanh(VhN)

(2)Decoder(解码器)

t时刻隐藏层就会根据下面的公式而改变

                                           神经网络之Seq2Seq模型(二)

y(t)是由 y(t-1) ,h(t) c 决定的

                      神经网络之Seq2Seq模型(二)

3. Seq2Seq模型的流程

(1)接收输入/源句子,通过Embedding转成词向量;

(2)通过Encoder将输入编码为上下文向量,传给Decoder;

(3) 通过Decoder对编码过的向量解码生成预测输出/目标句子;

    确定Encoder和Decoder每一层的数目、隐藏层和单元维度相同;

    在forward方法中创建一个输出张量,它将存储所有的预测;

    解码器的第一个输入是序列的开始(<sos>)令牌。由于我们的trg张量已经附加了<sos>标记。

(4) 将输入、先前隐藏状态和前一个单元状态传递给Decoder

(5)接收预测,来自Decoder下一个隐藏状态和下一个单元状态

(6)将预测放到预测张量中,返回预测结果