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

原创 2017年07月03日 16:24:00

这里写图片描述

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

传统的seq2seq

这里写图片描述

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

  • decoder中增加更多的信息:decoder中ht除了依赖ht1,xt,还依赖于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,在词向量中潜入了位置信息。

卷积的引入

首先,简单描述下文中的卷积,假设原数据大小Xkd(k个数据,embeding的维度是d),每个卷积核参数化W2dkd,卷积后得到的结果是2d。padding合适的化,最后得到2kd

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

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

GLU控制信息的流动

GLU的公式如下:

v([A,B])=Aσ(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

CNN在句子相似性建模的应用续--基于attention的多角度CNN模型

今天我们来介绍一下“UMD-TTIC-UW at SemEval-2016 Task 1: Attention-Based Multi-Perspective Convolutional Neura...
  • liuchonge
  • liuchonge
  • 2017年03月24日 14:17
  • 2487

ABCNN基于注意力的卷积神经网络用于句子建模--模型介绍篇

本文是Wenpeng Yin写的论文“ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs”的...
  • liuchonge
  • liuchonge
  • 2017年04月07日 19:51
  • 3365

自然语言处理中的Attention Model:是什么及为什么

要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有...
  • malefactor
  • malefactor
  • 2016年01月20日 18:26
  • 64835

论文阅读 - 《Relation Classification via Multi-Level Attention CNNs》

作者:xg123321123出处:http://blog.csdn.net/xg123321123/article/details/553163257声明:版权所有,转载请联系作者并注明出处1 问题定...
  • xg123321123
  • xg123321123
  • 2016年11月14日 19:46
  • 2266

机器翻译中的深度学习技术:CNN,Seq2Seq,SGAN,Dual Learning

机器翻译是深度学习技术与NLP结合使用最活跃的,最充满希望的一个方向。从最初完全基于靠人编纂的规则的机器翻译方法,到后来基于统计的SMT方法,再到现在神经机器翻译NMT,机器翻译技术在过去60多年的时...
  • lqfarmer
  • lqfarmer
  • 2017年04月20日 22:23
  • 3788

深度学习笔记——Attention Model(注意力模型)学习总结

Attention Model(注意力模型)学习总结,包括soft Attention Model,Global Attention Model和Local Attention Model,静态AM,...
  • mpk_no1
  • mpk_no1
  • 2017年08月06日 21:49
  • 12795

对Attention is all you need 的理解

对谷歌Attention is all you need 的理解。
  • mijiaoxiaosan
  • mijiaoxiaosan
  • 2017年06月14日 19:24
  • 8530

一种通过self-attention机制生成多维度aspect的句向量模型

这篇博客主要借鉴了IBM沃森实验室的2017年ICLR会议的论文《A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING》。根据self-attention机制生...
  • guoyuhaoaaa
  • guoyuhaoaaa
  • 2017年12月03日 15:14
  • 490

Attention Is All You Need

一种只基于attention机制的机器翻译
  • chazhongxinbitc
  • chazhongxinbitc
  • 2017年11月25日 14:55
  • 318

Attention is all you need阅读笔记

每个单元的介绍: 一、add&norm (1).norm(层正则化): 原文:http://blog.csdn.net/zhangjunhit/article/details/53169308 本文...
  • zuanfengxiao
  • zuanfengxiao
  • 2017年12月05日 17:16
  • 306
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:机器翻译之Facebook的CNN与Google的Attention
举报原因:
原因补充:

(最多只允许输入30个字)