摒弃encoder-decoder结构,Pervasive Attention模型与Keras实现

1.引言

    现有的主流机器翻译模型,基本都是基于encoder-decoder的结构,其思想就是对于输入句子序列,通过RNN先进行编码(encoder),转化为一个上下文向量context vector,然后利用另一个RNN对上下文向量context vector进行解码(decoder)。其结构如下:

    之后,又有学者在该结构的基础上,做了各种改进,其中主要有两方面的改进,一种是添加了注意力机制,其思想就是在decoder的每一步输出时,不再仅仅关注encoder最后的输出状态,而是综合encoder每一个时间步的输出状态,并对其进行加权求和,从而使得在decoder的每一个时间步输出时,可以对输入句子序列中的个别词汇有所侧重,进而提高模型的准确率,另一种改进是替换encoder和decoder的RNN模型,比如Facebook提出的Fairseq模型,该模型在encoder和decoder都采用卷积神经网络模型,以及Googlet提出的Transformer模型,该模型在encoder和decoder都采用attention,这两种模型的出发点都是为了解决RNN没法并行计算的缺点,因此,在训练速度上得到了很大的提升。但是,这些改进其实都没有脱离encoder-decoder的结构。

    因此,《Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-Sequence Prediction》一文作者提出了一种新的结构,不再使用encoder-decoder的结构,而是采用一种基于2D卷积神经网络(2D CNN)的结构,其思想就是将输入序列和目标序列embedding之后的矩阵进行拼接,转化为一个3D的矩阵,然后直接使用卷积网络进行卷积操作,其卷积网络的结构采用的是DenseNet的结构,并且在进行卷积时对卷积核进行遮掩,以防止在卷积时后续信息的流入,拼接后的feature map如下图所示:

2.相关符号定义

    论文中涉及到的相关符号及其定义分别如下:

  • (s,t)(s,t):输入序列和目标序列句子对
  • \left | s \right |:输入序列长度
  • \left | t \right |:目标序列长度
  • d_s:输入序列embedding的维度
  • d_t:目标序列embedding的维度
  • \left \{ x_1,x_2,...,x_\left | s \right | \right \}:已经经过embedding的输入序列矩阵
  • \left \{ y_1,y_2,...,y_\left | t \right | \right \}:已经经过embedding的目标序列矩阵
  • g:growth rate,与DenseNet中的growth rate含义相同,是每个dense layer的输出维度

3. pervasive attention模型介绍

    pervasive attention模型的结构主要还是借鉴DenseNet的结构,在结构方面其实并没有多新奇,其主要特别的地方是将输入序列和目标序列的数据进行融合,转化为一个3D的矩阵,从而可以避开encoder-decoder的结构,下面对该模型具体展开介绍。

3.1 模型的输入(Input source-target tensor)

   首先是模型的输入,记\left \{ x_1,x_2,...,x_\left | s \right | \right \}\left \{ y_1,y_2,...,y_\left | t \right | \right \}分别表示输入序列和目标序列经过embedding后的二维矩阵,其中\left | s \right |表示输入序列的长度,\left | t \right |表示目标序列的长度,d_s表示输入序列embedding后的维度,d_t表示目标序列embedding后的维度。接着,将这两个矩阵进行拼接,得到一个三维的矩阵,记为X\in \mathbb{R}^\left | t \right |\times \left | s \right |\times f_0,其中f_0=d_t+d_sX_i_j=[y_i, x_j]。这里有一个地方需要注意的是,作者在论文中是将数据转化为

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值