当前位置:   article > 正文

Seq2Seq和Attention机制详解_seq2seq attention

seq2seq attention

一、Seq2Seq简介

seq2seq模型最早可追溯到2014年的两篇paper [1, 2],主要用于机器翻译任务(MT)。
seq2seq 是一个Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
由于encoder与decoder两端处理的都是序列数据,所以被称为sequence-to-sequence,简称seq2seq。另外,目前应用最多的编/解码器是RNN(LSTM,GRU),但编/解码器并不限于RNN,如也有人拿MLP作为编码器。
paper[1, 2]的主要结构如下图:
在这里插入图片描述
Seq2Seq模型对于短文本的翻译来说效果很好,但是其也存在一定的缺点,如果文本稍长一些,就很容易丢失文本的一些信息,为了解决这个问题,Attention应运而生。

二、Seq2Seq with Attention

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

paper[3]的主要结构如下图:
在这里插入图片描述
红圈标识的是编码器,其中h代表源文本的语义表示;紫圈标识的解码器,其中s代表目标文本的序列状态。c表示注意力向量,用来在解码时,控制源文本不同位置的attention分配。
Seq2Seq Attention
公式
(7) p ( y t ∣ y &lt; t , x ) = s o f t m a x ( W s s ^ t ) p(y_t|y_{&lt;t},x)=softmax(W_s\hat s_t) p(yty<t,x)=softmax(Wss^t),计算最后的输出概率。
(以上的步骤是luong在paper[4]里改良的decoder计算方式,paper[3]中在计算中加入了 c t c_t ct})

Attention扩展

luong在paper[4] 提出了一种attention改良方案,将attention划分为了两种形式:global, local.
global方式认为attention应该在所有源文本上进行,而local方式认为attention仅应该在部分源文本上进行。global理念与paper[3]相同,具体计算方式如下图所示:
在这里插入图片描述
其中“concat” 与 paper[3] 中的计算方式相同。
第一种:dot
在这里插入图片描述

输入是encoder的所有hidden states H: 大小为 (hid dim, sequence length) 。decoder在一个时间点上的hidden state, s: 大小为 (hid dim, 1)

第一步:旋转H为(sequence length, hid dim) 与s做点乘得到一个 大小为(sequence length, 1)的分数。

第二步:对分数做softmax得到一个合为1的权重

第三步:将H与第二步得到的权重做点乘得到一个大小为(hid dim, 1)的context vector。

第二种:general
在这里插入图片描述
输入是encoder的所有hidden states H: 大小为 (hid dim1, sequence length) 。decoder在一个时间点上的hidden state, s: 大小为 (hid dim2, 1)。此处两个hidden state的纬度并不一样。

第一步:旋转H为(sequence length, hid dim1) 与 Wa 大小为[ hid dim1, hid dim 2)] 做点乘, 再和s做点乘得到一个 大小为(sequence length, 1)的分数。

第二步:对分数做softmax得到一个合为1的权重。

第三步:将H与第二步得到的权重做点乘得到一个大小为(hid dim, 1)的context vector。

需要注意的地方

  • decoder 端的stst初始化: s 0 = t a n h ( W h b 1 ) s_0=tanh(Wh^1_b) s0=tanh(Whb1), 取encoder的反向RNN的初态的非线性,作为decoder的初态
  • teacher forcing模式与测试时(生成模式)不同,所以训练过程不能完全都用teacher forcing,teacher forcing 与 生成模式应按比例分配
  • beamsearch 只是在测试的时候用到
  • 如果encoder 与 decoder 的序列都很长,显存装不下。可考虑对decoder端进行截断,分步优化(pytorch中 使用 state = state.detach())
  • coding时,尽量别用for循环,会极大降低计算效率

总结

Attention与传统的Seq2Seq模型主要有以下两点不同:

  • encoder提供了更多的数据给到decoder,encoder会把所有的节点的hidden state提供给decoder,而不仅仅只是encoder最后一个节点的hidden state 。
  • decoder并不是直接把所有encoder提供的hidden state作为输入,而是采取一种选择机制,把最符合当前位置的hidden state选出来,具体的步骤如下:
    • 确定哪一个hidden state与当前节点关系最为密切;
    • 计算每一个hidden state的分数值;
    • 对每个分数值做一个softmax的计算,这能让相关性高的hidden state的分数值更大,相关性低的hidden state的分数值更低。

计算细节汇总如下:
p ( y t ∣ y &lt; t , x ) = s o f t m a x ( W s s ^ t   ) p(y_t|y&lt;t,x)=softmax(W_s\hat s_t~) p(yty<t,x)=softmax(Wss^t )
s ^ t   = t a n h ( W c [ c t ; s t ] ) \hat s_t~=tanh(W_c[c_t;s_t]) s^t =tanh(Wc[ct;st])
s t = f d ( y t − 1 , s t − 1 ) s_t=f_d(y_{t−1},s_{t−1}) st=fd(yt1,st1)
c t = ∑ α t j h j c_t=∑α_{tj}h_j ct=αtjhj
α i j = s o f t m a x ( e i j ) α_{ij}=softmax(e_{ij}) αij=softmax(eij)
e t j = a ( s t − 1 , h j ) = v a T t a n h ( W s t − 1 + U h j ) e_{tj}=a(s_{t−1},h_j)=v^T_atanh(Ws_{t−1}+Uh_j) etj=a(st1,hj)=vaTtanh(Wst1+Uhj)
h t = f e ( x t , h t − 1 ) h_t=f_e(x_t,h{t−1}) ht=fe(xt,ht1) 注: f e f_e fe 可使用LSTM, GRu, Bi-LSTM 等

参考文献:

[1] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014.
[2] Cho K, Van Merriënboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv, 2014.
[3] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv, 2014. & ICLR, 2015.
[4] Luong M T, Pham H, Manning C D. Effective approaches to attention-based neural machine translation[J]. arXiv, 2015.

参考网址:

真正的完全图解Seq2Seq Attention模型(非常好)
seq2seq + attention 详解(非常好)
Attention机制详解(有动图)
【机器学习】【seq2seq模型与attention机制,Beam Search】
【论文笔记】Effective Approaches to Attention-based Neural Machine Translation

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号