零基础学nlp【3】 RNN encoder-decoder 与seq2seq

零基础学nlp【3】 RNN encoder-decoder 与seq2seq

论文:Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.
Cho K, Van Merriënboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv preprint arXiv:1406.1078, 2014.


写在前面 :本来自以为通过看网上的博客已经对seq2seq了解的比较清楚了,但是写上一篇博文时发现那篇论文注意力机制引用的RNN-encoder-decoder模型并不是我以为的seq2seq模型,于是决定把这两篇文章都看一下作为对比。

1RNN encoder-decoder

1.1主要内容

  1. 作者在论文中提出了 rnn-encoder-decoder模型,模型如下图所示,即对于输入序列得到一个c作为对之前的信息的总和,之后将c输入到decoder的每一次循环中,用来推测下一次循环的输出值。
    零基础学nlp【3】 RNN encoder-decoder 与seq2seq
    2、作者提出了简化版lstm的GRU模型
    3、作者将rnn-encoder-decoder模型用于对词句的表达。

1.2细节

  1. 对于翻译问题,之前大多采用统计学的方法,而作者在训练网络时忽略了词频对结果带来的影响,为的是让模型更加注重在理解语句,而不是仅仅由于一个词出现概率大就使其容易被输出。即把注意力放在语句规则上,而不是统计数据上。
  2. GRU也是这篇文章提出的,厉害!
  3. 将rnn-encoder-decoder模型用于对词句的表达,结果如下图,从结果看出这个模型可以提取语序和情感的结构。

零基础学nlp【3】 RNN encoder-decoder 与seq2seq

2 seq2seq

2.1主要内容

  1. 本文和上文类似也属于encoder-decoder框架,只是encoder得到的编码C没有重复用在decoder的每一次迭代中。模型如下图所示
    . 零基础学nlp【3】 RNN encoder-decoder 与seq2seq
  2. 通过上述模型利用在机器翻译上发现了几个有趣的现象
  • 模型对句子的主动与被动语态并不敏感,但是对输入词的顺序很敏感
  • 倒序输入句子能提升模型效果,个人理解这像是把一张纸卷起来后又展开来的过程,因此倒序输入,正序输出可以较好的体现这样的过程。
  • 深层的循环神经网络效果较好,本文章使用了5*1000的结构。

3对比

两种结构大致类似,只是C的使用不同,希望看了以后的论文可以发现哪一种在应用中效果更好,被更好的开发使用。

【零基础学nlp,争取每天看一篇文章,大家有建议,或者我理解错的地方请批评指正。希望有人能和我一起学!!!!】