您的位置:首页 > 理论基础 > 计算机网络

卷积神经网络在句子分类上的应用[翻译]

2015-09-19 19:57 639 查看
最近翻译几篇paper,也算逼着自己多看看文章。对于一些概念的理解不够透彻可能导致翻译不准确,以及某些术语实在也是找不到合适的中文词,可能会有些别扭或索性没翻。大家将就着看。哪位大神看到了,如有不足还请赐教。
标题 Convolutional Neural Networks for Sentence Classification

卷积神经网络在句子分类上的应用

原文地址: http://arxiv.org/abs/1408.5882

作者 Yoon Kim

New York University

Yhk255@nyu.edu

摘 要

本文介绍了一系列基于预先训练的词向量而训练的卷及神经网络(CNN),用于句子级别的文本分类任务。我们发现,一个拥有少量参数调整和静态的词向量的简单的CNN在多个样本上都获得了较好的测试结果。而对词向量进行基于特定任务的学习调整则进一步地提高了CNN的性能。此外,本文还提出了一个对于传统CNN结构的简单改动,使得网络能够同时利用到基于特定任务调整的词向量和静态的预训练词向量。本文讨论的CNN网络提高了七项分类任务中四项的水平,其中包括语义分析以及问题分类。

1 概要

近年来,深度学习模型在计算机视觉(Krizhevsky et al.,2012)和语音识别(Graves et al., 2013)邻域取得了巨大的成果。在自然语言处理领域,大部分的深度学恶习方法都引入了通过自然语言模型(Bengio et al., 2003; Yih et al., 2011; Mikolov et al., 2013)学习词向量的表达,并在学习得到的词向量基础上进行分类(Collobert et al., 2011)。在词向量(Word
vectors)中,单词经过一个隐藏层,从一个稀疏的,1-of-V(V为词典的大小)编码的向量转换到一个低维向量空间,实质上就是一个在特定的维度上进行特征提取操作的过程。经过这样的密集表达后,在低维的向量空间中,语义上相近的词语在表达上也是相近的,表现为在欧式距离或余弦距离。

卷及神经网络(CNN)利用一个卷积层进行特征提取(LeCun et al., 1998)。CNN最初被用于计算机视觉的研究,后来在自然语言处理领域也得到了应用并取得了不错的效果,诸如在语义分析(Yih et al., 2014),搜索短语检索(Shen et al., 2014),句子分类(Kalchbrenner et al., 2014)以及其他传统的NLP任务中(Collobert et al., 2011)。

在本文的工作中,我们在一个无监督的自然语言模型提供的词向量基础上训练了一个简单的单层卷积神经网络。这些词向量由Mikolov等人训练,训练集为Google News中的1000亿个单词。我们最初保持了这些词向量不变而只学习网络的其他一些参数。尽管只采用了少量的参数调整,这个简单的模型在不同的测试集上也取得了不错的效果,这表明这些预先训练的词向量是一类通用的特征向量,可以在不同的分类任务中直接使用。而基于特定任务进行词向量的学习调整则进一步提高了模型的性能。最后,我们提出了一个对于网络的简单结构改造,通过多通道,使得网络可以同时利用预先学习获得的固定的词向量以及基于特定任务而进行学习调整的向量。

本文的工作与Razavian等人(2014)提出的用于图片分类的模型相似,通过预先学习得到的特征能够在多个不同的任务中都表现出良好的性能,甚至是在一些与原先进行特征提取的任务相差甚远的分类任务中。

2 模型

模型的结构如图一所示,为Collobert等人在2011年提出的CNN模型的一个变体。





图一 双通道网络模型结构
我们令为代 xi∈Rk
表句子中第i个单词的k维向量。一个长为n(如需会加入padding部分)的句子则被表示为式(1)

