本文参考文献:
Gehring J, Auli M, Grangier D, et al. Convolutional Sequence to Sequence Learning[J]. arXiv preprint arXiv:1705.03122, 2017.
被引次数:13
 
Dauphin Y N, Fan A, Auli M, et al. Language modeling with gated convolutional networks[J]. arXiv preprint arXiv:1612.08083, 2016.
被引次数:24
 
今天要讲的一个模型是由Facebook人工智能研究院提出来的完全基于卷积神经网络的seq2seq框架,seq2seq我在之前的推送中已经讲过好多次了,传统的seq2seq模型是基于RNN来实现的,特别是LSTM,这就带来了计算量复杂的问题。Facebook作出大胆改变,将编码器、解码器、注意力机制甚至是记忆单元全部替换成卷积神经网络,想法是不是简单粗暴?虽然单层CNN只能看到固定范围的上下文,但是将多个CNN叠加起来就可以很容易将有效的上下文范围放大。Facebook将此模型成功地应用到了英语-法语机器翻译、英语-德语机器翻译,不仅刷新了二者前期的记录,而且还将训练速度提高了一个数量级,无论是GPU还是CPU上。
 
在详细开始介绍Facebook的conv seq2seq模型之前,我们需要回顾一下Gated CNN,这个同样是Facebook在去年底提出来的用于语言建模的模型。
 
用于语言建模的Gated CNN模型如下图所示,可以看到,最上层的word embedding操作与传统的语言建模没有区别,紧接着就是对这些embedding向量划分时间窗并做卷积操作,注意这里使用了两个卷积神经网络,这两个神经网络中的其中一个通过激活函数一个与另外一个进行相乘,得到最终的输出。说到这里,应该有读者已经发现了其中一个卷积神经网络的功能就是充当了闸门的作用,即控制着多少有用的信息作为最终的输出。同时,实验结果也表明Gated CNN在WikiText-103上取得了较好的效果。
 

在conv seq2seq这篇文章中,也使用了Gated CNN以及Residual connection,文中的模型结构图如下所示,下面我来仔细说明一下这里的计算细节。
 

对于编码器,原始的单词首先需要经过embedding层得到其相应的embedding向量,然后将embedding向量作为Gated CNN的输入,这里需要注意的是,为了保证经过卷积操作之后与之前的输入长度一致,卷积需要做pad操作。模型中有两个地方都使用到了GLU(Gated Linear Unit),我在图中已经用红色字眼标出,编码器的embedding和解码器的embedding分别通过各自的GLU单元得到各自的分布式状态,将两个状态矩阵进行点乘即可得到注意力权重,图中已用红色字体Attention标出,具体的注意力权重的计算如下公式所示:
 

 
注意到图中编码器的embedding和编码器的状态进行相加,并且乘上注意力权重,得到的结果文中称之为条件输入c,这里我们可以对比传统的注意力机制,传统的注意力机制是直接将注意力权重和编码器的状态进行相乘,而这里引入了embedding量,文中解释是因为embedding可以在做预测的时候可以结合具体元素的信息,增加了位置感,条件输入c的计算如下图公式所示:

 
将条件输入c加上解码器的状态,即可得到输出序列的概率,以上就是conv seq2seq的模型结构。作者最终在机器翻译上相比其他RNN的模型速度提高了近10倍!

