机器翻译之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科技大本营的专栏

入门 | 零基础入门深度学习系列——递归神经网络

为了帮助编程爱好者,从零开始入门,AI100特别精选了韩炳涛所著《零基础入门深度学习》系列文章,以下Enjoy! 作者 | 韩炳涛 无论即将到来的是大数据时代还...

39710
来自专栏FSociety

通过一元线性回归模型理解梯度下降法

关于线性回归相信各位都不会陌生,当我们有一组数据(譬如房价和面积),我们输入到excel,spss等软件,我们很快就会得到一个拟合函数:

673
来自专栏AI科技评论

开发 | 手把手教你用 TensorFlow 实现卷积神经网络(附代码)

AI科技评论按:本文作者徐凯文,原文载于作者个人博客,已获授权。 在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下。首先介绍原理部分。...

3728
来自专栏个人分享

最大期望算法 Expectation Maximization概念

在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中...

932
来自专栏人人都是极客

Peter教你谈情说AI | 07决策树(上)—既能回归又能分类的模型

前面我们讲了线性回归模型和朴素贝叶斯分类模型。前者只能做回归,后者只能做分类。但本文中要讲的决策树模型,却既可以用于回归,又可以用于分类。

823
来自专栏有趣的Python

1- 深度学习之神经网络核心原理与算法-前馈神经网络

前馈神经网络 Feedforward Neural Network 网络结构(一般分两种) Back Propagation Networks - 反向传播网络...

95811
来自专栏菩提树下的杨过

归一化(softmax)、信息熵、交叉熵

机器学习中经常遇到这几个概念,用大白话解释一下: 一、归一化 把几个数量级不同的数据,放在一起比较(或者画在一个数轴上),比如:一条河的长度几千甚至上万km,与...

19110
来自专栏人工智能

机器学习的基础讲解:神经网络

AiTechYun 编辑:yuxiangyu 在之前的文章中,我通过展示学习过程中成本函数和梯度下降的核心作用,阐述了机器学习的工作原理。本文以此为基础,探索神...

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

基于word2vec训练词向量(一)

1.回顾DNN训练词向量 上次说到了通过DNN模型训练词获得词向量,这次来讲解下如何用word2vec训练词获取词向量。 回顾下之前所说的DNN训练词向量的模...

4015
来自专栏深度学习之tensorflow实战篇

R语言 判别分析

#判别分析 用以判别个体所属群体的一种统计方法 判别分析重点是两类群体的判别方法 #主要判别分析方法 有距离判别 贝叶斯判别 费歇判别法 1、关键点: #贝叶斯...

2635

扫码关注云+社区