Seq2Seq Model(序列到序列模型)

Seq2Seq 是一种循环神经网络的变种,包括编码器 (Encoder) 和解码器 (Decoder) 两部分。Seq2Seq 是自然语言处理中的一种重要模型,可以用于机器翻译、对话系统、自动文摘。

1 Seq2Seq模型结构

我们提到在Seq2Seq的模型中包括了Encoder和Decoder两个部分。在下文中,我们的Encoder和Decoder均使用LSTM模型来进行编码和解码的工作。

 上图所展示的是Seq2Seq的模型结构图。

我们可以看到,我们的Source通过Embedding层后,进入了循环层(这里们是LSTM)。进过多次Encoder的循环层以后,将其输出输入Eecoder中。最后再由Decoder进行一个输出。

1.1 Seq2Seq的模型过程

在上面我们大概讲解了Seq2Seq大致的模型流程图。在1.1部分,我们主要讲一下Seq2Seq模型的运作过程。

以翻译为例。一开始,我们需要将需要翻译的句子放入Encoder中(这里就是Source),随后Sources经历了多层的循环网络以后,会输出最后一层的state(h,c)。而这输出的最后一层的state(h,c)便是Decoder的输入,成为了Decoder的初始的一个状态。

 上图所展示的是Decoder的运行图。

我们可以看到,在Decoder输出的是翻译后的句子。

在训练的过程中,Decoder输出一个是Encoder的输出,一个则是正确的翻译后句子。首先我们会输入一个输入的符号“\t”,将其放到Decoder的LSTM中,得到输出p,随后我们对p以及正确的单词y做CrossEntropy得到loss。有了loss以后便可以进行反向的传播,更新参数。

上图所展示的是Decoder训练的运行图。

同上面的运算类似,第二次我们输入“\tm”,从而得到了对于下一个字符的预测p。再对p和y做CrossEntropy得到loss,有了loss以后便可以进行反向的传播,更新参数。

 而在真正预测的时候,Seq2Seq的模型运行过程会有些许的变化,具体表现在Decoder的输入,并不是训练时的正确句子,还是上一次Decoder输出的结果作为这一次Decoder的输入,并会将Decoder的输出进行记录。

 上图所展示的是Decoder预测的运行图。

从上图我们可以看到,先输入“\t”,得到新的输出状态(h_1,c_1),再得到“m”,随后我们将“m”进行记录。然后将“m”输入Decoder中得到新的输出状态(h_2,c_2),得到“a”,并记录“a”。重复这个过程直到结束为止。

 1.2 Seq2Seq模型的改进

1.在Encoder中将循环网络做成双向循环网络。

2.使用关于词的tokenization

3.多任务学习:训练时可以将翻译句子改成英语句子,做英语翻德语的同时也做英语翻英语的任务,从而使Encoder做的更好,同样也可以做其他的任务。(注意这里是增加Decoder,Encoder不改变)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值