论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

摘要:我们报告了一系列在预训练的单词向量之上用卷积神经网络(CNN)训练的实验,用于完成句子级分类任务。我们展示了一个具有很少超参数调整和静态向量的简单的CNN,它可以在多个基准测试中获得出色的结果。学习特定任务的向量通过微调可以进一步有很好的表现。为了使用特定任务向量和静态向量,我们对架构进行了简单的修改。我们在这里讨论的七个任务中,有四个取得了目前最好的结果,其中包括情感分析和问题分类。

模型

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

Figure 1.是本文的模型,一个略有变化的CNN架构,左边是一个n*k的矩阵表示一个包含n个单词的句子,每个单词为k维向量。

包含n个单词的句子表示为:

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

这里⊕表示拼接操作。一个卷积操作涉及一个滤波器w(设置一个滑窗的长度h,用这个滑窗滑过整个矩阵)产生一个新的特征,形成这个向量,称为feature map,通过以下公式计算

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

这里b是偏移量,f是一个非线性函数,每一个窗口产生一个可能的映射特征

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

然后对于每个feature map,采取选出这个向量中的最大值,(最大池化策略,意在找到最重要的特征),同时也解决了每个feature map不等长,统一了维度的问题。

我们可以通过改变h的大小,生成很多feature maps,这些特征组成了倒数第二层并且传给全连接的softmax层,输出标签的概率分布。

在两个通道的模型变种中,一个将word2vec得到的结果直接static的传入整个模型,另一个channel在BP训练过程中要进行fine-tune。每一个filter都要分别应用到这两个channels上。例如上图中就能看出,系统有2 filters,对2个channels分别卷积后得到4 stacks。

数据集相对较小,很容易就会发生过拟合现象所以这里引如dropout来减少过拟合现象,Dropout通过随机丢弃——例如在前向传播的过程中,每个隐层单元有p的概率被丢弃。代替公式(4),我们使用公式(5)

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

这里○是元素级的乘法操作并且r∈R^m是一个“掩盖”向量,向量中的元素都是一个伯努利随机变量有p的概率变为1。另外用S来限制权重向量的二范式,每一次梯度下降,调整参数的时候,依靠这个阈值s来约束中间的参数。

模型变种

  • CNN-rand:所有的词向量随机初始化,在训练过程中会作为参数调节。
  • CNN-static:使用预训练的词向量——Word2vec。若有单词不在预训练好的词典中,则用随机数代替,所有词向量在训练过程中保持不变。
  • CNN-non-static:基本与CNN-static相同,只是在训练过程中会针对不同的任务做细微调节。
  • CNN-multichannel:有两个词向量集合的模型。每套词向量形成的句子矩阵作为一个通道,在训练的过程中一个通过反向传播做细粒度调节,一个保持不变。 

CNN用在NLP

论文阅读《Convolutional Neural Networks for Sentence Classification》Yoon Kim

上图中,一个句子相当于一个原始图像,图像处理中经常看到的卷积核都是正方形的,比如4*4,然后在整张图上沿宽和高逐步移动进行卷积操作,在用于短文本分类时,我们也需要很快的捕捉句子中的一些局部特点,上图中有7个词,假设每个词向量的方法维度为n,那么这个“原始图像”即为7n的矩阵,为了不把词切坏,卷积核在高度上滑动,在宽度上保持与词向量维度相同。

结论

CNN在NLP领域的尝试,效果很好,将深度学习应用在NLP领域,非监督预训练的词向量是一个非常重要的因素。

上一篇:第四课:Convolutional Neural Networks 第二周:编程作业:Keras - Tutorial - Happy House


下一篇:文章阅读-VoxNet: A 3D Convolutional Neural Network for Real-Time Object Recognition