Language Modeling with Gated Convolutional Networks
语言模型
所谓的语言模型,即是指在得知前面的若干个单词的时候,下一个位置上出现的某个单词的概率。
最朴素的方法是N-gram语言模型,即当前位置只和前面N个位置的单词相关。如此,问题便是,N小了,语言模型的表达能力不够。N大了,遇到稀疏性问题,无法有效的表征上下文。
LSTM模型一般会将单词embedding到连续空间,然后输入进LSTM,从而有效的表征上下文。但LSTM的问题在于,作为递归模型,当前状态依赖于上一状态,并行化受到限制。
门限卷积
所谓的门限卷积,其核心在于为卷积的激活值添加一个门限开关,来决定其有多大的概率传到下一层去。下面一步步对上图进行解析。
首先,将单词embedding到连续空间;即上图中的第二部分Lookup Table。这样,单词序列就能表现为矩阵了。
然后就是卷积单元了(上图中的第三部分),与普通卷积不同,门限卷积在这里分为两部分,一部分是卷积激活值,即B,该处于普通卷积的不同在于没有用Tanh,而是直接线性。另一部分是门限值,即A,A也是直接线性得到,但会经过一个sigmoid运算符。
之后就是门限单元,A和B进行element-wise的相乘,得到卷积后的结果。卷积单元和门限单元加起来形成一个卷积层。
经过多个这样的卷积层之后,再将其输入到SoftMax中,得到最后的预测。
细节
在做卷积层的时候,需要不让第i个输出值看到i以后的输入值。这是由语言模型的特性决定的,需要用i之前的信息来预测i。为了达到这样的效果,需要将输入层进行偏移,偏移k/2个单位,其中k是卷积的宽度,偏移后开头空缺的部分就用0进行padding。
由于residual network的强大能力,在真正的实现里,会把卷积单元和门限单元包在一个residual block里。
在最后的softmax层,普通的softmax会因为词表巨大而非常低效。因而选用adaptive softmax。adaptive softmax可以为高频词分配更多的空间而给低频次分配比较少的空间。
门限机制
LSTM中有input门和forget门两种,这两种缺一则会导致有些信息的缺失。而卷积中,经过实验,不需要forget gate。
而LSTM中使用的input门,如上。这种在卷积上却容易导致vanishing问题。因为tanh‘和σ’都是小于1的值。
因而,在卷积上,使用:
该方法存在一路使得X的导数可以不被downscale的传下去。
实验
Setup
- 使用Google Billion Word和WikiText-103两种数据集。
- 使用perplexity来进行衡量结果。
- 使用Nesterov’s momentum算法来训练,momentum设为0.99。
- weight normalization.
- gradient clipping to 0.1
- 使用Kaiming initialization
- learning rate 从[1., 2.]中uniformly选取
效果测试
单GPU上效果最好。
性能测试
Throughput是指在并行化条件下最大输出。
Responsiveness是指序列化的处理输入。
由表可知,CNN本身的处理速度非常快。而LSTM在并行化后也能拥有很高的速度。究其原因,是在cuDNN中对LSTM有特别的优化,而对1-D convolution却没有。但即便如此,CNN仍然完胜。
不同门限测试
- GTU: tanh(X*W+b)⊗σ(X*V+c)
- GLU: (X*W+b)⊗σ(X*V+c)
- ReLU: X⊗(X>0)
- Tanh: tanh(X*W+b)
非线性模型测试
上一个实验证明了Gated linear unit深受Linear unit的好处。这里评测一下GLU和纯线性模型的比较。
- Bilinear: (X*W+b)⊗(X*V+c)
纯Linear模型同5-gram模型效果类似。
模型深度测试
Context Size测试
训练测试
缺点
- 卷积不似LSTM那样灵活,输入只能是定长。
Language Modeling with Gated Convolutional Networks的更多相关文章
- Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liuchonge/article/deta ...
- RNN and Language modeling in TensorFlow
RNNs and Language modeling in TensorFlow From feed-forward to Recurrent Neural Networks (RNNs) In th ...
- Emotion Recognition Using Graph Convolutional Networks
Emotion Recognition Using Graph Convolutional Networks 2019-10-22 09:26:56 This blog is from: https: ...
- 【注意力机制】Attention Augmented Convolutional Networks
注意力机制之Attention Augmented Convolutional Networks 原始链接:https://www.yuque.com/lart/papers/aaconv 核心内容 ...
- 【论文笔记】Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 2018-01-28 15:4 ...
- 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks
Semi-supervised Classification with Graph Convolutional Networks 2018-01-16 22:33:36 1. 文章主要思想: 2. ...
- VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition
Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...
- Recurrent Neural Network Language Modeling Toolkit代码学习
Recurrent Neural Network Language Modeling Toolkit 工具使用点击打开链接 本博客地址:http://blog.csdn.net/wangxingin ...
- Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...
随机推荐
- cesium编程入门(四)界面介绍及小控件隐藏
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Pic ...
- 工作小结(关于webpack)
今天在工作中遇到了一个新问题,是关于webpack的. 是这样的,我在项目中添加了一个新页面,修改完配置文件后,开始运行,刚开始并没有什么问题,很顺利,后来我又添加了一个页面,然后修改配置文件,然后运 ...
- 复选框之checked属性
今天无意中看到同事在学习复选框里面的checked属性的应用,当时看了一下,感觉熟悉而又陌生,发现checked属性其实还是挺奇怪的,感觉这里很有必要做一下笔记: 1.html中的checked属性. ...
- hbase伪分布式安装(单节点安装)
hbase伪分布式安装(单节点安装) http://hbase.apache.org/book.html#quickstart 1. 前提配置好java,环境java变量 上传jdk ...
- java IO流、集合类部分小知识点总结
在Java中,以下三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法. InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输 ...
- Centos系统下Lamp环境的快速搭建(超详细)
lamp的搭建对于初学者是一件很头疼的事情,所以借此机会把自己当初快速搭建linux+apche+mysql+php的方法分享大家希望能到你. 工具/原料 虚拟机及Centos操作系统 Linux基本 ...
- vue学习笔记(四)——Vue实例以及生命周期
1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) | |-------el (提供一个在页面上已存在的 DOM 元素作为 V ...
- RocketMQ环境搭建(双master模式)
介绍: 多Master模式,一个集群无Slave,全是Master,例如2个Master或者3个Master. 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时, ...
- mybatis实战教程二:多对一关联查询(一对多)
多对一关联查询 一.数据库关系.article表和user表示多对一的关系 CREATE TABLE `article` ( `id` ) NOT NULL AUTO_INCREMENT, `user ...
- JS正则表达式的基础用法
RegExp(正则表达式)对象 正则表达式是一个描述字符模式的对象,可以处理更复杂的字符串.进行匹配替换. 常用的修饰符: i/m/g 使用方法: [声明方法一: new RegExp(value)] ...