完全基于卷积神经网络的seq2seq的更多相关文章

  1. 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统

    基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...

  2. 【RS】Automatic recommendation technology for learning resources with convolutional neural network - 基于卷积神经网络的学习资源自动推荐技术

    [论文标题]Automatic recommendation technology for learning resources with convolutional neural network ( ...

  3. 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn

    https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...

  4. 基于卷积神经网络的面部表情识别(Pytorch实现)----台大李宏毅机器学习作业3(HW3)

    一.项目说明 给定数据集train.csv,要求使用卷积神经网络CNN,根据每个样本的面部图片判断出其表情.在本项目中,表情共分7类,分别为:(0)生气,(1)厌恶,(2)恐惧,(3)高兴,(4)难过 ...

  5. Pytorch实现基于卷积神经网络的面部表情识别(详细步骤)

    文章目录 一.项目背景 二.数据处理 1.标签与特征分离 2.数据可视化 3.训练集和测试集 三.模型搭建 四.模型训练 五.完整代码 一.项目背景数据集cnn_train.csv包含人类面部表情的图 ...

  6. 基于卷积神经网络CNN的电影推荐系统

    本项目使用文本卷积神经网络,并使用MovieLens数据集完成电影推荐的任务. 推荐系统在日常的网络应用中无处不在,比如网上购物.网上买书.新闻app.社交网络.音乐网站.电影网站等等等等,有人的地方 ...

  7. 基于卷积神经网络的手写数字识别分类(Tensorflow)

    import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_dat ...

  8. 使用Python+TensorFlow2构建基于卷积神经网络(CNN)的ECG心电信号识别分类(二)

    心律失常数据库 目前,国际上公认的标准数据库包含四个,分别为美国麻省理工学院提供的MIT-BIH(Massachusetts Institute of Technology-Beth Israel H ...

  9. 基于 SoC 的卷积神经网络车牌识别系统设计(0)摘要

    ​NOTES:现如今,芯片行业无比火热啊,无论是前景还是钱景,国家芯片战略的发布,公司四五十万的年薪,着实令人非常的向往,为了支持芯片设计者,集成了工作.科研.竞赛于一体的<基于 SoC 的卷积 ...

随机推荐

  1. ble编程-外设发送数据到中心

    一.外设 1.在外设的.h文件中定义如下   1 //周边管理者 2 3 @property (nonatomic , strong) CBPeripheralManager *peripheralM ...

  2. LNMP环境搭建BBS论坛及伪静态

    我们在mysql备份 LNMP环境中的数据库迁移为独立的服务器的基础上搭建BBS论坛:  [root@bqh-117 ~]# mysql -uroot -p123456 Welcome to the ...

  3. 【Distributed】分布式解决方案【汇总】

    一.问题引出 二.分布式Session问题 三.网站跨域问题 四.分布式任务调度平台 五.分布式配置中心 六.分布式锁解决方案 七.缓存技术 一.问题引出 [Distributed]分布式系统中遇到的 ...

  4. lucene初探

    http://www.cnblogs.com/xing901022/p/3933675.html

  5. Flutter——Drawer、DrawerHeader、UserAccountsDrawerHeader组件(侧边栏组件)

    在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显示侧边栏,也可以通过点击按钮显示侧边栏. ...

  6. 动态URL是什么?动态URL有什么特点?

    动态URL是什么动态URL就是动态页面,动态链接,即指在URL中出现“?”这样的参数符号,并以aspx.asp.jsp.php.perl.cgi为后缀的url. 动态URL有什么特点1.在建设反向链接 ...

  7. python返回值的缺省设置

    有时候并不需要返回所有的值,但是原始函数的return语句中又有较多参数时: 方法一:修改原始返回值,只返回需要的参数 方法二:如果原始函数时第三方库或者python自带库,则直接修改可能不太好,于是 ...

  8. Stock Exchange (最大上升子子串)

    /* 题意: 给定L个整数A1,A2,...,An,按照从左到右的顺序选出尽量多的整数, 组成一个上升序列(子序列可以理解为:删除0个或者多个数,其他的数的吮吸不变). 例如,1,6,2,3,7,5, ...

  9. VSCode之使用Settings Sync同步配置和插件

    需求背景 自己平常工作,一般在公司用公司的电脑,在家里就是自己的,但是vscode如果配置了新的内容,或者安装了新的插件,那每次都需要单独记录一下然后再重新配置一遍.使用Settings Sync插件 ...

  10. 通过 cross apply 实现函数转换成表并与原表进行关联

    create table tb_cross_apply ( id int identity, multivalue ) ) insert into tb_cross_apply VALUES ('A| ...