深度置信网络的Spark并行化在微博情感分类中的应用研究
2018-04-18董丽丽
张 翔 石 力 尚 勃 董丽丽
(西安建筑科技大学信息与控制工程学院 陕西 西安 710055)
0 引 言
随着大数据时代的到来,微博等网络媒体的信息量在互联网上呈现出爆发性增长。通过对微博等信息的分析,政府相关机构可以及时获取公众对热点事件的立场,掌握舆情走向制定相应措施。商家可以洞悉用户对商品的需求,有针对性地设计商品或者改进商品。因此微博的情感分类成为自然语言处理的一个研究热点。
近年来,国内外的文本情感分类主流技术主要有采用情感词典的分类方法和基于统计机器学习的分类方法。情感词典的文本情感分类主要利用人工情感词典从文本中提取出情感特征词进行统计,得到文本情感的极性。该方法的缺点是不能有效地处理没有收录的情感词,因此情感词典的完整与否直接影响到分类结果。由于微博中包含了大量的新的网络用语,因此情感词典的方法不适用于微博的情感分类。
以往的基于机器学习的文本情感分析采用的是浅层学习,在处理实际问题时,存在一些瓶颈,泛化能力较弱、寻找最优解困难等问题[1]。2006 年神经网络领域的权威Hinton教授将深度学习的研究成果发表在《Science》上,受到学术界广泛关注[2]。深度学习建立与人脑类似的分层模型结构,实现了对输入数据特征从底层到高层的逐级提取,解决了底层信号特征到高层语义的映射问题。因此深度学习能很好地解释图形声音文本等数据,是机器学习研究中的一个新的领域,到今天已经成为互联网大数据和人工智能的一个研究热潮[3]。同年Hinton在文献[4]提出的深度置信网络DBN(Deep Belief Network)中采用了非监督学习的贪心逐层训练算法,解决深层结构中相关的优化难题。Socher[5]于2012年提出基于递归自编码器RAE(Recursive AutoEncoder)的树回归模型用来分析句子的情感倾向性。文献[6]将 RAE深度树回归模型应用于中文文本情感分类研究中,并取得了良好的成绩。文献[7]引入词语间前后的关联性对RAE模型进行改进,进行中文微博情感分类。文献[8]中提出了 RNTN(Recursive Neural Tensor Network)方法,该方法引入张量进行坐标变换,使其能够准确地预测数据中的组合性现象。文献[9]提出一种利用DBN模型进行基于特征的实体关系抽取方法,实验结果表明,DBN获得的效果比SVM 和反向传播网络更好。目前国内外的研究主要集中在如何利用深度学习来提高文本情感分类的准确率上,由于微博信息具有大数据的特征,所以情感分类的处理需要耗费巨大的计算资源和时间开销。除此之外深度学习需要进行多次迭代计算,使得传统单机系统无法满足大数据时代的处理要求。
Spark是美国加州大学伯克利分校的AMPLab的并行计算框架,并于2010年成为Apache的顶级项目。它是一个开源的基于分布式内存的系统,具有简单易用、计算速度快等特点[10]。与MapReduce相比,Spark引入了RDD(Resilient Distributed Datasets)的弹性分布数据集,使数据的转换大多时都在内存中进行,非常适合计算的并行化操作。因此在机器学习等需要多次迭代算法的领域,Spark处理大数据的性能表现得比Hadoop更胜一筹[11]。近年来,基于Spark平台的研究成果也涌现了出来,Engle等[12]在2012年提出了基于Shark的分布式内存计算提高了数据分析的效率。胡于响[13]在Spark平台上设计和实现了推荐系统,并取得令人满意的成果。黄文辉等[14]使用一种基于Spark 平台进行视频图像的处理技术,以CPU时间的占用率作为评价指标,对于框架的评估有重要的意义。方峰等[11]提出了一种基于Spark框架的自适应实时DDoS检测防御技术,实验结果表明该技术可极大地提升检测能力。
综合以上分析,本文设计了一种Spark平台下,使用深度置信网络构建微博情感分类器的方法。该方法首先采用Word2Vec词向量[16]实现微博文本的特征提取;接着建立由多层受限玻尔兹曼机和一层BP神经网络组成的深度置信网络分类模型;最后将整个深度置信网络的训练过程运行在Spark计算框架的分布式内存之上进行分类训练,既保证了深度置信网络规模可扩展,又避免了I/O读写速率对内存的影响,加快了训练速度。实验结果证明该方法可以取得了较高的分类准确率。
1 相关工作
1.1 深度置信网络
深度置信网络(DBN)是一种非常具有代表性的深度学习算法,应用非常广泛[4]。本文采用的DBN网络模型由多层受限玻尔兹曼机RBMs(Restricted Boltzmann Machine)和一层反向传播BP(back propagation algorithm)神经网络堆叠而成。DBN的训练分为两步骤:第一步首先是对多个RBM网络叠加进行的预训练,每一层RBM通过无监督学习进行特征选择得到本层的最佳特征表示;第二步将RBM网络的最后输出作为BP神经网络的输入特征向量进行有监督学习训练分类器,并将训练的错误信息反馈给RBM,完成DBN的反向微调。DBN网络解决了RBM逐层贪婪训练的弊端,同时也克服了传统BP神经网络算法随机初始化参数和偏置值而收敛速度过慢等问题,从而使得DBN网络分类结果优于一般的浅层学习算法的分类结果。DBN的网络结构如图1所示[9]。
图1 DBN网络结构图
1.2 RBM预训练过程
RBM网络是玻尔兹曼机算法的一种改进算法,网络由可视单元层和隐藏单元层相互连接构成,每个层内的节点彼此没有连接。RBM中的神经元只有“激活”和“未激活”两种状态。图2为RBM的结构模型图,其中vi表示可视层中的神经元;hi表示隐藏层中的神经元;vi与hi取值是0或1;W表示可视层与隐藏层之间的权重。
图2 RBM结构模型图[10]
RBM是一种统计力学导出的能量模型[4],能量函数定义如公式所示:
(1)
式中:bi表示vi的偏置,cj表示hj的偏置,wij表示vi与hj之间的连接权重,并规定θ={w,b,c}。训练过程分为两步,第一步随机初始化可视层,第二步利用吉布斯采样,使得可视层和隐藏层达到能量分布在整个网络中达到平衡[9]。
式(2)是RBM的联合概率分布的表示:
p(v,h;θ)=e(-E(v,h;θ))/Z
(2)
式中:Z表示的是归一化因子,其定义定义如公式所示:
Z=∑v∑he(-E(v,h;θ))
(3)
vi和hj对应的条件概率分别如式(4)和式(5):
(4)
(5)
Hinton等[16]在2002年提出了对比离散度算法CD(Contrastive Divergence)的RBM预训练方法。该算法的主要思想是由隐藏层重构得到一个新的可视层,新的可视层再训练隐藏层,比较重构后的网络模型与现有网络模型的误差,相应的调整网络权重。训练中,各个RBM逐层训练,前一层的RBM训练完成后,将其隐藏层节点的状态作为训练该RBM 的数据输入。以此类推训练多层RBM,堆叠为完整的 DBN 网络,完成整个DBN的预训练过程。
1.3 BP神经网络微调DBN过程
RBM在训练过程中,每一层都通过贪心算法使得本层节点状态达到最优,容易陷入局部最优解,整体的训练效果并不是最优。因此,RBM的预训练完成以后,需要利用BP网络对模型的参数进行整体微调。其方法是将RBM训练好的数据作为BP网络的输入数据,利用正向传播完成一次学习的过程。当输出的结果与期望存在误差的时候,再使用BP网络的反馈特性,将误差信息从输出层向输入层反向逐层传递,微调DBN网络的权值和偏置值,让整个DBN网络节点状态达到全局最优,最终情感分类的准确率得到提高。
2 基于Spark并行优化的DBN微博情感分类模型
在构建好DBN网络后,我们将其应用在微博的情感分类上。微博的情感分类不同于一般的中文文本分类,微博的文本内容很短,不仅一般少于140个字,而且也极其不规范的。因此在对微博情感分类之前必须将其处理成计算机能够计算的形式,即数据的表示模型。然后构建情感词典,提取微博文本中的情感特征,将抽取的特征作为输入训练整个Spark并行化的DBN模型,得到分类结果,实现对微博文本的情感分析。图3为本文的微博情感分类的工作流程图。
图3 微博情感分类流程图
2.1 微博预处理及特征向量构建
在分析微博情感之前,首先要对数据进行噪声清洗、分词、去停用词等预处理操作。本文使用中科院的ICTCLAS2016软件对微博文本进行分词和词性标注。完成分词之后对结果语料去停用词,针对微博的特点构建了相应停用词表,对分词后的语料进行筛选。本文采用Word2Vec的CBOW模型分别将预处理过的数据集和情感词典转换为词向量的形式。Word2Vec是Google公司开发的一种将词转换为向量的深度学习的建模工具[15]。其基本思路是:将数据样本集中的每个词语通过训练映射成为一个固定长度的实数向量。所有代表样本的向量构成了一个数据样本的向量空间,通过计算这些向量之间的相似度就可以得到它们所表示的词语所代表语义的近似程度。
本文的微博样本数据分为高兴、愤怒、厌恶、低落四类。在进行训练时候,CBOW模型中的参数size值为200,建模时候对种子词语的前后相邻的5个词语进行计算,所以窗口的值为5。使用Word2Vec建模完成后所有的词向量会存入vector.bin的文件中。假设微博T包含n个词语,就有n个词向量,整篇微博的句向量v(T)采用式(6)词向量直接累加的方式计算得到。
(6)
式中:T表示微博文章,总共有m个词语,ni表示第i个词语。
使用Word2Vec进行同义词的计算,结合HowNet[17]形成情感词典,其中情感词21 532个,否定词23个,转折词7,递进词6个,反问词8个。将训练样本中预处理过的数据都转化成为词向量的形式与情感词典进行相似度计算,设置相似度的阈值ε=0.61。当训练数据集中词向量与情感词典的词向量小于该阈值时,提取该特征作为DBN分类器的输入。
2.2 基于Spark平台下情感分类器的并行优化
DBN网络是一种需要多轮迭代式的计算任务,Spark采用了分布式内存计算的平台,能够有力地支持迭代计算。除此之外同层RBM中的各个节点相互独立,这就为DBN模型的分布式计算提供了条件。因此,本文使用Spark作为情感分类模型的并行框架。
在DBN网络训练并行化的过程中,因为部署在每个计算节点中的RBM网络相互独立的进行训练,所以必须设置一个用于管理各个计算节点中RBM参数的参数服务器。参数服务器用于接收每个模型训练后产生的参数变化量Δθ,然后负责汇总计算各个变化量,更新参数θ并重新分发给每个RBM的网络,开始新的一轮训练。在Spark平台中,Master节点充当参数服务器,每个Worker节点作为计算节点部署RBM网络模型。Master节点提供训练需要的初始化参数θ={W,b,c},分发到每个Worker节点。每个Worker节点使用所有split分片上的训练数据进行参数学习,本文采用mini-batch作为训练参数更新的准则,当Worker节点执行完一个批次的训练数据,产生参数变化量Δθ就发送给Master管理节点进行参数的更新,直到所有的训练完成,每次训练处理过的特征数据转换成了RDD形式存储。实现的具体算法如算法1所示。
算法1Spark并行化DBN网络
输入:训练数据集S,设S为是微博预处理后的特征向量集
输出:情感分类结果集ResultRDD
算法步骤:
步骤1确定迭代次数K,初始化RBM的参数θ0;
步骤2 For i=0 To K Do
步骤2.1 Master节点广播θi到每个Worker节点;
步骤 2.2 Worker节点使用Split上的数据对RBM网络进行参数训练
步骤 2.3所有woker节点将Δθ发送至Master节点
步骤3 利用BP网络反馈机制调整重新微调DBN网络模型。
图4为整个Spark训练DBN结构模型示意图。
图4 Spark平台的DBN网络并行化结构图
3 实验结果与分析
本文实验所使用的数据集主要是通过网络爬虫下载微博数据40万条,此外,还有近几年COAE的训练和测试微博数据集以及NLP&CC提供的公开微博数据集,其中包括COAE2011年30 000条、COAE2014年40 000条以及NLP&CC2013年整理的数据4 000条,并对部分训练数据进行了人工标注,主要分为喜悦、愤怒、厌恶、低落四个不同的情感类别。
3.1 分类器性能评估指标
实验采用查准率、查全率和F1来评价分类算法的性能,其数学公式分别如公式所示:
(7)
(8)
(9)
3.2 DBN情感分类的实验结果与分析
本文进行了2个实验,第1个实验是不同层数的DBN神经网络与BP神经网络、kNN分类器进行情感分类性能的比较,从而确定Spark并行化下的DBN网络中RBM层数;实验数据微博3万条,其中2/3用作训练,剩余用作测试数据。实验中DBN神经网络的层数分别设为3层,节点数为1 000-200-5;4层节点数1 000-800-200-5;5层节点数为1 000-800-500-20-5和七层节点数1 000-800-500-80-20-5;迭代1 000次;BP神经网络是3层神经网络,节点数分别为1 000-800-5,迭代1 000次;kNN的K值选取K=45。距离函数采用了相似度余弦函数,实验的结果如图5-图7所示。
图5 查全率的比较
图6 查准率的比较
图7 F1值的比较
分析实验结果,从图5-图7中可以看出,当RBM的网络层数为3的时候与浅层特征学习的算法kNN和BP神经网络的分类效果基本相仿,这是由于模型的结构的层数不够深,未能充分学习特征。当DBN中RBM的层数由3层变为4层时,DBN模型的分类准确率高于kNN 分类器和BP神经网络的分类准确率5%以上。这是由于随着模型的层数增加,特征变换逐层将样本在原空间的特征表示变换到一个新特征空间时模型训练越充分,从而分类的效果也随之提高。因此实验验证了深度学习在情感分类方面的效果优于一般的浅层学习。当RBM的层数由4层增加到5层和7层时候,分类效果的提高并不是非常显著,准确率提升不到2%。这是因为增加RBM的训练层数,训练时间也会加长,同时会使误差信息在反向传播中逐层衰减,反而使模型的分类效果并不是想象那么好。当RBM的层数增加到4层后,微博情感的分类效果已经比较满意了,同时又因为增加RBM的层数后模型的训练时间也会随之增加。因此本文对DBN进行并行化实验的时候,将DBN模型的层数为4层。
3.3 Spark平台下进行微博情感分类的结果分析
第2个实验是在Spark平台下对DBN网络进行并行优化,实验采用的Spark集群由8台服务器组成。其中1台服务器作为Spark集群的管理节点,另外7个服务器充当Spark集群的计算节点,硬件配置为CPU Xeon E5520、内存20 GB、硬盘1 TB。
本次实验的任务是在训练样本数量相同的情况下,比较单机的DBN算法与Spark集群并行化后的DBN算法在训练时间的差别。实验中,分别初始化传统的DBN模型的训练参数和Spark并行化后的网络参数,设置DBN每层RBM的节点数分别为1 000-800-200-5,学习率λ为0.01,迭代次数不超过2 000,记录训练时间。
图8中,横坐标表示训练数据的大小,单位是“百条”,纵坐标表示“时间”,单位是“秒”。当训练数据较小的时候,采用Spark的并行训练时间略长于单机。当数据量开始增大的时候,单机的DBN算法的训练时间会随着数据量的变大也迅速增大,而基于Spark的并行DBN算法的训练时间并没有随着数据量的剧烈增加而迅速增加。从图中可以看出当数据量增加到80 000条以上,单机训练是SPark训练时间的6倍。由此可以得出,在处理海量数据时,基于Spark平台的并行DBN算法能有效地提高运算效率。
图8 对比单节点与Spark并行计算在数据增大时训练时间的变化
4 结 语
本文构建了深度学习的一个代表算法DBN网络,并利用Spark平台对其进行并行优化,通过实验验证了该算法能够缩短受限玻尔兹曼机训练时间,提高了情感分类的精度。微博的情感分析还包括文本的预处理和特性选择等步骤,因此本文下一步工作的重点是研究如何将Spark平台并行化应用在文本的预处理上,从而能够进一步提升情感分析的速度,使得该模型具有能够实时在线分析海量微博情感的能力。
[1] 张长水. 机器学习面临的挑战[J]. 中国科学:信息科学, 2013, 43(12):1612-1623.
[2] Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006,313(5786):504-507.
[3] 余凯,贾磊,陈雨强,等.深度学习的昨天、今天和明天[J].计算机研究与发展,2013,50(9):1799-1804.
[4] Hinton G E, Osindero S. A fast learning algorithm for deep belief nets[J].Neural Computation,2006,18(7):1527-1554.
[5] Socher R, Pennington J, Huang E H, et al. Semi-supervised recursive autoencoders for predicting sentiment distributions[C]//Conference on Empirical Methods in Natural Language Processing, EMNLP 2011, 27-31 July 2011, John Mcintyre Conference Centre, Edinburgh, Uk, A Meeting of Sigdat, A Special Interest Group of the ACL. DBLP, 2011:151-161.
[6] 朱少杰.基于深度学习的文本情感分类研究[D].哈尔滨:哈尔滨工业大学,2014.
[7] 梁军,柴玉梅,原慧斌,等. 基于深度学习的微博情感分析[J].中文信息学报,2014,28(8):155-161.
[8] Socher R, Perelygin A, Wu J Y, et al. Recursive deep models for semantic compositionality over a sentiment treebank[C]//Proceedings of the Conference on Empirical Methods in Natural Language Processing (EMNLP). 2013:1631-1642.
[9] 陈宇, 郑德权, 赵铁军. 基于Deep Belief Nets的中文名实体关系抽取研究[J].软件学报, 2012,23(10): 2572-2585.
[10] Latest release spark documentation[EB/OL]. 2015. http://spark.apache.org/docs/latest/.
[11] 方峰,蔡志平,肇启佳,等.使用Spark Streaming的自适应实时DDoS检测和防御技术[J].计算机科学与探索,2016,10(5):601-611.
[12] Engle C, Lupher A, Xin R, et al. Shark: fast data analysis using coarse-grained distributed memory[C]//Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data. ACM,2012:689-692.
[13] 胡于响.基于Spark的推荐系统的设计与实现[D].浙江大学,2015.
[14] 黄文辉,冯瑞. 基于Spark Streaming的视频/图像流处理与新的性能评估方法[J].计算机工程与科学,2016,37(11):2055-2060.
[15] Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and phrase and their compositionality[C]//Advances in Neural Information Processing Systems, 2013:3111-3119.
[16] Hiton G E. Training products of experts by minimizing contrastive divergence[J]. Neural Computation, 2002,14(8):1771-1800.
[17] 中国知网.情感分析用词语集[EB/OL].http://www.keenage.com/html/ c_bulletin_2007.