美文网首页
深度学习笔记一: Seq2seq attention

深度学习笔记一: Seq2seq attention

作者: 堆雪人的小朋友 | 来源:发表于2019-03-08 17:06 被阅读0次

    0 概述

    Seq2seq模型是一种从序列到序列的模型。其他的很多模型是对于每个样本,对应特征矩阵的某一行,所有输入样本都有固定的特征维度。而Seq2seq这种结构最重要的特点在于输入和输出序列的长度是可变的。

    1 发展

    几篇论文的贡献

    2 详细内容

            Cho K等人[1]是比较早提出Seq2seq结构的。这种结构分为两部分,Encoder和Decoder。Encoder部分一般是 RNN, GRU, LSTM等结构。对于每个timestamp t,向encoder输入句子中的第一个字/词X1,直到最后一个X_{T} (T是设置的句子max length, 不足的补padding, 多余的截去),输出的T'个字符与T个输入可能不一致。

            Encoder阶段将整个source序列编码成一个固定维度的向量C(也就是RNN最终的隐藏状态h_{T} )。C = f(x_{1} , x_{2}, ..., x_{T}) f就是各种RNN模型。[1]提出了一个效果不输LSTM但效率较高的结构GRU。C中保存了source序列的信息,将其传入Decoder阶段即可,在每次进行decode时,仍然使用RNN神经元进行处理。

    p(y_{t} | y_{1}, y_{2}, ..., y_{t-1}) = g(y_{t-1}, h_{t}, C)

    其中

    h_{t} = f(h_{t-1}, y_{t-1}, C)

    代入其中则得到

    p(y_{t} | y_{1}, y_{2}, ..., y_{t-1}) = g(y_{t-1}, f(y_{t-1}, h_{t-1}, C), C)

    这样也就是不过输入包括前一时刻输出y_{t-1}、前一时刻隐层状态h_{t-1}、输入编码向量C三个向量,也就是解码时同时会考虑前一时刻的输出和source序列两方面的信息。

    论文[1]中按时间展开的Seq2seq结构

    紧接着同一年goole的几位大佬Ilya Sutskever等t提出的Seq2seq模型最大的区别在于其source编码后的向量C直接作为Decoder阶段RNN的初始化state,而不是在每次decode时都作为RNN cell的输入。此外,decode时RNN的输入是目标值,而不是前一时刻的输出。。

     论文[2] 中提出的结构

    现在常用的Seq2seq融合attention机制的主要著作为[3] [4] [5]。

    其中论文[3]引入的是加性attention,论文[4]则是乘性attention,在tensorflow中也集成了这两种结构,分别是tf.contrib.seq2seq.BahdanauAttention和tf.contrib.seq2seq.LuongAttention

    论文[3] 解决了source序列编码成一个固定维度的向量,对于长序列会丢失很多信息这样的问题。作者提出的将encoder阶段的所有隐层状态先保存起来,和后续的decode阶段的前一时刻的状态计算两者之间的相关程度,加权求和得到编码信息c_{i},这个是和前面的C是不一样的。

    论文[3]中提到的含有soft attention的Seq2seq结构

    其中计算c_{i}的步骤如下:

    1. score

    e_{ij} = a(S_{i-1}, h_{j})

    a是计算S_{i-1}h_{j}之间相关程度的函数,这个有很多计算方式。后面再详细说明。

    2. normalization

    \alpha _{ij} = \frac{exp(e_{ij})}{\sum\nolimits_{k=1}^{T_{x}}exp(e_{ik}) }

    3. sum

    c_{i} = \sum_{j=1}^T\alpha _{ij}h_{j}

    这里的attention可以理解成对齐模型,它的作用主要是匹配target和source之间的对应关系,这个从c_{i}的计算公式的第一步可以看到。

    后面就是seq2seq加上各种attention的变种形式。

    有global attention和local attention,见论文[6]。

    global attention model

    global attention其实和soft attention区别不大,主要也就是计算c_{i}的方式有点不同,这里的score函数有三种情况,dot, general, concat。在实验中general这种计算score的方式效果较好。

    global attention中计算score的三种选择

    这里介绍local attention

    local attention的原理图

    attention又分为soft attention和hard attention,这种分类方式的标准是在给注意力分配概率分布的时候给每个单词的概率形式来区分的。soft attention分配的概率是个概率分布,而相对应的hard attention则是非0即1的对齐概率。而local attention则是soft 和 hard 的attention的一个混合方法。一般的操作是先预估一个对齐位置,再在该位置左右各为D的窗口范围内取类似soft attention的概率分布。

    3 参考文献

    [1] Cho K , Van Merrienboer B , Gulcehre C , et al. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. Computer Science, 2014

    [2] Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.

    [3] Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[J]. arXiv preprint arXiv:1409.0473, 2014.

    [4] Jean S, Cho K, Memisevic R, et al. On using very large target vocabulary for neural machine translation[J]. arXiv preprint arXiv:1412.2007, 2014.

    [5] Vinyals O, Le Q. A neural conversational model[J]. arXiv preprint arXiv:1506.05869, 2015.

    [6] Luong M T , Pham H , Manning C D . Effective Approaches to Attention-based Neural Machine Translation[J]. Computer Science, 2015.

    相关文章

      网友评论

          本文标题:深度学习笔记一: Seq2seq attention

          本文链接:https://www.haomeiwen.com/subject/jbaqpqtx.html