基于多层卷积神经网络的Seq2Seq模型

本文作者刘屹,本文主要讲述了基于多层卷积神经网络的Seq2Seq模型。

ConvNet+Seq2Seq端对端模型架构,摘自《Convolutional Sequence to Sequence Learning》

目前,Seq2Seq是文本生成相关应用地主流模型。Seq2Seq模型在Encoder端和Decoder端推荐使用基于RNN的GRU或LSTM“记住”文本序列的历史信息,并推荐使用attention技术。然而,RNN的时序依赖性问题,在模型训练阶段无法并行化,有可能导致训练时间过长。论文《Convolutional Sequence to Sequence Learning》研究结果表明,基于多层卷积神经网络(CNN)在Seq2Seq模型的优化和应用已经取得了较大的技术突破,CNN支持文本处理并行化,论文实验表明,相比RNN能大幅地缩短训练时间,并在翻译系统主流测试集中取得了state-of-the-art的性能结果。

01

动机

传统的seq2seq模型是基于RNN来实现的。论文《Convolutional Sequence to Sequence Learning》,简称ConvS2S,提出使用多层卷积网络客服RNN主要存在地两大缺陷:

(1)RNN下一个时刻的输出要依赖于上一个时刻的输出,从而导致无法在整个序列上进行并行处理,这会引起训练时间过长的问题。针对这一问题,ConvS2S的做法是将CNN引入到Seq2Seq中,这样既可以处理序列变长的问题,又可以实现在序列不同位置的并行计算。

(2)RNN的另一个缺陷在于,对于一个长度为N的序列,要建立long-range dependencies,需要经过O(N)次运算,而对于卷积核宽度为k的多层CNN来说,理论上只需要O(N/k)次并行运算。

02

模型简析

(1)Embedding层:不仅用分布式词向量w,表征每个词的特征,还加入了位置向量p表示词所在的位置信息,从而对CNN的卷积和,加入位置感。因此,Encoder或Decoder端的输入token向量表示为

e=(w1+p1,…,wm+pm)

(2)Block层:block是Encoder/Decoder的基本组成单位,包括一个卷积操作和门线性单元(Gated linear units,GLU,细节具体可参考facebook相关论文)。当对 a层 block 进行堆叠时,若卷积窗口大小为k,则每个输出要依赖于a(k-1)+1个输入。卷积核计算公式,参考特征向量h的生成,接着将每个卷积窗内的输入映射为一个大小为Y=[A,B]的向量(A,B的维度均为d)。在Y上,该模型使用GLU进行了处理,得到了对输入句的最终表示:

(3)Multi-step Attention:在解码器decoder的每一层,都单独使用了attention机制:解码器的attention计算公式参考d,a,c的计算公式,最后,在decoder的第L层(最后一层)得到特征向量h,作为输出词概率softmax公式的输入;

03

主要实验结果

— End —

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180704G1FM3200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券