论文笔记:Convolutional Neural Networks for Sentence Classification

Abstract

作者在句子级的分类任务上做了一系列基于预训练词向量的CNN实验。
实验结果说明了:

  • 一个简单的(单层神经网络)、有一点超参数的调节(Filter的个数)和static word vector的CNN模型在多个benchmarks上效果都很好。
  • 通过微调学习特定任务的向量(task-specific
    vectors)可提升性能。
    作者还提出了一个架构上的简单修改来允许task-specific vector和static vector。

non-static就是词向量随着模型训练变化,这样的好处是词向量可以根据数据集做适当调整。
static就是直接使用word2vec训练好的词向量即可。

1 Instruction

深度学习在机器视觉和语音识别上有很多成果。在NLP领域,深度学习会涉及到用神经网络来学习词向量。
词向量本质上是对词语的语义特征进行维度编码的特征编码器。
这部分就讲了讲词向量、CNN在NLP中的应用,本文的模型,都是概述。

2 Model

一个句子是由多个词拼接而成的,如果一个句子有 n n 个词,且第i个词表示为xi x i ,词 xi x i 通过embedding后表示为k维的向量,即 xiRk x i ∈ ℜ k ,则一个句子 x1:n x 1 : n nk n ∗ k 的矩阵,可以形式化如下:

X1:n=x1x2xn X 1 : n = x 1 ⊕ x 2 ⊕ ⋯ ⊕ x n

一个包含 h h 个的词的词窗口表示为:
Xi:i+h1Rhk X i : i + h − 1 ∈ ℜ h k

一个filter是大小为 hk h ∗ k 的矩阵,表示为:
WRhk W ∈ ℜ h k

通过一个filter作用一个词窗口提取可以提取一个特征 ci c i ,如下:
ci=f(WXi:i+h1+b) c i = f ( W ⋅ X i : i + h − 1 + b )
其中, bR b ∈ ℜ 是bias值, f f 为激活函数如Relu等。
卷积操作:通过一个filter在整个句子上从句首到句尾扫描一遍,提取每个词窗口的特征,可以得到一个特征图(feature map) cRnh+1 c ∈ ℜ n − h + 1 ,表示如下(这里默认不对句子进行padding):
c=[c1,c2,,cnh+1] c = [ c 1 , c 2 , … , c n − h + 1 ]

池化操作:对一个filter提取到的feature map进行max pooling,得到 c^R c ^ ∈ ℜ 即:
c^=max(c) c ^ = m a x ( c )

若有 m m 个filter,则通过一层卷积、一层池化后可以得到一个长度为m m 的向量 zRm z ∈ ℜ m :
z=[c^1,c^2,,c^m] z = [ c ^ 1 , c ^ 2 , … , c ^ m ]

最后,将向量 z z 输入到全连接层,得到最终的特征提取向量y y (这里的 W W 为全连接层的权重,注意与filter进行区分):
y=Wz+b y = W ⋅ z + b

在一个模型变种中,作者进行了两个“通道”词向量的实验,一个在训练中保持静止,一个通过BP微调。
在多通道的结构中,每一个filter都应用在两个通道上并且结果相加来计算 ci c i

2.1 Regularization

  • Dropout: 对全连接层的输入 z z 向量进行dropout
    y=W(zr)+b y = W ⋅ ( z ∘ r ) + b
    其中 rRm r ∈ ℜ m 为masking向量(每个维度值非0即1,可以通过伯努利分布随机生成),和向量 z z 进行元素与元素对应相乘,让r r 向量值为0的位置对应的 z z 向量中的元素值失效(梯度无法更新)。
  • 在测试时,权重向量按比例缩小,and is used (without dropout) to score unseen sentences。
  • L2-norms: 对L2正则化项增加限制:当正则项W2>s ‖ W ‖ 2 > s 时, 令 W2=s ‖ W ‖ 2 = s ,其中 s s 为超参数。

3 Datasets and Experimental Setup

  • MR:电影评论,正负面评价
  • SST-1:更细颗粒标签的MR
  • SST-2:无中立评价、binary labels的SST-1
  • Subj:把句子分为主观和客观
  • TREC:与人、位置、数字信息相关的6分类问题
  • CR:对商品的正负面评价
  • MPQA:Opinion polarity detection subtask
    of the MPQA dataset

3.1 Hyperparameters and Training

超参数通过在SST-2上的网格搜索设置
- Activation function(f f ): rectified linear units (ReLu)
- Filter windows( h h ): 3,4,5 with 100 feature maps each
- Dropout rate(p p ): 0.5
- L2 constraint( s s ): 3
- Mini-batch size: 50
- Dev set: randomly select 10% of the train data (for datasets without a standard dev set)
- Optimizer: stochastic gradient descent(SGD) over shuffled mini-batches with the Adadelta update rule

3.2 Pre-trained Word Vectors

  • Pre-trained words : word2vec vectors from Google News

3.3 Model Variations

  • CNN-rand:words随机初始化
  • CNN-static:预训练词向量(word2vec)进行初始化,在训练过程中固定
  • CNN-non-static:预训练词向量进行初始化,在训练过程中进行微调
  • CNN-multichannel(多通道):将固定的预训练词向量和微调的词向量分别当作一个通道(channel),卷积操作同时在这两个通道上进行,可以类比于图像RGB三通道。

4 Results and Discussion

  • MR:CNN-non-static 81.5
  • SST-1: Paragraph-Vec (Le and Mikolov, 2014), 48.7
  • SST-2:CNN-multichannel 88.1
  • Subj : MNB (Wang and Manning, 2012) F-Dropout (Wang and Manning, 2013), 93.6
  • TREC: SVMS (Silva et al., 2011) 95.6
  • CR:CNN-multichannel 85.0
  • MPQA:CNN-static 89.6

4.1 Multichannel vs. Single Channel Models

虽然作者一开始认为多通道可以预防过拟合,从而应该表现更高,尤其是在小规模数据集上。但事实是,单通道在一些语料上比多通道更好;

4.2 Static vs. Non-static Representations

在大部分的语料上,CNN-non-static都优于CNN-static,一个解释:预训练词向量可能认为‘good’和‘bad’类似(可能它们有许多类似的上下文),但是对于情感分析任务,good和bad应该要有明显的区分,如果使用CNN-static就无法做调整了.

4.3 Further Observations

  • 其他相似结构的CNN没有本文中的模型表现好;
  • Dropout可以提高2%–4%性能(performance);
  • 对于不在预训练的word2vec中的词,使用均匀分布U[a,a] U [ − a , a ] 随机初始化,并且调整 a a 使得随机初始化的词向量和预训练的词向量保持相近的方差,可以有微弱提升;
  • 可以尝试其他的词向量预训练语料,如Wikipedia[Collobert et al. (2011)]
  • Adadelta(Zeiler, 2012)和Adagrad(Duchi et al., 2011)可以得到相近的结果,但是所需epoch更少。

5 Conclusion

略。

作者本人的实现代码(基于Theano):https://github.com/yoonkim/CNN_sentence
Denny Britz的基于TensorFlow的实现代码:https://github.com/dennybritz/cnn-text-classification-tf
Denny本人的代码讲解:http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/
其他人的基于TensorFlow的实现代码的讲解:论文Convolutional Naural Networks for Sentence Classification–TensorFlow实现篇

你可能感兴趣的:(机器学习,深度学习,阅读笔记)