Convolutional Neural Networks for Sentence Classification
论文任务:用卷积神经网络(CNN)在预先训练好的词向量上进行句子级分类任务
论文借用的深度学习模型:
卷积神经网络(CNN)利用层与卷积滤波器应用于局部特征。最初发明用于计算机视觉的CNN模型,后来被证明对NLP有效,并在语义分析、搜索查询检索、句子建模和其他传统NLP任务中取得了优异的结果。
论文核心内容:
训练了一个简单的CNN,在一个无监督的神经语言模型得到的单词向量的基础上再加上一层卷积,最初保持单词向量静态,只学习模型的其他参数。这个简单的模型在多个基准上取得了很好的结果,这表明预先训练的向量是“通用”的特征提取器,可以用于各种分类任务。通过微调学习特定于任务的向量,可以得到进一步的改进。最后,我们描述了对体系结构的一个简单修改,通过拥有多个通道,允许使用预先训练的和任务特定的向量。
MODEL:
图1所示的模型架构是Collobert等人(2011年)CNN架构的一个轻微变体。本文用拼接词向量的方法,将一个句子表示成为一个矩阵,这里矩阵的每一行表示一个word,后面的步骤仅采用一组filter、pooling层来得到句子的特征向量,然后进行分类。
设xi ∈ Rk 为对应于句子中的第i个单词的k维词向量。长度为n的句子(必要时填充)也就是说左边是一个n*k的矩阵,表示一句话的n个词语,每个词语是一个k维向量,假设文档中最长的句子中的词个数为n,则 小于n 的句子填充为m。最终得到的词向量矩阵为 n * k。表示为:
其中⊕是串联运算符。让Xi:n成为单词xi的串联。(从第i个单词到第n个单词,把它们串联起来),卷积运算包含一个滤波器w∈Rhk,它被应用于单词h的窗口以产生一个新的特征。例如,特征ci由单词xi:i+h−1的窗口生成:
(h是窗口,也就是滤波器的高度)这里b∈R是一个偏置项,w是权重,f是一个非线性函数。这个过滤器应用于句子{X1:h,X2:h+1,…,Xn-h+1:n}生成特征图:
然后在特征映射上应用max超时池操作,并将最大值ˆc=max{c}作为与此对应的特征特殊过滤器。其思想是为每个特征映射捕获最重要的特征,即具有最高值的特征。这种池化方案自然处理可变的句子长度。
论文描述了从一个滤波器中提取一个特征的过程。该模型使用多个过滤器(具有不同的窗口大小)来获得多个特征。这些特征形成倒数第二层,并传递给完全连接的softmax层,该层的输出是标签上的概率分布。
在其中一个模型变体中,我们试验了两个字向量“通道”,一个在整个训练过程中保持静态,另一个在多通道体系结构中通过反向传播进行微调,如图1所示,每个滤波器应用于两个通道,并将结果添加到公式(2)中计算ci。在其他方面,该模型相当于单通道体系结构。
正则化:
正则化解释:正则化就是我们将结构风险最小化的过程,调整参数的个数使之尽可能最小化。
论文正则化方法:论文在倒数第二层使用了dropout,(解决过拟合问题,当模型参数太多而训练样本少的时候容易出现过拟合问题。)
数据集:
预训练词向量:
使用公开的word2vec向量,这些向量是从googlenews中训练出来的1000亿个单词。向量的维数为300,采用连续词袋结构进行训练。不在预先训练的单词集中的单词会被随机初始化。
有两组词向量的模型。每组向量被视为一个“通道”,每个滤波器应用于两个通道,但梯度只通过其中一个通道反向传播。因此,该模型能够对一组向量进行微调,同时保持另一组向量的静态。两个通道都用word2vec初始化。
实验结果与讨论:
所有随机初始化单词的基线模型(CNN-rand)本身的性能并不好。本身是期望通过使用预先训练的向量来提高性能,但是实际上即使是带有静态向量的简单模型(CNN static)也表现得非常出色,与使用复杂池方案(Kalchbrenner et al.,2014)或需要事先计算解析树(Socheret al.,2013)的更复杂的深度学习模型相比,具有竞争性的结果。这些结果表明,预训练向量是很好的“通用”特征提取器,可以跨数据集使用。
我们最初希望多通道结构能够防止过度拟合(通过确保学习向量不会偏离太远)因此比单通道模型工作得更好,尤其是在较小的数据集上。然而,结果是好坏参半的,需要对微调过程进行进一步的正则化工作。
论文总结:
在目前的工作中,我们描述了在word2vec上建立卷积神经网络的一系列实验。尽管超参数很少调整,一个简单的CNN与一层卷积表现得非常好。我们的结果进一步证明了无监督的词向量预训练是自然语言处理深度学习的重要组成部分。