语言模型

所谓的语言模型,即是指在得知前面的若干个单词的时候,下一个位置上出现的某个单词的概率。

最朴素的方法是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的更多相关文章

  1. Language Modeling with Gated Convolutional Networks(句子建模之门控CNN)--模型简介篇

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/liuchonge/article/deta ...

  2. RNN and Language modeling in TensorFlow

    RNNs and Language modeling in TensorFlow From feed-forward to Recurrent Neural Networks (RNNs) In th ...

  3. Emotion Recognition Using Graph Convolutional Networks

    Emotion Recognition Using Graph Convolutional Networks 2019-10-22 09:26:56 This blog is from: https: ...

  4. 【注意力机制】Attention Augmented Convolutional Networks

    注意力机制之Attention Augmented Convolutional Networks 原始链接:https://www.yuque.com/lart/papers/aaconv 核心内容 ...

  5. 【论文笔记】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 ...

  6. 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks

    Semi-supervised Classification with Graph Convolutional Networks 2018-01-16  22:33:36 1. 文章主要思想: 2. ...

  7. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition Karen Simonyan[‡] & Andrew Zi ...

  8. Recurrent Neural Network Language Modeling Toolkit代码学习

    Recurrent Neural Network Language Modeling Toolkit  工具使用点击打开链接 本博客地址:http://blog.csdn.net/wangxingin ...

  9. Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)

    Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...

随机推荐

  1. Generator函数异步应用

    转载请注明出处: Generator函数异步应用 上一篇文章详细的介绍了Generator函数的语法,这篇文章来说一下如何使用Generator函数来实现异步编程. 或许用Generator函数来实现 ...

  2. Linux系统上安装JDK和Tomcat服务器

    一.安装JDK 1.查看当前Linux系统是否已经安装java  输入命令: rpm -qa | grep java 2.卸载两个openJDK  输入命令:rpm -e --nodeps 3.上传j ...

  3. TIJ笔记:内部类的初始化

    看编程思想有点时间了,看到了些在马士兵老师没有讲过的部分,所以打算记录一下 内部类的初始化: .内部类的初始化和外部类的初始化略有不同,可以使用 外部类对象.new 内部类对象 创建内部类对象 pac ...

  4. Windows7下远程操作虚拟机

    ⒈分别查看两台物理机的IP地址 ⒉查看虚拟机的IP地址 ⒊两台物理机和虚拟机必须都要处于同一网段,上图中我已经做过了修改(每个节点都要修改,修改见步骤6 ) ⒋打开VMware,编辑虚拟机设置(每个节 ...

  5. dede的pagelist标签的listsize数字属性详解

    转载▼http://blog.sina.com.cn/s/blog_a4f3bd4e01012c8n.html dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各 ...

  6. dedecms的include文件夹是干什么的?

    include是DEDECMS的系统文件夹,里面放的是DEDECMS系统下的一些系统功能函数文件和功能定义与说明以及参数的文件. include目录文件作用解析 arc.archives.class ...

  7. linux 下 用phpmailer类smtp发送邮件始终不成功,提示:ERROR: Failed to co

    https://zhidao.baidu.com/question/509191264.html?fr=iks&word=PHPMailerSMTP+connect()+failed& ...

  8. Docker 创建ubuntu ,ssh,vnc 可连接

    **************************************************************************************************** ...

  9. linux的crash之hardlock排查记录

    3.10.0-327的内核,crash记录如下: KERNEL: vmlinux DUMPFILE: vmcore [PARTIAL DUMP] CPUS: 48 DATE: Wed Oct 18 2 ...

  10. 深入理解final关键字以及一些建议

    引子:一说到final关键字,相信大家都会立刻想起一些基本的作用,那么我们先稍微用寥寥数行来回顾一下. 一.final关键字的含义 final是Java中的一个保留关键字,它可以标记在成员变量.方法. ...