zoukankan      html  css  js  c++  java
  • 《Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences》

    Kalchbrenner’s Paper

    Kal的这篇文章引用次数较高,他提出了一种名为DCNN(Dynamic Convolutional Neural Network)的网络模型,在上一篇(Kim’s Paper)中的实验结果部分也验证了这种模型的有效性。这个模型的精妙之处在于Pooling的方式,使用了一种称为动态Pooling的方法。

    下图是这个模型对句子语义建模的过程,可以看到底层通过组合邻近的词语信息,逐步向上传递,上层则又组合新的Phrase信息,从而使得句子中即使相离较远的词语也有交互行为(或者某种语义联系)。从直观上来看,这个模型能够通过词语的组合,提取出句子中重要的语义信息(通过Pooling),某种意义上来说,层次结构的feature graph的作用类似于一棵语法解析树。

    DCNN能够处理可变长度的输入,网络中包含两种类型的层,分别是一维的卷积层动态k-max的池化层(Dynamic k-max pooling)。其中,动态k-max池化是最大化池化更一般的形式。之前LeCun将CNN的池化操作定义为一种非线性的抽样方式,返回一堆数中的最大值,原话如下:

    The max pooling operator is a non-linear subsampling function that returns the maximum of a set of values (LuCun et al., 1998).

    而文中的k-max pooling方式的一般化体现在:

    • pooling的结果不是返回一个最大值,而是返回k组最大值,这些最大值是原输入的一个子序列;
    • pooling中的参数k可以是一个动态函数,具体的值依赖于输入或者网络的其他参数;

    模型结构及原理

    DCNN的网络结构如下图:

    网络中的卷积层使用了一种称之为宽卷积(Wide Convolution)的方式,紧接着是动态的k-max池化层。中间卷积层的输出即Feature Map的大小会根据输入句子的长度而变化。下面讲解一下这些操作的具体细节:

    1. 宽卷积

    相比于传统的卷积操作,宽卷积的输出的Feature Map的宽度(width)会更宽,原因是卷积窗口并不需要覆盖所有的输入值,也可以是部分输入值(可以认为此时其余的输入值为0,即填充0)。如下图所示:

    图中的右图即表示宽卷积的计算过程,当计算第一个节点即s1s1时,可以假使s1s1节点前面有四个输入值为0的节点参与卷积(卷积窗口为5)。明显看出,狭义上的卷积输出结果是宽卷积输出结果的一个子集。

    2. k-max池化

    给出数学形式化的表述是,给定一个kk值,和一个序列pRpp∈Rp(其中pkp≥k),k-max pooling选择了序列pp中的前kk个最大值,这些最大值保留原来序列的次序(实际上是原序列的一个子序列)。

    k-max pooling的好处在于,既提取除了句子中的较重要信息(不止一个),同时保留了它们的次序信息(相对位置)。同时,由于应用在最后的卷积层上只需要提取出kk个值,所以这种方法允许不同长度的输入(输入的长度应该要大于kk)。然而,对于中间的卷积层而言,池化的参数kk不是固定的,具体的选择方法见下面的介绍。

    3. 动态k-max池化

    动态k-max池化操作,其中的kk是输入句子长度网络深度两个参数的函数,具体如下:

     

    Kl=max(ktop,LlLs)Kl=max(ktop,⌈L−lLs⌉)

    其中ll表示当前卷积的层数(即第几个卷积层),LL是网络中总共卷积层的层数;ktopktop为最顶层的卷积层pooling对应的kk值,是一个固定的值。举个例子,例如网络中有三个卷积层,ktop=3ktop=3,输入的句子长度为18;那么,对于第一层卷积层下面的pooling参数k1=12k1=12,而第二层卷积层对于的为k2=6k2=6,而k3=ktop=3k3=ktop=3。

    动态k-max池化的意义在于,从不同长度的句子中提取出相应数量的语义特征信息,以保证后续的卷积层的统一性。

    4. 非线性特征函数

    pooling层与下一个卷积层之间,是通过与一些权值参数相乘后,加上某个偏置参数而来的,这与传统的CNN模型是一样的。

    5. 多个Feature Map

    和传统的CNN一样,会提出多个Feature Map以保证提取特征的多样性。

    6. 折叠操作(Folding)

    之前的宽卷积是在输入矩阵d×sd×s中的每一行内进行计算操作,其中dd是word vector的维数,ss是输入句子的词语数量。而Folding操作则是考虑相邻的两行之间的某种联系,方式也很简单,就是将两行的vector相加;该操作没有增加参数数量,但是提前(在最后的全连接层之前)考虑了特征矩阵中行与行之间的某种关联。

    模型的特点

    • 保留了句子中词序信息和词语之间的相对位置;
    • 宽卷积的结果是传统卷积的一个扩展,某种意义上,也是n-gram的一个扩展;
    • 模型不需要任何的先验知识,例如句法依存树等,并且模型考虑了句子中相隔较远的词语之间的语义信息;

    实验部分

    1. 模型训练及参数

    • 输出层是一个类别概率分布(即softmax),与倒数第二层全连接;
    • 代价函数为交叉熵,训练目标是最小化代价函数;
    • L2正则化;
    • 优化方法:mini-batch + gradient-based (使用Adagrad update rule, Duchi et al., 2011)

    2. 实验结果

    在三个数据集上进行了实验,分别是(1)电影评论数据集上的情感识别,(2)TREC问题分类,以及(3)Twitter数据集上的情感识别。结果如下图:

    可以看出,DCNN的性能非常好,几乎不逊色于传统的模型;而且,DCNN的好处在于不需要任何的先验信息输入,也不需要构造非常复杂的人工特征。

  • 相关阅读:
    团队冲刺2---个人工作总结八(6.1)
    团队冲刺2---个人工作总结七(5.31)
    opencv2 用imwrite 抽取并保存视频图像帧
    VMware 虚拟机CentOS 7 网路连接配置 无eth0简单解决办法
    个人总结
    人月神话阅读笔记03
    个人冲刺10
    人月神话阅读笔记02
    第十六周学习进度情况
    个人冲刺09
  • 原文地址:https://www.cnblogs.com/zle1992/p/9093152.html
Copyright © 2011-2022 走看看