Seq2Seq

一.概述

  • Seq2Seq是一个Encoder-Deocder结构的模型,输入是一个序列,输出也是一个序列。
  • Encoder将一个可变长度的输入序列变为固定长度的向量,Decoder将这个固定长度的向量解码成可变长度的输出序列。
  • 使用表示输入语句, 代表输出语句,yt代表当前输出词。所有的Seq2Seq模型都是以下目标函数,都是为了优化这个函数:
为了防止数值下溢(p连乘积趋向于0),使用log代替,即

二.改进

Seq2Seq的核心部分是其解码部分,大部分改进基于此:
    • greedy search:基础解码方法
    • beam search:对greedy search的改进
    • attention:它的引入使得解码时,每一步可以有针对地关注与当前有关的编码结果,从而减小了编码器输出表示的学习难度,也更容易学到长期的依赖关系。
    • memory network:从外部获取知识。
    • 其他方法:
      • 堆叠多层RNN的Decoder
      • 增加dropout机制
      • 与Encoder建立残差连接

三.其他以及问题

  • Attention:使得解码时,能够建立长距离依赖,更好地融入encoder的信息,使解码时每一步可以有针对地关注与当前有关的编码结果。
  • 双向RNN:单向RNN中,𝑖只包含了𝑥0𝑥𝑖的信息,𝑎𝑖𝑗丢失了𝑥𝑖后面的信息;而双向RNN中,第𝑖个输入词对应的隐状态包括了𝑖h←i,前者编码了𝑥0𝑥𝑖的信息,后者编码了𝑥𝑖及之后的信息,防止信息丢失;(捕捉上下文双向语义,)
    • 否定在后(I would like to, but I have to go school.)
    • 上文缺失,无法解码当前的位置,就可以使用下文来辅导解码
  • 如何增加多样性?

四.训练

  • Teacher forcing:根据标准答案来decode的方式(减少模型发散,加快收敛速度,但是减少生成的多样性,而且会出现矫枉过正导致不通顺
  • Autoregressive:根据上一步的输出作为下一步输入的decode方式(无法并行)
  • Exposure bias:训练Teacher forcing和测试只能Autoregressive,带来的结果来自于不同的分布,并且在测试时,如果某一步出现错误,那么错误就会一直累积(因为训练时前一个单词总是正确的),正所谓“一步错,步步错”,最终导致生成不正确的文本。
  • Scheduled Sampling
    • 模型在训练过程中的每一个steps,有 [公式] 的概率选择使用 teacher-forcing,有 [公式] 的概率选择使用 Autoregressive。
    • 模型在训练前期, [公式] 应该尽可能的大,这样能够加速收敛;而在快要结束训练的时候, [公式] 尽可能的小,让模型在 Autoregressive 的方案中尽可能的修复自身生成的错误。(这个 [公式] 概率可以随着训练的Steps or Epoch 进行衰减)

五.参考

0