大话Seq2Seq模型

 Seq2Seq模型虽然具有局限性,但是作为入门级别的Nlper,我们应该深入的了解他,如下图

大话Seq2Seq模型

这里encoder和decoder部分我们采用的是传统的RNN,这并不影响我们理解这个模型,你也可以把他看成LSTM或者GRU。

以我爱计算机为例进行讲解,开始时我们把“我爱计算机”输入到encoder网络中,这里hi为隐藏状态,oi为RNN的输出,这里一定要注意的是RNN不能进行并行处理,虽然我们是一次性的把文字输入到网络中,但是在处理的时候RNN是把之前的一个文字处理完成之后再处理后面的文字。encoder中的RNN处理完成后会生成语义变量C,这里的C有多种,一种是RNN序列最后一个状态,也就是h5,其次也可以是o1,o2,o3,o4,o5的合并,这里最常用的是最后一个单元的状态作为整个句子的语义C,有了C之后就可以在decoder中进行解码操作,同样这里也采用RNN结构,与encoder不同的是这里每一个单元的输出都是下一个单元的部分输入,这里讲得很含蓄,但是事实是我们在decoder中的输入并不是i love computer,而是对应的<start> i love computer<end>,我们对应的预测值是i love computer<end>。这个C也有两种不同的用法,第一种是作为第一时刻的隐状态,也就是图中那样,还有就是作为每一时刻的输入,也就是C对于每一个单词的预测都要有贡献。

总结:

传统Seq2Seq模型有很大的不足,C绝大部分取决于后面的几个单词,会把最前面单词的信息给掩盖掉,而且对于decoder中的预测默认每一个单词贡献是相同的,但是事实却并非如此,因此有了后来的改进模型Seq2Seq+attention。

下节再讲Seq2Seq+attention,欢迎加Q互相讨论:1121974909