机器翻译之Facebook的CNN与Google的Attention

机器翻译的常用架构是seq2seq,可是seq2seq中的核心模型RNN是序列模型,后面的计算依赖于前面的计算,如何并行提高效率很是苦恼。最近,Facebook和Google的研究人员分别尝试用CNN与Attention代替seq2seq进行机器翻译,提高了训练效率,结构与思想也很予人启迪。

传统的seq2seq

传统seq2seq训练结构如上图,采用两个RNN,分别作为encoder和decoder。seq2seq的一些改进如下:

  • decoder中增加更多的信息:decoder中hth^t除了依赖ht−1,xth_{t-1}, x^t,还依赖于enc_state
  • 使用attention机制。

facebook的cnn

结构

其结构如上面2图所示,具体地:

  1. 输入序列大小为【m】
  2. 对输入序列做position embedding,得到【m,e_m】
  3. 对position embedding做卷积,得到【2m,e_m】
  4. 卷积后通过Gated Linear Units,得到【m,e_m】
  5. 重复3-4,stack起来,得到【m,e_m】
  6. 对输出序列重复2-5,得到【n,e_n】
  7. 对5,6中的数据做点乘,得到中间的矩阵【m,n】,代表了attention的分数信息
  8. 上文信息,通过卷积前(细节信息)和卷积后(主旨信息)的信息和获得【m,e_m】。
  9. 有了上文信息【m,e_m】和attention【m,n】信息,便可以获得输出序列中每个词对应的上文特征【n,e_m】
  10. 将输出序列的上文特征【n,e_m】与输出序列的卷积特征【n,e_n】组合,加入全连接,加入softmax层即可构建损失函数进行训练。

特点

position embedding

position embedding,在词向量中潜入了位置信息。

卷积的引入

首先,简单描述下文中的卷积,假设原数据大小X∈ℝk∗dX \in \mathbb{R}^{k*d}(k个数据,embeding的维度是d),每个卷积核参数化W∈ℝ2d∗kdW \in \mathbb{R}^{2d*kd},卷积后得到的结果是ℝ2d\mathbb{R}^{2d}。padding合适的化,最后得到ℝ2k∗d\mathbb{R}^{2k*d}。

卷积的引入,有以下几个优点:

  • 使计算可以做并行化
  • 卷积层可以stack起来,不同的层的可视域不同,底层的是细节信息,高层的是全局信息。
  • 效率高,对序列长度n的序列建模,rnn的操作是O(n)O(n),CNN的操作是O(log(n)O(\log(n)。

GLU控制信息的流动

GLU的公式如下:

v([A,B])=A∘σ(B)

v([A, B]) = A \circ \sigma(B)

卷积出来的数据【2m,e_m】对应【A,B】,通过GLU便恢复了原数据形状【m,e_m】。同时GLU中的A控制信息,B相当于开关控制着有效信息的流动。

attention

attention的分数矩阵,是输入、输出序列通过多个卷积stack起来获得的,每个词的可视域通过CNN自然地扩增了。

attention的上文信息,通过低层的CNN和高层的CNN组合获得, 反映了词的细节信息和全局主旨信息。

google的attention

结构

特点

K,V,Q的思维架构

本文提出了一种key、value、pair的计算attention的架构,结构与思路如上图所示。首先,通过Query和Key矩阵计算每个quiry对应的key的匹配程度,然后根据匹配程度将Value矩阵中的元素组合起来。

multi-head attention

通过一个全连接层,可以将K、V、Q映射到维度较低的子空间,然后在不同的子空间进行attention的计算。这样做有如下优点:

  • 子空间维度较低,不增加计算量
  • 有利于并行化
  • 不同的子空间捕获不同的特征

attention的多种应用

结构中共出现了3出attention:

  • encoder-decoder attention,K、V来自encoder,Q来自decoder,作用与传统的seq2seq相似,decoder根据不同的位置捕获encoder不同位置的信息。
  • encoder self-attention。K、V、Q来自同一位置,encoder的每一个位置都捕获所有位置的信息。
  • decoder self-attention,K、V、Q来自同一位置,decoder的每一个位置都捕获该位置前所有位置的信息(通过mask实现)。

参考资料

  1. Convolutional Sequence to Sequence Learning
  2. Attention Is All You Need

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏磐创AI技术团队的专栏

一个完整的机器学习项目在Python中的演练(二)

1477
来自专栏AI研习社

用 Keras 搭建 GAN:图像去模糊中的应用(附代码)

2014年 Ian Goodfellow 提出了生成对抗网络(GAN)。这篇文章主要介绍在Keras中搭建GAN实现图像去模糊。所有的Keras代码可点击这里。

812
来自专栏华章科技

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

目前机器学习是最抢手的技能之一。如果你是一名数据科学家,那就需要对机器学习很擅长,而不只是三脚猫的功夫。作为 DataFest 2017 的一部分,Analyt...

532
来自专栏机器学习与自然语言处理

Stanford机器学习笔记-3.Bayesian statistics and Regularization

3. Bayesian statistics and Regularization Content   3. Bayesian statistics and R...

36217
来自专栏AI研习社

如何用 Caffe 生成对抗样本?这篇文章告诉你一个更高效的算法

Fast Gradient Sign方法 先回顾一下《杂谈CNN:如何通过优化求解输入图像》中通过加噪音生成对抗样本的方法,出自Christian Szeg...

2913
来自专栏专知

【干货】PyTorch实例:用ResNet进行交通标志分类

【导读】本文是机器学习工程师Pavel Surmenok撰写的一篇技术博客,用Pytorch实现ResNet网络,并用德国交通标志识别基准数据集进行实验。文中分...

4988
来自专栏机器之心

教程 | 从头开始:用Python实现带随机梯度下降的Logistic回归

选自machine learning mastery 机器之心编译 参与:Jane W、Panda logistic 回归是一种著名的二元分类问题的线性分类算...

50610
来自专栏机器之心

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

选自 Analytics Vidhya 作者:ANKIT GUPTA 机器之心编译 参与:机器之心编辑部 目前机器学习是最抢手的技能之一。如果你是一名数据科学...

3499
来自专栏机器学习算法与Python学习

机器学习(3) -- 贝叶斯及正则化

Content 3. Bayesian statistics and Regularization.     3.1 Underfitting and ov...

2849
来自专栏大数据挖掘DT机器学习

深度学习中训练参数的调节技巧

1、学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间。步长的选择比较麻烦。步长越小,越容易得到局部最优化(到了比较大的山谷,就出不去了),而大了...

4668

扫码关注云+社区