王敏蕊,高 曙,袁自勇,袁 蕾
(武汉理工大学计算机科学与技术学院,武汉430063)(*通信作者电子邮箱gshu418@163.com)
文本分类是自然语言处理领域的重要问题之一,传统的监督学习方法大多假设数据样本是单标签形式的,即一个样本对应一个类别标签,但现实生活中,往往并不如此理想,一个数据样本通常会表达极其复杂的多重语义。与单标签不同,多标签样本给一个样本标注多个标签,从而更加准确、有效地表达单标签所不能表达的复杂语义关系。多标签文本在日常生活中十分常见,例如:一条新闻可能同时包含“华为”“5G”“通信技术”等多个主题,一条微博可能同时标注“明星”“综艺”“搞笑”等多个标签,因此,研究多标签文本分类对挖掘具有丰富语义的现实世界文本对象具有重要的意义。
多标签的传统分类方法包括二值分类(Binary Relevance,BR)方法、分类器链(Classifier Chain,CC)等。BR方法不考虑标签之间的相关性,但由于其简单而应用广泛。CC 方法考虑每一个标签与其他所有标签之间的关系,将多标签学习问题转化为一组有序的二分类问题,其中,每个二分类器的输入都要基于之前分类器的预测结果。传统多标签分类方法中文本特征的提取往往需要人工干预,容易带来噪声,同时又非常耗费人力。近年来,深度学习方法在单标签文本分类任务上取得了非常好的成绩[1-3],但国内外基于深度学习的多标签文本分类模型尚处于研究阶段,针对现有深度学习模型挖掘标签相关性效果差问题,有学者提出将多标签文本分类问题看作标签序列生成,并取得了较好效果[4-6]。对于多标签文本分类,每个样本对应的标签集都可以看作一个标签序列,为文本进行多标签标注可以看成标签序列生成,而循环神经网络(Recurrent Neural Network,RNN)及其变体已应用于各种序列建模任务中。文献[5]中首次将多标签文本分类看作序列生成任务,序列生成模型(Sequence Generation Model,SGM)中Decoder 使用RNN 的变体长短期记忆(Long Short-Term Memory,LSTM)神经网络,基于已经预测的标签产生下一个标签,这种顺序结构由于考虑了标签之间的相关关系,从而获得了更好的多标签文本分类效果。但是由于其序列性,容易造成累计误差。针对以上问题,本文受到胶囊网络中的动态路由(Dynamic Routing,DR)思想启发,将序列生成模型和动态路由方法结合,增加动态路由聚合层,克服序列生成中的累积误差缺陷,并将其应用于多标签文本分类。本文的主要工作如下:
1)将序列生成模型与胶囊网络中的动态路由思想结合,设计了一种基于动态路由的解码器结构。这种解码器结构能减弱序列生成模型中累积误差的影响,其中,优化的动态路由算法能提升语义聚合效果。
2)利用所提出的解码器结构,构建了基于动态路由的序列生成模型(SGM based on DR,DR-SGM),并将DR-SGM 应用于多标签文本分类。该模型能通过其顺序结构捕捉标签相关性,从而提升多标签分类效果。
3)将本文模型在三个多标签文本数据集进行测试,实验结果表明,本文模型性能优于7个基准模型。
多标签文本分类任务一直是自然语言处理领域一个十分重要却又富有挑战性的任务。多年来,国内外学者在多标签文本分类领域投入了大量研究。多标签文本分类,顾名思义,即是对具有多个标签的文本样本进行标签预测,它相对于单标签文本分类更加复杂。现有的多标签文本分类方法可划分为传统方法和深度学习方法,综述如下:
按照解决策略准则,传统机器学习方法中将多标签分类分为问题转化和算法适应两类。问题转化方法指将多标签问题转化为一个或一组单标签问题,从而运用已有的单标签算法解决,如标签幂集(Label Powerset,LP)[7]、分类器链[8]等。算法适应方法指通过改进现有单标签算法以完成多标签学习任务。例如:Osojnik 等[9]设计了一种基于流式多目标回归器iSOUP-Tree 的多标签分类方法;李兆玉等[10]为每个训练样本的近邻集合计算其近邻密度和近邻权重,提出了一种基于引力模型的多标签分类算法;刘慧婷等[11]设计了基于去噪自编码器和矩阵分解的联合嵌入多标签分类算法Deep AE-MF。
基于深度学习模型的多标签文本分类模型尚处研究阶段,并没有很完整的体系分类,但已经有学者取得了一些成果:Baker 等[12]设计了一种基于卷积神经网络(Convolution Neural Network,CNN)架构的标签共现的多标签文本分类方法;Kurata 等[13]提出了一种新颖的基于标签共现神经网络初始化方法;Shimura等[14]提出一种针对短文本多标签文本的分层卷积神经网络结构,该方法利用类别之间的层次关系解决短文本数据稀疏问题;Yang 等[15]提出了一种可以“重新考虑”预测的标签的深度学习框架;宋攀等[16]提出了一种基于神经网络探究标签依赖关系的算法执行多标签分类任务;Liu等[17]针对极端多标签文本分类中巨大的标签空间引发的数据稀疏性和可扩展性,考虑标签共现问题,提出了专为一种多标签学习设计的新的卷积神经网络模型;He 等[18]将标签关联、缺失标签和特征选择联合起来,提出一种新的多标签分类学习框架;Banerjee 等[19]将多标签文档按层次划分,制定了一种新的基于迁移学习的分类策略HTrans。序列生成思想应用于多标签文本分类已有部分成果:Chen 等[4]提出通过将CNN 与RNN组合以捕捉全局和局部文本语义,并通过RNN 输出标签序列;Yang 等[5]首次提出将序列生成思想应用于多标签文本分类;Qin等[6]延续序列生成思想,构建新的训练目标,以便RNN能发现最佳标签顺序。
综上所述,深度学习方法被越来越多地应用于多标签文本分类领域,序列生成模型是多标签文本分类中一次成功的尝试,但其标签序列生成过程中容易产生累积误差,严重影响时间靠后的标签生成,从而降低标签标注准确率。本文主要针对这个不足展开研究工作。
多标签文本指一个实例被多个标签标注的文本,多标签文本分类问题的目标是为每个未分类文本样本标注合适的类别标签。形式化地描述为:
假设文本样本空间X={x1,x2,…,xm},对应包含n个类别的标签空间Y={y1,y2,…,yn},现有多标签文本训练集D=,多标签分类任务的目的就是利用训练集D学习到一个分类器C:X→2Y。对于每一个样本xi,都有一个标签集合Yi与之关联[20]。
为更好探究标签之间的相关性,本文构建了一种基于动态路由的RNN 序列生成模型(DR-DGM),以取得更好的多标签文本分类效果。
序列生成模型Seq2Seq(Sequence to Sequence)是一种Encoder-Decoder结构,最早应用于机器翻译任务中,并在当时取得了巨大成功。其主要思想是通过深度神经网络将原始输入的可变长序列映射到另一可变长度的序列中。其中,使用的深度神经网络通常是RNN,常用的有LSTM 神经网络和门控循环单元网络(Gated Recurrent Unit,GRU)。Seq2Seq 模型结构如图1所示,主要包括三部分:
1)编码器(Encoder):读取原始语言序列,将其编码成为一个固定长度的具有原始语言信息的向量。
2)中间状态变量:对所有输入内容的集合。
图1 序列生成模型结构Fig.1 Architecture of sequence generation model
3)解码器(Decoder):根据中间状态变量,得到解空间的概率分布,最终生成输出可变长序列。
受序列生成模型启发,有学者创新性地将多标签分类问题看作标签序列生成问题。在Encoder 层使用双向长短期记忆(Bi-directional Long Short-Term Memory,Bi-LSTM)神经网络+Attention 结构捕获语义信息,在Decoder 层的每一时刻都进行一次标签序列生成,预测的标签集合由各个时刻生成的标签组成。
序列生成模型利用LSTM 顺序地生成标签以捕获标签之间的相关性,但也是由于其顺序结构,上一时刻的输出对下一时刻的标签生成具有重要影响,如果上一时刻包含错误信息,那么下一时刻的标签输出大概率也是错误的。为了尽可能将上一时刻的正确信息传导下去,本文受胶囊网络[21-22]启发,使用动态路由聚合解码器结构中的信息,以提升文本语义信息传递的聚合效果,从而更好地降低错误信息的叠加。
为解决传统卷积神经网络无法捕捉图像特征位置相对关系的缺点,胶囊网络[21]应运而生。在文本处理中,胶囊网络中的动态路由过程能捕捉部分-部分、部分-整体的位置信息[22],也能更好地聚合文本语义信息[23]。本文将动态路由过程应用于序列生成模型的解码器结构中,具体结构如图2所示。
图2 基于动态路由的解码器结构Fig.2 Decoder based on dynamic routing
图2中省略了Encoder层和中间语义变量ci∈{c1,c2,…,cn} 的详细内容,在计算得到Decoder 层隐含变量si∈{s1,s2,…,sn}后,将其输入动态路由聚合层(具体的路由优化算法如算法1 所示),最后输出到Softmax 层进行分类并得到解空间的标签概率分布,每一时刻的输出为解空间中概率最大的标签。其中,标签的预测以<EOS>标志为结束。此外,动态路由聚合层的参数是全局共享的,这样能减弱累积误差产生的影响。
同时,本文探索了两种策略以优化动态路由的聚合效果。首先,为解决动态路由过程中的类别分布稀疏问题,本文使用sparsemax代替动态路由中的softmax[24],如式(1):
其中:ΔK-1≔{p∈RK|1Tp=1,p≥0},表示(K-1)维单形,从RK到ΔK-1的映射能够更有效地将实际权重向量转化为概率分布。sparsemax 将输入向量的欧氏距离投影转化为概率单形,这种投影方法使得sparsemax 更适用于类别稀疏的情况。其次,为加强低层胶囊到高层胶囊的连接强度,引入高层胶囊权重系数wj(j表示第j个高层胶囊),wj是高层胶囊vj的模(具体计算方法参见算法1中描述),并用于修正下一次低层胶囊对高层胶囊的连接强度,在迭代过程中提升对分类结果有重要影响的胶囊权重。
依据以上两点改进,设计动态路由优化算法如算法1 所示。其中,squash表示非线性激活函数[21]。
算法1 动态路由优化算法。
综上所述,本文将胶囊网络中的动态路由算法进行优化,然后将其与解码器结构融合,构建了如图2 所示的基于动态路由的解码器结构。
利用2.2 节所提出的解码器结构及优化的路由算法,设计基于动态路由的RNN序列生成模型框架(DR-SGM),如图3所示,其中D/R 胶囊图标具体细节即图2 所展示内容。模型主要由以下几个部分组成:
1)输入层。对原始文本进行预处理,然后使用word2vec词嵌入技术将其转换为数字表示的词向量,模型的输入为多个词向量组合得到句子向量。
2)Encoder 层。假设输入的句子中含有m个单词,向量化后该句子可表示为(e1,e2,…,ei,…,em),其中ei表示该句子中第i个词对应的词向量。Encoder 层使用Bi-LSTM+Attention机制,具体计算过程见式(2)~(5):
其中:hi表示第i个单词对应Enocder 层中的隐含状态,它由i时刻前向LSTM和反向LSTM联结而成;αti表示在t时刻,Attention 机制为第i个单词分配的权重;Wa、Ua、都是权重系数。
3)中间语义层。每一时刻的中间语义向量ct由Encoder层中隐含状态hi计算得到,其计算公式如式(6):
4)Decoder 层。t时刻Decoder 层的隐含向量st首先由中间语义向量ct计算得到,公式如(7)。
其中:g(yt-1)代表概率分布yt-1中最高概率标签的全局嵌入[5]。
然后将隐含向量st输入动态路由聚合层,即图3中的D/R胶囊图标。
其中,DR代表动态路由过程,具体内容见2.2节。
5)输出层。输出层在每一个时刻都会输出一个标签概率分布yt,每次取最高概率标签作为当前时刻的“标签序列生成”,yt的计算公式如下:
其中:Wo、Wd和Vd是权重系数;It是为了保证不预测重复标签的掩码向量;f是非线性激活函数[5]。
由图3可知,DR-SGM 模型在SGM+GE(SGM+Global Embedding)模型[5]的基础上进行了改进,首先,使用sparsemax和迭代权重w优化动态路由策略;然后,添加动态路由层,使用优化的动态路由算法改进解码器结构,以强化语义聚合效果,捕获文本关系,削弱因顺序结构造成的累积误差;最后,在以上工作的基础上,构建基于动态路由的序列生成模型。
算法2 基于DR-SGM的多标签文本分类算法。
输入 多标签文本数据集(x(n),y(n))(n=1,2,…,N),训练轮数r;
图3 基于动态路由的RNN序列生成模型(DR-SGM)架构Fig.3 Architecture of RNN sequence generation model based on Dynamic Routing(DR-SGM)
利用DR-SGM 模型,设计多标签文本分类算法如算法2所示。首先对文本进行去停用词、分词,将其转化为词向量后进行本地结构化存储。句子转化为词向量矩阵后输入DRSGM 模型,通过Encoder 层得到各个时刻的中间语义向量ci,再计算出Decoder 层隐含向量si,转化为胶囊向量后作为动态路由优化算法的输入,进行三次路由迭代。最后通过Softmax输出标签序列。输出层在每个时刻的输出中选择输出标签序列中最大概率的标签加入预测标签序列,以<EOS>为序列生成结束标志。每次训练完成后,在测试数据集上验证模型分类效果,对模型参数进行迭代更新,共享动态路由层参数,并通过Adam优化器优化神经网络。
本文采用RCV1-V2、AAPD 和Slashdot 作为实验数据集:公开数据集RCV1-V2 是路透社公布的新闻数据集,包含804 414 篇新闻,共103 个主题;AAPD 数据集是arxiv 网站的论文摘要数据集,包含55 840 个论文标题和摘要,共54 个主题;Slashdot 是一个社交网络数据集,包含24 072 个文档,共291个主题。数据集的具体信息如表1所示。
表1 数据集详细信息Tab.1 Detail of datasets
采用F1 值、汉明损失(Hamming Loss,HL)作为性能评价指标,如式(11)、(12):
其中:Precision代表准确率,Recall代表召回率,M为样本数,Yi是真实标签集合,是预测标签集合,为样本预测标签集合和真实标签集合的对称差分。F1 值越大多标签分类效果越好,而HL是衡量样本中误分标签平均数量的指标,HL越小,误分标签数量越少,多标签分类模型性能越好。
本文实验基于Tensorflow 框架,使用Numpy、Keras 库进行开发,编程语言是Python3.6。数据集被随机洗乱,其中90%作为训练集,剩余10%作为测试集。词向量使用预训练的300 维word2vec 词向量,不在字典中的低频单词用全0 表示。RCV1-V2固定句子长度为500,AAPD 数据集固定句子长度为300,Slashdot 数据集固定句子长度为120,多余截去,不足用0补齐。此外,dropout设置为0.5,学习率设置为0.001,并使用Adam优化器和交叉熵损失函数训练数据。
本文使用以下基准模型与本文构建的DR-SGM 模型进行对比:
1)二值分类(Binary Relevance,BR):BR 算法将多标签分类任务分解成n个独立的二元分类问题,每一个二元分类问题对应于标签空间中的某一特定标签。
2)分类器链(Classifier Chain,CC):CC 将多标签学习问题转化为一组有序的二分类问题,其中每个二分类器的输入都要基于之前分类器的预测结果。
3)标签幂集(Label Powerset,LP):LP 将多标签学习问题转化为多类分类问题进行学习。它将训练数据集的标签集合每个不同的标签子集成为labelset,看作是单标签分类任务中多类分类问题的不同类别值,然后利用分类器进行求解。
4)CNN-RNN[4]:利用CNN 捕获全局文本特征后输入RNN进行局部语义特征捕获,同时考虑标签相关性。
5)序列生成模型(SGM)[5]:将多标签文本分类问题转换为标签序列生成问题。
6)SGM+GE(Global Embedding,全局嵌入)[5]:在序列生成模型的基础上使用Global Embedding。
7)set-RNN(Adapting RNN to Multilabel Set Prediction,自适应RNN)[6]:同样将多标签文本分类问题转换为标签序列生成问题,提出新的训练和预测目标,使RNN 能发现最佳标签顺序。
其中:1)~3)是传统机器学习算法,均使用梯度提升决策树作为基分类器;4)~7)是基于RNN的深度学习模型。
胶囊维数对动态路由过程有重要影响,胶囊维数过少可能无法有效捕捉文本语义,胶囊维数过多可能导致噪声出现。因此,本文对动态路由的胶囊数对实验结果的影响进行了探索,结果如表2 所示。在RCV1-V2 和Slashdot 上,低层胶囊数/高层胶囊数为32/16时取得较好效果。而在AAPD 数据集上,低层胶囊数/高层胶囊数为16/8时取得较好效果。就平均文本长度,RCV1-V2 和Slashdot 数据集中文本更短小,可能需要更多的胶囊进行语义信息捕获。此外,并不是胶囊数越多,性能越优,也出现了胶囊数增多,性能不变甚至下降的情况,这可能是因为多余胶囊捕获了额外的无关语义信息,从而对计算结果造成负影响。
表2 胶囊数对实验结果的影响Tab.2 Effect of the number of capsules on experimental results
在RCV1-V2、AAPD 和Slashdot 数据集上,分别利用F1 值和HL两个性能指标,测试了上述6 个基准模型以及本文提出DR-SGM 模型,实验结果如表3 所示,“—”表示不可获取。其中F1值越大,反映模型性能越好,HL则正好相反。
表3 实验结果Tab.3 Results of experiments
从表3 可以看出(最佳结果在表格中用下划线标出),在RCV1-V2、AAPD 以及Slashdot数据集上,DR-SGM 模型的大部分评估标准相对于基准模型都取得了最优的效果,只有在AAPD 数据集上,其HL比set-RNN 模型略逊一筹,低了0.4%。然而相对于SGM+GE 模型(在其基础上改进),在RCV1-V2 数据集上,其F1 值提升了1.25%,HL提升了5.3%;在AAPD 数据集和Slashdot数据集上,其F1值和HL均有一定程度提升。
从实验结果看,深度学习方法(包括本文提出的DR-SGM以及CNN-RNN、SGM 和set-RNN)相较传统方法(包括BR、CC和LP 等),无疑有着更加优秀的结果。传统方法非常依赖于特征工程,而复杂的特征工程往往带来繁琐的工作和人工操作错误的风险。对于一些复杂的情况,传统方法由于特征工程的局限常常无法进行处理。而深度学习方法可以自动提取特征,完全消除了特征工程带来的负面影响。此外,数据集Slashdot、RCV1-V2、AAPD 包含标签数分别为291、103、54。在各种分类方法下,相对于其他数据集,拥有近三百个标签的Slashdot分类结果显然十分不理想,其原因可能是样本数量与标签量的不匹配。Slashdot的标签数量是RCV1-V2的近3倍,AAPD 的5 倍多,但是其样本量只有RCV1-V2 的约1/30,AAPD 的约1/2,能够训练的样本数量不足以匹配庞大的标签数,同时文本长度短,能捕捉的语义信息少,因而造成分类评价结果差。然而数据集RCV1-V2 的标签数是AAPD 的约2倍,其分类效果却明显优于AAPD 数据集,这可能是因为RCV1-V2 数据集的样本数更多,大约为AAPD 的15 倍,因此模型能够学习到的内容更多,从而分类效果更好。由此可见,多标签文本分类方法对样本数量的依赖性很大,同时,标签数量和文本长度也是影响分类效果的重要因素。
就各种深度学习方法而言,由于在多标签文本分类任务中,标签相关性是极其重要的信息之一,捕捉标签相关性对多标签文本分类具有重大意义,而CNN-RNN模型中并没有考虑到标签相关性问题,但DR-SGM模型通过LSTM顺序结构处理标签序列,每一个生成的标签都充分考虑了之前标签的信息,从而取得了比它更好的效果;DR-SGM 模型是基于SGM+GE模型进行优化,相对于原始的SGM 模型或SGM+GE 模型都有一定性能上的提升,其原因可能在于,动态路由方法能够额外捕获文本中部分-部分、部分-整体的位置信息,同时因为动态路由聚合层共享了全局参数,削弱了前一时刻的文本信息对后面时刻的影响,从而降低RNN 循序结构造成的累积误差。set-RNN模型通过数学方法修改模型训练的方法和目标,使其能发现最佳标签顺序,误分标签数较少,Hamming Loss指标表现更好,但是,相对于DR-SGM,它在有效捕捉文本语义方面略微逊色,因此F1值结果略逊一筹。
综上所述,无论是和传统方法相比,还是和现有的深度学习方法相比,DR-SGM都取得了有竞争力的结果。
本文沿用将序列生成模型应用于多标签文本分类的思想,将多标签文本分类看作一个标签序列生成问题,不同于以往的解码器结构,本文借鉴胶囊网络思想,将动态路由应用于序列生成中的解码器结构,构建了DR-SGM 模型。在Encoder层,通过使用BiLSTM+Attention 结构最大限度捕捉语义信息;在Decoder 层,增加了动态路由聚合层聚合文本信息,从而额外捕获了文本中部分-部分、部分-整体的位置信息,同时通过在全局范围内共享动态路由参数,在一定程度上减轻了序列生成产生累积误差的负面影响,而且,在设计的动态路由算法中,为解决路由过程中类别稀疏问题,采用sparsemax 代替Softmax;为加强低层胶囊到高层胶囊的连接强度,引入权重系数w在动态路由过程进行迭代加权。此外,面向多标签文本分类领域,制定了基于DR-SGM 的多标签文本分类算法,实验结果表明,相比7 个基准模型,本文设计的DR-SGM 模型取得了较好的分类效果。
在多标签文本分类领域,仍然有许多问题值得探索,例如序列生成模型极度依赖标签顺序,而在现实生活中标签集合是无序的;同时多标签文本中往往存在大量样本不均衡的情况,对部分类别标签样本的偏向性会严重影响分类模型的分类效果。