摘要里面讲了如下几点:
Model
整个论文中用到的cnn模型就是这样的。
xi∈Rk xi∈Rk表示一个sentence中的第i个word,记为 xi xi,它是一个k维的词向量。上图中,一排就代表一个词向量。
一个sentence中的word个数为n。
filter: w∈Rhk w∈Rhk意思是作为filter的权重矩阵是h*k的。如果h=2,就是相邻的两个word做一次卷积,如果h=3,即为3个word做一次卷积,以此类推。
卷积之后的结果再经过激活函数 f f就得到了feature,记为 ci ci。它是由 xi:i+h−1 xi:i+h−1相邻的h个words卷积得到的值,再activation之后的值,也是当前层的输出。
卷积之后的值: w⋅xi:i+h−1+b w⋅xi:i+h−1+b
输出的feature值 ci=f(w⋅xi:i+h−1+b) ci=f(w⋅xi:i+h−1+b)
窗口大小: h h
这样之后,一个n长度的sentence就有[ x1:h x1:h, x2:h+1 x2:h+1, x3:h+2 x3:h+2,…, xn−h+1:n xn−h+1:n]这些word windows,卷积后的结果就是 c c = [ c1,c2,…,cn−h+1 c1,c2,…,cn−h+1],维度为(1,n-h+1)
然后进行池化max pooling,选出最重要的feature。pooling scheme可以根据句子的长度来选择。
一个filter只能提取一种feature,论文中的model用多种filter(不同的window size)来获取多种features。
one channel将word2vec得到的结果直接static的传入整个模型,另一个channel在BP训练过程中要进行fine-tune。每一个filter都要分别应用到这两个channels上。
例如上图中就能看出,系统有2 filters,对2个channels分别卷积后得到4 stacks。
一句话总结,dropout+l2-norm。
有一点需要注意:
train time按一定概率p对每层的输入神经元进行dropout。
test time时将学到的weights rescale成 ŵ =p∗w w^=p∗w,得到的 ŵ w^应用于unseen sentences,期间不需要dropout。
|w|2=s |w|2=s whenever |w|2>s |w|2>s
MR : Movie reviews. positive/negative
SST-1 : an extention of MR with train/dev/test splits and very fine-grained labels.
SST-2 : same as SST-1 but without neutral reviews.
Subj : classify a sentence as being subjective or objective.
TREC : classify a question into 6 question types.
CR : customer reviews. predict positive or negative.
MPQA : opinion polarity detection.
以上参数是由grid search 在SST-2 dev set上选出来的。
所做的唯一dataset-specific fining : early stopping on dev set
当手头上没有large supervised training dataset的时候,用word2vec(或相似的unsupervised nlp模型得到)初始化word vectors能提高performance。
模型中除了这些参数改变,其他参数相同。
用了pre-trained vectors(cnn-static)就有明显的提高。pretrained vector相当于“universal” feature extractors,fine-tuned后可以在很多tasks上表现出色。
一句话总结,加一个通道之后的效果是mixed。
一句话,non-static更适应specific task