结合改进主动学习的SVD-CNN弹幕文本分类算法
2019-07-31邱宁佳丛琳周思丞王鹏李岩芳
邱宁佳 丛琳 周思丞 王鹏 李岩芳
摘 要:为解决传统卷积神经网络(CNN)模型使用池化层进行文本特征降维会损失较多文本语义信息的问题,提出一种基于奇异值分解(SVD)算法的卷积神经网络模型(SVD-CNN)。首先,采用改进的基于密度中心点采样的主动学习算法(DBC-AL)选择对分类模型贡献率较高的样本进行标注,以低标注代价获得高质量模型训练集;然后,结合SVD算法建立SVD-CNN弹幕文本分类模型,使用奇异值分解的方法代替传统CNN模型池化层进行特征提取和降维,并在此基础上完成弹幕文本分类任务;最后,使用改进的梯度下降算法(PSGD)对模型参数进行优化。为了验证改进算法的有效性,使用多种弹幕数据样本集,对提出的模型与常用的文本分类模型进行对比实验。实验结果表明,改进的算法能够更好地保留文本语义特征,保证训练过程的稳定性并提高了模型的收敛速度,在不同的弹幕文本上较传统算法具有更好的分类性能。
关键词:卷积神经网络;奇异值分解;主动学习;梯度下降;文本分类
中图分类号: TP391.1; TP18
文献标志码:A
文章编号:1001-9081(2019)03-0644-07
Abstract: For the loss of much semantic information in dimension reduction of text features when using pooling layer of the traditional Convolutional Network (CNN) model, a Convolutional Neural Network model based on Singular Value Decomposition algorithm (SVD-CNN) was proposed. Firstly, an improved Active Learning algorithm based on Density Center point sampling (DC-AL) was used to tag samples contributing a lot to the classification model, obtaining a high-quality model training set at a low tagging cost. Secondly, an SVD-CNN barrage text classification model was established by combining SVD algorithm, and SVD was used to replace the traditional CNN model pooling layer for feature extraction and dimension reduction, then the barrage text classification task was completed on these bases. Finally, the model parameters were optimized by using Partial Sampling Gradient Descent algorithm (PSGD). In order to verify the effectiveness of the improved algorithm, multiple barrage data sample sets were used in the comparison experiments between the proposed model and the common text classification model. The experimental results show that the improved algorithm can better preserve semantic features of the text, ensure the stability of training process and improve the convergence speed of the model. In summary, the proposed algorithm has better classification performance than traditional algorithms on multiple barrage texts.
Key words: Convolutional Nerual Network (CNN); Singular Value Decompostion (SVD); Active Learning (AL); gradient descent; text classification
0 引言
国内外研究者使用有监督的深度学习神经网络进行文本分类,这种监督型检测方法需要大量已标记数据,人工标注大量数据耗时耗力,因而难以实施。针对已有方法存在的问题,谭侃等[1]提出一种基于双层采样主动学习方法,用样本不确定性、代表性和多样性来评估未标记样本的价值,使用排序和聚类相结合的双层采样算法对未标记的样本进行筛选,使用少量有标签样本达到与有监督学习接近的檢测效果。徐海龙等[2]提出一种基于 委员会投票选择算法(Query By Committee,QBC)的支持向量机(Support Vector Machine,SVM)主动学习算法,将改进的QBC与加权SVM有机结合并应用于SVM训练学习中,有效地减少了样本分布不均衡对主动学习性能的影响。姚拓中等[3]将Boosting思想应用到多视角主动学习框架中,通过将历史上各次查询得到的分类假设进行加权式投票来实现每次查询后分类假设的强化,相比于传统单视角主动学习算法能够更快地完成收敛并达到较高的场景分类准确性。Li等[4]提出了结合半监督的主动学习方法,将主动学习过程产生的价值样本用来加速分类器的训练,和伪标签一起辅助分类器进行高效的分类。Wan等[5]提出了基于主动学习的伪标签校验框架,极大地提高了半监督学习中伪标签的置信度。Wang等[6]提出了主动学习与聚类相结合的伪标签校验的方法,进一步提高了伪标签的置信度。Samiappan等[7]提出了Co-Training与主动学习算法进行组合的半监督算法,缓解了Self-Training中容易产生的数据倾斜问题而导致的分类器持续恶化的情况。上述主动学习采样方法普遍面临以下问题:1)基于概率型的采样算法不适用句子型文本。2)只考虑分类结果最明确的样本,这种样本对当前分类器影响较小,并不能提高模型的泛化能力。本文提出基于密度中心点采样的主动学习算法,根据样本间的可连接性不断扩展聚类簇,选择每个类别中与密度中心相似度最高与最低的样本进行标注,实现采样的多样性,从而适用于大规模未标注句子级弹幕样本,使用极少量的标签样本训练初始分类器,迭代选择信息量最大的未标记弹幕样本加入训练集,以此提高分类器的分类性能,完成弹幕文本分类任务。
随着深度学习的发展,越来越多的深度学习模型被应用于短文本分类任务中,魏超等[8]提出基于自编码网络的短文本流形表示方法实现文本特征的非线性降维,可以更好地以非稀疏形式更准确地描述短文本特征信息,提升提高分类效率。谢金宝等[9]提出一种基于语义理解的多元特征融合中文文本分类模型,通过嵌入层的各个通路提取不同层次的文本特征,比神经网络模型(Conveolutional Neural Network,CNN)与长短期记忆网络模型(Long Short-Term Memory,LSTM)的文本分类精度提升了8%。孙松涛等[10]使用CNN模型将句子中的词向量合成为句子向量,并作为特征训练多标签分类器完成分类任务,取得了较好的分类效果。Kalchbrenner等[11]提出DCNN模型,在不依赖句法解析树的条件下,利用动态k-max pooling提取全局特征,取得了良好的分类效果。Kim[12]采用多通道卷积神经网络模型进行有监督学习,将词矢量作为输入特征,可以在不同大小的窗口内进行语义合成操作,完成文本分类任务。郑啸等[13]结合CNN和LSTM模型的特点,提出了卷积记忆神经网络模型(Convolutional Memory Neural Network,CMNN),相比传统方法,该模型避免了具体任务的特征工程设计。Hsu等[14]将CNN与循环神经网络(Recurrent Neural Network, RNN)有机结合,从语义层面对sentense进行分类,取得良好的分类效果。Yin等[15]提出一种基于注意力机制的卷积神经网络,并将该网络用在句子对建模任务中,证明了注意力机制和CNN结合的有效性。上述方法使用传统CNN模型对文本进行特征提取和分类,但池化操作在进行特征提取和降维时会损失较多的文本语义信息,从而导致分类精度下降。本文使用奇异值分解算法代替池化层的特征提取与降维工作,将奇异值较高的特征作为主要特征来代替原有目标矩阵的表达,更好地保存句子原有的语义结构,提升分类模型的精度。
1 相关研究
1.1 主动学习算法概述
主动学习算法是为了解决现实中标签数据不足、标注数据耗时耗力的问题而提出的。该算法能够从未标记样例中挑选部分价值量高的样例,标注后补充到已标记样例集中来提高分类器和精度,降低领域专家的工作量。如何高效地选出具有高分类贡献度的未标记样本进行标注并补充到已有训练集中,逐步提高分类器精度与鲁棒性是主动学习亟待解决的问题。
主动学习根据选择未标记样本方式的不同,可以分为成员查询综合主动学习、基于流的主动学习和基于池的主动学习。其中,基于委员会的主动学习是当前应用最广泛的采样策略。根据选择未标记样例的标准不同,基于池的采样策略又可分为:不确定性的采样策略、基于版本空间缩减的采样策略、基于模型改变期望的采样策略以及基于误差缩减的采样策略。
1.2 卷积神经网络文本分类
近年来,CNN模型在文本分类任务上取得了很好的实用效果。CNN模型首先根据输入文本和词向量构建输入矩阵,然后通过卷积和池化操作,筛选和组合词的分布式信息。其模型结构如图1所示,在这样一个网络中,输入层表示的是由每个词的分布式向量组成的句子矩阵;卷积层使用若干个卷积核对于局部的词向量矩阵进行卷积运算;池化层使用最大池化策略把卷积的结果转换为一组特征向量;基于前两层运算得到的特征向量,使用Softmax函数进行分类。
2 CNN分类模型改进算法
2.1 主动学习算法的改进
大多数传统的主动学习算法使用基于概率的启发式方法,这种方法建立在样例的后验概率分布基础之上,用信息熵较大的样本训练分类模型。这种基于概率的信息熵计算方法并不适用于句子级弹幕文本,所以本文在原有主动学习算法的思想基础上,提出一种基于密度中心点的主动学习采样算法,通过比对句向量间相似度与设定最小密度阈值对样本进行划分,根据阈值的约束条件来选择价值高的样本标注,提高增强了样本选择算法的鲁棒性。
2.1.1 基于相似度的密度聚类算法
传统的密度聚类算法是基于样本间距离的考察,本文针对句向量的空间分布提出向量间的相似度阈值来刻画样本类型的贴近程度,设计基于相似度的密度聚类算法,设置相似度与最小密度阈值,聚类核心步骤如下。
1)首先利用分词工具进行弹幕句子样本分词,将句子以词为单位形成一个词向量序列,如式(1)所示:
然后使用Word2vec模型将每一个词映射为一个多维的连续值词向量序列,最后利用LSTM算法,将词向量序列结合文本语序信息生成语义向量,公式表达如下:
3)从步骤1)中筛选出符合步骤2)中条件的点,加入到核心对象集合Ω中,如式(7)所示:
4)在核心對象集合中随机选取一个点α,找出由它密度可达的所有样本,生成第一个聚类簇B1。
5)将B1中包含的核心对象从Ω中去除,再从更新后的Ω中随机选取一个核心对象,作为种子来生成下一个聚类簇,反复迭代上述步骤,直至Ω为空。
2.1.2 主动学习采样策略
普通的主动学习采样策略,存在采样单一、采样偏置的问题。结合样本在特征空间中的分布结构,本文提出一种带约束条件的主动学习采样策略对未标记样本进行筛选,以聚类簇为单位,计算聚类中心点与其他样本间的相似度,其中相似度最高与最低的样本最能代表整个聚类簇的分布状态,依据上述方法可以在样本的信息性和预测标号的准确性两者之间获得较好的平衡,选出最有价值的弹幕样本给专家标注。核心步骤如下。
2.2 SVD-CNN模型
在自然语言领域,传统的CNN使用池化层对文本进行采样降维工作,该操作只是简单地从前一维FeatureMap中提取了最大值,并不关心特征的分布状态,从而导致特征的位置信息丢失,文本语义发生变化的问题。本文使用奇异值分解算法(Singular Value Decomposition,SVD)代替池化层的特征提取工作,根据奇异值的大小选取矩阵的主要特征。奇异值往往对应着矩阵中隐含的重要信息,每个目标矩阵都可以表示为一系列秩为1的特征矩阵之和,而奇异值则表征了这些特征矩阵对于目标矩阵的权重,因此奇异值较高的特征能够作为主要特征来代替原有目标矩阵的表达。如式(11)所示:
本文在传统CNN分类模型基础上设计了基于奇异值分解算法的卷积神经网络模型(Convolutional Neural Network based on Singular Value Decomposition, SVD-CNN),利用SVD算法良好的数值稳定性和几何不变性完成对矩阵的主要特征提取和降维,较好地保留文本语义信息的完整性,整个模型体系如图2所示。
1)输入层。
模型的输入为一个n×m的句子矩阵,矩阵的每一行代表句子中每个词对应的向量,行数n代表句子的词数,列数m为向量的维数。
2)卷积层。
采用列数与行数相同的卷积矩阵窗口h∈Rn×m,为了获取不同类别的语义特征,采用多个不同尺寸(h)的卷积窗口与原矩阵进行卷积运算,得到卷积语义特征Fi,如式(12)所示:
3)奇异值分解层。
对特征矩阵Fi进行奇异值分解运算,降维后的特征矩阵记为A,如式(13)所示:
3 弹幕分类解决方案的构建
3.1 弹幕分类模型优化算法
考虑到深度学习模型是较复杂的非线性结构,在这种非凸问题上往往很难直接求解,所以本文采用梯度下降算法对模型参数进行优化以得到全局最优解。
兼顾随机梯度下降算法(Stochastic Gradient Descent, SGD)的随机性,本文设计一种通过选取数据相关性较高的样本来形成批量数据训练集的梯度下降算法(Partial Sampling Gradient Descent, PSGD),该算法在保证训练过程稳定性的同时,提高模型的学习速度,使模型更快速地收敛,参数更新公式如式(17)所示:
考虑到随机选取训练样本的不确定性可能会导致目标函数值出现震荡的现象,本文从模型正确预测出的数据集中随机抽取10%样本,结合所有错误预测的样本,形成新的训练集来训练模型,具体算法描述如下:
算法2 PSGD梯度下降算法。
输入:全样本训练集U,误差函数loss和迭代终止阈值p,学习率ε,初始参数θ;
输出:更新后的参数θ。
3.2 模型描述
本文使用改进的主动学习采样策略,从未标注弹幕样本集中根据算法1设定的规则挑选少量弹幕样本,交由人工标注,使用标注好的弹幕样本训练SVD-CNN分类模型,为了能够较好保存句子的语义信息,模型使用SVD算法代替池化层来完成特征提取与特征降维,将得到的主要特征进行信息融合,并输入到Softmax函数中完成分类任务。整体结构如图3所示。
在数据预处理阶段,首先对弹幕样本进行数据清洗,然后利用分词工具与Word2vec模型将每一个词映射为一个多维的连续值词向量序列,最后利用LSTM模型将词向量序列结合文本语序信息生成语义向量。
使用算法1中的方法,将句向量样本根据相似度阈值和最小密度样本数进行聚类,对每个密度中心点相似度临界值进行采样,得到最能代表每个聚类簇的整体样本分布状态,将样本交由专家标注,以此提高训练样本集的代表性和广泛性。
为了获取不同的语义特征,采用不同尺寸的卷积窗口与原矩阵进行卷积运算,得到卷积语义特征Fi,对特征矩阵Fi进行奇异值分解运算,根据设定的阈值选择前k个奇异值与其对应的标准正交基,构建原矩阵A的k秩近似矩阵,将多个Ak矩阵的融合S,通过Softmax函数计算得到样本属于各个类的概率分布,如式(17)所示:
4 实验与结果分析
4.1 实验数据与参数设置
本文针对三个方面对改进算法的有效性进行验证。第一,通过模型不同的分类准确率,对比传统采样算法和DBC-AL算法的模型迭代次数,验证后者具有更高的效率;第二,使用本文提出的SVD-CNN模型对弹幕文本分类,同时考虑词向量维度和数据集泛化能力来验证其分类性能;第三,使用改进后的梯度下降算法对模型进行优化,通过收敛速度和模型训练速度来验证优化算法的有效性。
本文通过爬虫技术在不同视频网站分别爬取弹幕文本,根据视频类别形成不同的数据集进行对照实验,对本文提出的算法进行性能评估。详细的实验数据统计如表1所示。
本文在实验中选择不同尺寸的卷积核对输入的句子矩阵进行卷积操作,结合设定的阈值选取特征,使用奇异值分解算法完成矩阵的特征降维和特征提取,具體参数设置如表2所示。
4.2 算法性能验证
实验1 主动学习采样算法性能验证。
通过算法1中的方法对表1中的弹幕样本进行采样,为了验证该算法对短文本语句向量在减少人工标注上所起到的作用,比较在模型达到同一分类准确率时,不同采样算法所需的迭代次数。实验选择QBC算法、随机采样算法、基于最优标号和次优标号的(Best vs Second-Best,BvSB)[16]算法作为对照算法,使用CNN分类模型,实验结果如图4所示。
从图4可以看出,在分类器识别精度为60%时,模型的分类正确率较低,除随机采样算法外,其余3种分类算法使用采样所需的迭代次数没有明显差距。随着分类精度从70%逐渐提升到90%时,随机采样和信息熵采样算法所需迭代次数有着明显的升高,而DBC-AL算法和BvSB算法相对较为稳定。由于BvSB算法只考虑样本分类可能性最大的类别,因此相对前两种算法来说采样次数较少,但该算法忽略其他对样本的分类结果影响较小的类别,导致该算法采集的样本所含的信息量较少,相对于本文提出的DBC-AL算法需要更多的迭代次数,这说明了随着模型精度的提高,前三种传统的采样算法收集到的样本信息对于模型收敛提供的帮助越来越少,而DBC-AL算法根据样本间的相似度进行聚类,对每个聚类簇采集到对分类模型来说最有价值的样本,从而体现了DBC-AL算法在句向量中采样的优越性。
实验2 模型分类性能对比。
本文采用SVM算法、传统CNN模型、不加池化层的CNN模型、多通道卷积神经网络(Multi-Channel Convolution Neural Network, MCCNN)模型[17]和本文提出的SVD-CNN模型进行分类正确率对比实验以验证SVD-CNN模型的有效性。考虑到不同数据集可能引起分类模型精度变化的问题,使用表1中3个数据集分别进行模型分类性能对比实验,实验结果如图5所示。
从图5可以看出,SVM模型最高取得了78.9%的分类正确率,说明SVM模型在多分类问题上精度较低。CNN的分类正确率受数据集影响波动较大,在BiliBili彈幕数据集上的分类精度降低到76.6%,相比不加池化层的CNN模型分类正确率略有下降,这说明传统CNN模型的池化层并不能对自然语言的文本特征进行有效提取。由于MCCNN模型采用多通道的特征提取方式,将不同的特征信息结合形成不同的通道作为卷积神经网络的输入,使得模型的分类效果优于前两种模型,最高分类精度达到了87.6%,而本文提出的SVD-CNN模型相比前三个数据集上取得了最好的弹幕分类效果,其中在爱奇艺弹幕数据集上的分类精度最高达到了89.2%,相对于传统使用池化层的CNN模型和MCCNN模型,分别提高了7.3%和1.6%,说明本文提出的对文本语义矩阵使用奇异值分解算法进行降维和特征提取的方法,更好地保留了文本语义特征,进而提高了模型分类精度,充分验证了SVD-CNN模型在处理文本语义分类上对特征信息选择的有效性。
实验3 句向量维度实验。
考虑到句向量维度会影响文本语义信息的表征,从而影响最终的分类结果,本文利用CNN模型、MCCNN模型和SVD-CNN模型在BiliBili弹幕数据集上使用不同维度的句向量进行对比实验,分析句向量维度对分类结果的影响,实验结果如表3所示。
从表3中可以看出,当句向量的维度增加到50,三种模型的分类精度都有着不同程度的提高,这说明随着句向量维度的增加,文本语义的特征表达能力在逐渐提高。当维度继续增加时,语句特征分布会变得更为稀疏,CNN模型与MCCNN模型使用池化层会忽略较多的文本语义特征,致使分类效果降低。本文使用SVD算法代替池化层进行特征提取,在语句特征分布较为稀疏的情况下仍然可以保留较多的文本语义特征,当词向量维度增加到180以上时,模型的分类精度仍处于平稳状态,充分验证了SVD-CNN在弹幕文本语义特征提取上的高效性。
实验4 弹幕分类模型优化算法。
为了验证本文PSGD算法的训练稳定性与训练速度,选择批量梯度下降算法(Batch Gradient Descent,BGD),SGD算法,小批量梯度下降算法(Mini-Batch Gradient Descent,MBGD)和本文提出的PSGD算法设计两组对照实验来检验算法性能,使用表1中BiliBili弹幕数据集共10000条,设置迭代阈值为2500次,设计实验对比模型训练时误差变化率,验证PSGD算法的稳定性,如图6所示;设计实验对比模型分类精度随时间的变化率,验证PSGD算法具有较低的时间复杂度,如图7所示。
由实验结果可以看出,随着迭代次数的增加,使用BGD算法进行优化的模型误差逐渐减小,训练过程比较平稳,模型分类精度较高,但由于该算法采用全样本训练的方式,导致模型训练时间长,模型训练速度慢;SGD算法每次随机选取样本进行训练,训练时间较短,但相对于BGD算法存在的噪声较多,导致每次迭代并没有向着整体最优化方向进行,因此SGD的训练过程稳定性较差,模型易陷入局部最优点,致使分类精度降低;MBGD算法每次迭代使用部分样本更新模型参数,相对于SGD算法训练过程比较稳定,训练时间较短,模型分类精度介于BGD算法与SGD算法之间;由于本文提出的PSGD算法将模型分类错误的样本引入到训练集中,相对于MBGD算法的随机性训练集包含更多的信息,所以可以使模型训练时间更短,训练过程更稳定,模型分类精度更高,从而验证了PSGD算法的有效性。
5 结语
本文提出一种基于密度中心点采样的主动学习算法,利用样本间的相似度将样本进行聚类,并在每一个聚类簇中,按照设定的规则选择最具有价值的样本进行人工标注,减少人工标注的工作量;提出SVD-CNN模型,使用SVD算法代替传统CNN模型的池化层,更好地保留了文本语义特征,从而提高模型的分类精度;使用改进的PSGD算法选取信息量较大的训练样本对模型进行优化,在保证训练过程稳定性的同时提高了模型的训练速度。通过对比不同主动学习采样算法性能实验表明,DBC-AL算法比传统的主动学习采样算法采集到的样本信息量更高,对模型的分类贡献更多;对比多种数据集和不同句向量维度下分类模型的分类精度可以看出,SVD-CNN模型能够提取到更多的文本语义特征,具有较高的分类准确率;对比不同模型优化算法的训练误差与训练时间,PSGD算法具有良好的稳定性,模型收敛速度更快,总体训练效果优于其他算法。在主动学习采样的规则条件中,采样的阈值是通过经验选取,可能并不是最优的,如何根据数据集及当前分类模型来对该阈值进行自适应的调整是下一步工作中需要考虑的重要问题。
参考文献 (References)
[1] 谭侃,高旻,李文涛,等.基于双层采样主动学习的社交网络虚假用户检测方法[J].自动化学报,2017,43(3):448-461.(TAN K, GAO M, LI W T, et al. Two-layer sampling active learning algorithm for social spammer detection [J]. Acta Automatica Sinica, 2017, 43(3): 448-461.)
[2] 徐海龙,别晓峰,冯卉,等.一种基于 QBC 的 SVM 主动学习算法[J].系统工程与电子技术,2015,37(12):2865-2871.(XU H L, BIE X F, FENG H, et al. Active learning algorithm for SVM based on QBC [J]. Systems Engineering and Electronics, 2015, 37(12): 2865-2871.)