x1:n=x1⊕x2⊕⋯⊕xn
其中是 ⊕
串联符。更普适的,令代 xi:i+j
表单词 [xi,xi+1,…,xi+j]
的链接。一个卷积操作包括了一个卷机窗口 w∈Rhk
,与h个单词进行卷及操作从而获得新的特征值。比如,一个新的特征值
ci
通过以下方式(2)获得

ci=f(w⋅xi:i+h−1+b)
其中 b∈R
是一个偏置项,f是一个非线性函数如双曲正切。这个卷积窗口被应用到一个句子中所有可用的单词链结构
x1:h,x2,h+1,…,xn−h+1:n
中,产生一个特征向量(3)

c=[c1,c2,…,cn−h+1]
其中 c∈Rn−h+1
。随后我们对获得的特征向量使用max-over-time池化,取其最大值
c^=maxc
作为这个卷积窗口的特征值。这个思想是选取众多特征值中最重要的一个(最大的一个)。这个池化方法自然地解决了文本分析中句子长度不一致的问题。
上文描述了一个卷积窗口提取一个特征值的过程,而在整个网络中,我们使用多个卷积窗口(使用不同的窗口大小)来获得多个特征值。这些在倒数第二层中整合的特征将作为一个特征向量传入一个人全连接的softmax层中,最后输出分类的概率分布。

作为上述网络的一个变形,我们尝试了使用两个通道的词向量,其中在训练过程中保持不变,另一个则与其他参数一样通过BP过程进行优化。在图一介绍的多通道网络中,每个卷积窗口同时对两个通道进行卷积操作,他们的结果相加作为(2)式中
ci
的。模型其他结构与单通道网络一致。

2.1 正则化

我们在网络的倒数第二层引入dropout并且设置-norms权重约束条件进行正则化处理(Hinton et al., 2012)。Dropout通过在前向传播过程中随机丢弃一些神经元(比如设为0)来保证保证神经元间的相互适应。对于给定的倒数第二层
z=[c^1,…,c^m]
(共m个卷积窗口),我们不使用(4)

y=w⋅z+b
对于输出神经元y,dropout使用下式(5)

y=w⋅(w∘r)+b
进行计算,其中 ∘
为向量内积符号, r∈Rm
是遵从Bernoulli随机分布的掩膜(masking)向量,向量中每个数值均有概率p为1,否则为0。梯度只在没有进行掩膜处理(unmasked)的神经元中反向传播。在测试阶段,学习到的权重参数通过p进行加权处理,
w^=pw
,使用 w^
作为权重对测试数据进行测试(不进行dropout处理)。此外,我们使用
l2
-norms对权重向量进行约束操作,对于每一次梯度下降操作后,若
||w||2>s
,则将w归一化至 ||w||2=s

3 数据集及实验设置

我们在多个数据集上测试了本文提出的模型,测试数据集的概要见表一。





MR:电影评论数据,没条评论一个句子。数据分为正面和负面评论两个类别。

SST-1:Stanford Sentiment Treebank,一个MR电影评论的扩展库,数据以训练/开发/测试三个数据集给出,并且进行了五级情感标注(very positive,positive, neutral, negative, very negative),标注工作由Socher等人完成(2013)。

SST-2:除去了SST-1中的中性评论,并且加入二进制表示的分类标签。

Subj:主观性数据集,数据依据句子的主观或客观性进行分类。

TREC:TREC问题数据,对数据依据问题类别进行分类。

CR:用户评论数据,根据评论的正负性进行分类。

MPQA:使用MPQA中的观点倾向作为分类任务。

3.1 参数设置及训练

对所有的训练数据,我们的参数设置为:线性整流单元(rectified linear units),使用大小为3,4,5的卷积窗口个100个,dropout率(p)为0.5,
l2
约束中去s=3,以及mini-batch的大小为50。这些参数都是依据SST-2中的开发集进行选取的。

我们没有对不同的数据集进行参数设置上的调整,而是使用了统一的参数设置。模型根据Adadeltta更新规则在mini-batch上通过随机梯度下降进行训练。

