本文参考文献:
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. 铰链joints

    Fixed Joint原理像阶层里的父子结构.关节会将对象锁在一个世界坐标或者锁在一个连接的刚体. 固定关节可以设定断裂力道(Break Farce)和断裂扭力(Break torque),破坏关节所 ...

  2. mysql8.0授权远程登录

    之前一直用mysql5.6 远程授权登录,后来换mysql8.0原来的授权方式报错 mysql> grant all privileges on *.* to 'root'@'%' identi ...

  3. C#基础 - 定义变量,输入输出

    本节课主要讲解C#的发展历史及部分C#语言基础, 主要内容有:控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值       打印,两种数据类型,整形类型转换 本节重点难点:定义变量 ...

  4. code first从入门到伪精通

    新入职一家公司,虽然之前也用ef,但是方式不一样,之前用的db,现在用代码先行的code,基于现有公司基本项目框架都是用的code,所以一步登顶,从最实战的角度去操作code,心颤的很,废话不多说,开 ...

  5. javascript_06-控制流程

    流程控制 程序的三种基本结构 顺序结构 选择结构 循环结构 判断语句 if 语法: if(condition){ //todo }else if{ //todo }else{ //todo } var ...

  6. kvm虚拟化环境的搭建

    首先搭建kvm的虚拟化环境,我选择的环境是在vmvare上的Centos 7的虚拟机,在该环境上搭建kvm的虚拟化环境 1:安装虚拟机(该过程自行安装) 2:操作系统环境的设置 (1)修改内核模式为兼 ...

  7. vue+webpack4 脚手架搭建

    1, vue 中 h => h(App) 的含义: //render: h => h(App) 是下面内容的缩写: render: function (createElement) { r ...

  8. 修改git提交的用户名和密码

    目的:每个项目自定义Git提交的用户名和邮箱 1.在本地找到某个项目所在的地址 2.找到config文件 3.增加如下配置 4. ok,这样每个项目都可以定义提交者姓名和邮箱了

  9. 利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块

    https://blog.csdn.net/sinat_28576553/article/details/81275650#4.4%C2%A0%E4%BF%9D%E5%AD%98%E5%B7%A5%E ...

  10. Mysql-Percona mysql5.7简单安装

    Mysql-Percona mysql5.7简单安装 一.什么是Percona 单从mysql的角度来讲,可以把Percona理解为mysql的一个分支,因为mysql的源码是开源的,Percona就 ...