seq2seq + attention 详解

seq2seq + attention 详解

作者:xy_free 时间:2018.05.21

1. seq2seq模型

seq2seq模型最早可追溯到2014年的两篇paper [1, 2],主要用于机器翻译任务(MT)。seq2seq本质上是一种encoder-decoder框架,以翻译任务中的“英译汉”为例,模型首先使用编码器对英文进行编码,得到英文的向量化表示S,然后使用解码器对S进行解码,得到对应的中文。由于encoder与decoder两端处理的都是序列数据,所以被称为sequence-to-sequence,简称seq2seq。另外,目前应用最多的编/解码器是RNN(LSTM,GRU),但编/解码器并不限于RNN,如也有人拿MLP作为编码器。
paper[1, 2]的主要结构如下图:
这里写图片描述 这里写图片描述

2. attention模型

attention模型最早出现于cv领域,而首次用于解决nlp问题是在2014年[3],seq2seq+attention 应用于机器翻译任务。以英译汉为例,当解码器对英文进行解码时,是一个词一个词生成的,而所生成的每个词对应的英文部分应该是不同,换句话说就是,解码器解码时不同step所分配的注意力是不同的。 再举一个例子,如看图说话(用一句话描述一幅图),所生成的词语应该对应图中的不同部分,即解码器在解码时,应该给图中“合适”的部位,分配更多的注意力(权重)。
paper[3]的主要结构如下图:
这里写图片描述

红圈标识的是编码器,其中h代表源文本的语义表示;紫圈标识的解码器,其中s代表目标文本的序列状态。c表示注意力向量,用来在解码时,控制源文本不同位置的attention分配

3. seq2seq + attention

以paper[3] 为例,对seq2seq + attention 的计算过程,进行详细说明,见上图(Translation: Attention Mechanism)
1. 使用 Bi-GRU 作为编码器,得到源文本的向量表示 ht h t

ht=fe(xt,ht1) h t = f e ( x t , h t − 1 ) 详解如下:

  • htf=f(ht1f,xt) h f t = f ( h f t − 1 , x t )
  • htb=f(ht+1b,xt) h b t = f ( h b t + 1 , x t )
  • ht=[htf,htb] h t = [ h f t , h b t ]
  • 其中, fe f e 表示Bi-GRU, hf h f 表示正向GRU的输出, hb h b 表示反向GRU的输出,[]表示串联

2.对 ht h t 进行解码,获得目标序列
模型所要生成的目标是个“词序列”,处理方式是每次生成一个词,迭代进行
p(yt|y<t,x)=f(yt1,st,ct) p ( y t | y < t , x ) = f ( y t − 1 , s t , c t )
其中f是 维度映射 + maxout,maxout是一种激活函数,维度映射是把所生成的向量转化为词表大小

  • yt1 y t −
  • 15
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值