Seq2Seq学习

什么是Seq2Seq

  • Seq2Seq是一种能够根据给定的序列,生成另一个序列的一种方法。
  • Seq2Seq主要基于RNN结构,有编码器和解码器两部分。
    在这里插入图片描述
  • 主要应用场景:机器翻译、对话系统、图片描述等。

Seq2Seq原理

在这里插入图片描述

  • 编码部分(Encoder)
    • 对输入的词/其他 X 1 , X 2 , X 3 . . . , X T X_1,X_2,X_3...,X_T X1,X2,X3...,XT
      首先对他们进行embedding,得到对应的词向量
    • 将这些词向量输入到Cell中,其中一种Cell为GRUcell(LSTMCell 的一个变种),如下图:
      在这里插入图片描述
    • 故第二个GRUcell的输入为第一个GRUcell输出的隐层向量和第二个词的词向量,同理,最后一个cell的输入为倒数第二个cell的隐层输出和最后一个词的词向量,而每一个cell的输出的隐层向量都有之前一个cell有关,所以最后一个cell输出的结果,也就是编码(encoding)后的向量C,包含了前面所有输入词的信息。
  • 解码部分(Decoder)
    • 对于一个模型的训练来说,必不可少的两个条件是训练样本和目标函数,其中训练样本就是seq_X to seq_Y,而目标函数应该为在输入已知的情况下,输出为正确的概率。训练的目的就是通过改变模型参数使这个概率越来越大。即: arg ⁡ max ⁡ θ P ( Y ∣ X ) \mathop{\arg\max}_{\theta} P(Y|X) argmaxθP(YX)
    • 如图所示,在解码部分,除第一个cell以外,每一个cell的输入都有三部分:上一个cell输出的隐层,上一个cell的输出,以及编码最终的输出向量C。即: h t = f ( h t − 1 , y t − 1 , c ) h_t = f(h_{t-1},y_{t-1},c) ht=f(ht1,yt1,c)
    • 每次输出的词的概率: P ( y t ∣ y t − 1 , y t − 2 , . . . , y 1 , c ) = g ( h t , y t − 1 , c ) P(y_t|y_{t-1},y_{t-2},...,y_1,c)=g(h_t,y_{t-1},c) P(ytyt1,yt2,...,y1,c)=g(ht,yt1,c)
    • 故对一个样本(seq_xi和seq_yi)来说,输出正确的概率是: P ( Y i ∣ X i ) = ∏ t = 1 n P ( y t ∣ y t − 1 , y t − 2 , . . . , y 1 , c ) = ∏ t = 1 n g ( h t , y t − 1 , c ) P(Y_i|X_i)=\prod_{t=1}^nP(y_t|y_{t-1},y_{t-2},...,y_1,c)=\prod_{t=1}^ng(h_t,y_{t-1},c) P(YiXi)=t=1nP(ytyt1,yt2,...,y1,c)=t=1ng(ht,yt1,c)这里n指输出字的个数
    • 那么对整个训练集来说,目标函数变为: P ( Y ∣ X ) = ∏ i = 1 N P ( Y i ∣ X i ) P(Y|X)=\prod_{i=1}^NP(Y_i|X_i) P(YX)=i=1NP(YiXi)为防止个别概率较小,加入log P ( Y ∣ X ) = l o g ∏ i = 1 N P ( Y i ∣ X i ) P(Y|X)=log\prod_{i=1}^NP(Y_i|X_i) P(YX)=logi=1NP(YiXi)也就是 P ( Y ∣ X ) = ∑ i = 1 N l o g ( P ( Y i ∣ X i ) ) P(Y|X)=\sum_{i=1}^{N}log(P(Y_i|X_i)) P(YX)=i=1Nlog(P(YiXi))
    • 那么求解问题就变为: m a x θ 1 N P ( Y ∣ X ) = m a x θ 1 N ∑ i = 1 N l o g ( P ( Y i ∣ X i ) ) \mathop{max}_{\theta} \frac{1}{N}P(Y|X)=\mathop{max}_{\theta} \frac{1}{N}\sum_{i=1}^{N}log(P(Y_i|X_i)) maxθN1P(YX)=maxθN1i=1Nlog(P(YiXi))
    • 习惯目标函数为求最小值,故: m i n θ − 1 N ∑ i = 1 N l o g ( P ( Y i ∣ X i ) ) \mathop{min}_{\theta}- \frac{1}{N}\sum_{i=1}^{N}log(P(Y_i|X_i)) minθN1i=1Nlog(P(YiXi))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值