【Natural Language Processing】seq2seq学习笔记

         seq2seq可以看成是一个翻译模型,即通过一个sequence转换为另一个sequence,也可以看做是对联的生成,即通过上联来产生下联,其主要是使用两个RNN(其实是LSTM,具体可看:LSTM(Long Short-Term Memory)学习),一个进行Encoder,另一个进行Decoder,即Encoder-Decoder,其可用在NLG(Nature Language Generation,自然语言生成)和NLU(Nature Language Understanding, 自然语言理解)等方面

一、Encoder-Decoder

        Encoder-Decoder的结构如下图:


        在上图中,输入序列是”ABC”,输出序列是”WXYZ”,其中”<EOS>”是句子结束符,我们通过在时间维度上进行展开Encoder-Decoder模型,如前面所说该模型是由两个RNN组成的:

        ①Encoder,第一个RNN接受输入序列”ABC”进行Encoder,并在读取到<EOS>时终止接受输入,通过这样我们可以得到一个向量来表示输入序列“ABC”的语,具体为:


        其中f是非线性激活函数,ht−1是上一隐节点输出, xt是当前时刻的输入。向量c即为我们想通过Encoder获得的语义向量,通常为RNN中的最后一个隐节点(h,Hidden state)输出值,或者是多个隐节点的加权和,这就是整个Encoder的过程。

        ②Decoder,第二个RNN接受第一个RNN产生的语义向量,通过当前隐状态 ht来预测当前的输出符号 yt ,这里的 ht和yt都与其前一个时刻的隐状态和输出有关,最终目的就是在每个时刻t输出与上一时刻t-1相关的输出词的概率,具体为:


二、Attention Mechanism

        通过上面知道在Encoder-Decoder模型中,对于目标句子Y中每个单词的生成过程如下(其中c为Encoder生成的语义向量):


        可以发现对于目标词汇y,不论生成哪个单词,都是使用Encoder过程生成的语义向量c,即句子X中的单词对生成每一个目标单词的影响力是相同的,显然这是不合理的,Attention Model会对输入序列X的不同单词分配不同的概率,具体如下图:


        这个时候每一个目标词就可以根据不同的语义向量ci来生成了,即:


       c(i)对应输入序列X不同单词的概率分布,其计算公式为:

  

 

        其中n为输入序列的长度,第一行公式中的 hj 是Encoder第j时刻的隐状态,对于第二行的公式中aij是对应的权重, a是一种对齐模型, si−1 是Decoder过程的前一个隐状态的输出,hj 是Decoder过程的当前第j个隐状态。至此,seq2seq完成。

参考:

Sequence to Sequence Learning with Neural Networks

http://x-algo.cn/index.php/2017/01/13/1609/



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值