Convolutional Sequence to Sequence Learning

cnn-seq2seq
  1. 传统的embedding,将词向量空间映射到d维

  2. 编码器+解码器--多层cnn,卷积核的大小k,参数规模为kd * 2d,其中kd为每一次卷积的输入矩阵大小(kd),2d为输出矩阵大小(2d)即两维列向量 [A, B]

  3. 非线性--门控结构 gated linear units(GLM)
    GLM

    其中,sigma是门控函数,操作符是点积

  1. 残差连接


    residual

    每一层(block)之间都是残差连接

  2. 输出
    decoder的最后一层卷积层的最后一个单元输出经过一层fc和softmax得到下一个目标词的概率


    output
  3. multi-step attention

attention接在encoder和decoder之间,其中h是decoder的output,z是最后一层encoder的output(注意这里与rnn不同,不存在state),e是input embedding。最终计算得到权重a,而attention输入用的是encoder输出与原始input embedding之和,输出c表征了上下文的注意力特征,c与h相加,构建了最后的decoder输出h。
如此,在每一个卷积层都会进行 attention 的操作,得到的结果输入到下一层卷积层,这就是多跳注意机制multi-hop attention。这样做的好处是使得模型在得到下一个主意时,能够考虑到之前的已经注意过的词。


RNN 模型的突出优势,是很好地解决了长距离依赖的难题。Facebook 这篇论文之所以轰动,是因为他们使用了 CNN 卷积模型,来取代 RNN 循环模型。不仅精度超越循环模型,而且训练速度提高了 9 倍。

引自paperweekly:
CNN 比 RNN 的训练速度快,这一点容易理解,没有争议。卷积比循环的训练速度快,这是由两个因素造成的必然结果。

卷积可以并行处理,而循环只能按顺序依次处理。在云计算平台上,让多个机器同时并行训练卷积模型,速度当然比串行训练循环模型来得快。

可以用 GPU 芯片来加速卷积模型的训练,而暂时还没有硬件能够加速 RNN 的训练。

有争议之处,在于精度的高下,究竟是取决于 CNN vs RNN 模型的不同,还是取决于解码技术,尤其是解码器的关键技术 attention 的改进?

个人认为,卷积(convolution)的层层抽象,与循环(recurrency)的三重门,其实是异曲同工。虽然手段不同,但是目的都是忽略次要内容,传承重要内容。所以,在精度方面,卷积与循环不会有太大差距。

Facebook translate 与 Google translate 的精度差异,应该来自于 Facebook translate 对于 attention 的改进。

Facebook 研究组,对 attention 做了改进,体现在两点。

  1. Google Translate 的解码器使用的是单层的 LSTM 模型,相应地,attention 也是单层的。Facebook 的解码器使用的是 CNN 模型,是多层的。相应地,Facebook 的 attention 是多跳的(multi-hop)。越是底层的 attention,越聚焦,细节越丰富。越是高层的 attention,视野越开阔,抽象程度越高,越能抓住文章主旨。

  2. Google Translate 使用的 attention,依赖于编码器生成的语义向量,而不依赖于输入的原生态的词向量。而 Facebook 的 attention,对语义向量和原生态词向量兼收并取。语义向量负责把握主旨,保证解码器的输出不偏题。原生态词向量关注措辞,保障解码器的输出用词得当。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容