3.2 预训练的词向量

使用无监督自然语言模型学习获得的词向量作为网络的初始化词向量是一种常用的在没有大规模训练数据的前提下提高网络性能的方法(Collobert et al.,2011; Socher et al., 2011; Iyyer et al., 2014)。本文使用了公开的word2vec词向量库,这些向量由具有1000亿单词的Google News数据库训练而得。向量具有300个维度,并且使用词袋结构进行训练(Mikolov et al., 2013)。预处理中没有涉及到的单词则使用随机初始化。

3.3 模型设置

本文使用了多种不同的模型进行训练测试对比。

CNN-rand:最基本的模型使用随机初始化进行词向量的初始化设置,并且在训练过程中进行调整。

CNN-static:使用预训练的word2vec向量作为初始化词向量,未涉及的单词使用随机初始化。在训练过程中向量保持不变,仅通过学习调整其他参数。

CNN-non-static:和上面的类似,但在训练过程中,通过学习调整设置的词向量。

CNN-multichannel:使用两个词向量集,所有卷积窗口同时对两个向量集应用。但是前向传播的梯度下降支队其中一个向量集产生影响。故,这个模型能够保持一个向量集不变而另一个向量集通过学习进行调整。两个向量集都是用word2vec进行初始化设置。

为了避免其他随机参数对实验的影响,我们将其他一些参数如交叉验证的信号,未涉及单词的初始化向量,CNN网络参数的初始化设置在各个数据集间保持一致。

4 结果与分析

模型的测试结果与其他方法的对比见表二





本文使用的基本的CNN网络(CNN-rand)测试结果并不突出,我们预计使用预训练的词向量会提升网络的性能,从测试结果来看,性能提升十分明显,我和我的小伙伴都惊呆了w(゚Д゚)w。即使是一个使用固定的初始化词向量的模型其表现也是十分的不错。对比一些使用complex池化的更加复杂的深度学习模型,以及需要事先计算parse tree的模型,不难发现,预先训练的向量是一个跨数据库的非常好的通用特征向量集。而在训练过程中通过学习调整初始化的词向量则能进一步地提高网络性能。

4.1 多通道vs.单通道模型

我们最初希望多通道模型能够一直过拟合的产生(通过保证学习后的向量与初始化向量相差不过分大),从而能够比单通道的模型有更好的效果,尤其是在小数据集上。而测试的结果则是mix的,在参数调整上正则化操作将是下一步工作的重点。比如,与其使用一个额外的通道作为静态词向量集,有个方法是可以保持只是用一个通道二在通道中增加额外的维度以供在训练中学习调整。

4.2 静态vs.动态表示

相较于静态的词向量,使用动态更新的词向量能够针对特定的任务进行模型的优化。比如,在word2vec中,单词good和bad相似的,因为他们在词义和词性上有很大的相关性。而在特定的数据库中,如SST-2数据集,good和bad则表现的没有那么高的相似性。而通过学习调整过词向量能够更加真实地反映出训练数据集的实际情况。

而对于未出现在word2vec中的词语,动态调整的效果则更加明显。经过学习,感叹号与强烈的情感表达被联系在一起而逗号则被归为连接词(见表三)





4.3 展望

Dropout很有用

在随机初始化word2vec未涉及的单词时,需要保持随机初始化所得的向量在分布性质上与word2vec相近。本文在通过设置随机初始化向量的取值区间来保证其方差与预训练的向量方差相近,在今后的工作中,可采用更加复杂的方式对随机初始化数据进行优化。

Word2vec相比其他小规模的预训练数据集性能更佳。

Adadelta 和Adagrad梯度下降的结果相近,但需要的epochs更少。

5 总结

总结一下一句话,无监督的预训练词向量的NLP的深度网络研究中具有重要的意义。

(展望和总结懒得逐字翻了,大概是这个意思....)

致谢



引用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: