原文链接: http://chenhao.space/post/b62604a1.html
Introduction
题目:Convolutional Neural Networks for Sentence Classification
来源:EMNLP 2014
本论文提出将CNN用在NLP的句子分类任务上,进行了一系列的对比实验。
Model
假设一个句子的长度为n,可以表示为(词向量
x
x
x为
k
k
k维):
x
1
:
n
=
x
1
⊕
x
2
⊕
.
.
.
⊕
x
n
x_{1:n}=x_1⊕x_2⊕...⊕x_n
x1:n=x1⊕x2⊕...⊕xn
其中
⊕
⊕
⊕ 表示concatenation operator,例如,
x
i
:
i
+
j
x_{i:i+j}
xi:i+j 等于
x
i
,
x
i
+
1
,
.
.
.
,
x
i
+
j
x_i,x_{i+1},...,x_{i+j}
xi,xi+1,...,xi+j 的concatenation。
设过滤器filter的窗口的size为
(
h
,
k
)
(h,k)
(h,k),一个feature
c
i
c_i
ci 的计算公式为:
c
i
=
f
(
w
⋅
x
i
:
i
+
h
−
1
+
b
)
c_i=f(w·x_{i:i+h-1}+b)
ci=f(w⋅xi:i+h−1+b)
其中
w
w
w 是filter,
b
b
b 是bias,
f
f
f 是一个非线性函数。
This filteris applied to each possible window of words in thesentence
{
x
1
:
h
,
x
2
:
h
+
1
,
.
.
.
,
x
n
−
h
+
1
:
n
}
\{x_{1:h},x_{2:h+1}, . . . ,x_{n−h+1:n}\}
{x1:h,x2:h+1,...,xn−h+1:n} to produceafeature map.
c
=
[
c
1
,
c
2
,
.
.
.
,
c
n
−
h
+
1
]
c=[c_1,c_2,...,c_{n-h+1}]
c=[c1,c2,...,cn−h+1]
然后经过max pooling操作,concate每个最大值,之后再经过一个全连接层和softmax,全连接层是为了改变维度变换,softmax实现二分类。
Regularization
在全连接层使用dropout,并对权重向量使用L2范数约束。dropout就是将max pooling后的结果随机mask一部分值。
假设我们有
m
m
m个filters,令
z
=
[
c
1
,
.
.
.
,
c
m
]
z=[c_1,...,c_m]
z=[c1,...,cm],
y
y
y为forward propagation的输出结果:
y
=
w
⋅
z
+
b
y=w·z+b
y=w⋅z+b
使用dropout:
y
=
w
⋅
(
z
◦
r
)
+
b
y=w·(z◦r)+b
y=w⋅(z◦r)+b
其中
r
r
r 为masking向量。Gradients are backpropagated only through the unmasked units.
L2范数的作用是:L2会让 w w w的每个元素都很小,接近于0,但是不会等于0。而越小的参数模型越简单,越不容易产生过拟合,能防止模型overfit到某个feature上。
Model Variations
- CNN-rand: 所有单词的词向量都是随机初始化的,然后在训练过程中进行训练。
- CNN-static: 使用word2vec预先训练好的词向量模型。所有的词 (包括随机初始化的未出现的词 ) 保持静态,即使用静态词向量。只有模型的其他参数被训练。
- CNN-non-static: 与上面相同,但是预训练的词向量针对每个不同任务进行微调(fine-tune)(也就是训练)。
- CNN-multichannel: 两套词向量构造出的句子矩阵作为两个通道,在误差反向传播时,只更新一组词向量,保持另外一组不变。
Resultes


Others
why multichannel
We had initially hoped that the multichannel architecture would **prevent overfitting **( by ensuring that the learned vectors do not deviate too far from the original values ) and thus work better than the single channel model, especially on smaller datasets.
sampling
对于一些不在预训练词向量中的词,论文中给出了一种sampling的方法:

这里将这些初始化的词向量每一维度的数值在服从 U [ − a , a ] U[-a,a] U[−a,a] 均匀分布中sampling,让其方差和预训练词向量的方差一致,实验效果得到一定的提升。
均匀分布的期望方差计算公式:
若 X X X 服从 U [ a , b ] U[a,b] U[a,b] 分布,则 E ( X ) = a + b 2 E(X)=\frac{a+b}{2} E(X)=2a+b , D ( X ) = ( b − a ) 2 12 D(X)=\frac{(b-a)^2}{12} D(X)=12(b−a)2