任建华,李 静,孟祥福
辽宁工程技术大学电子与信息工程学院,辽宁葫芦岛 125105
文本分类是机器学习领域最经典,最重要的任务之一。文档分类属于文本分类问题。文本分类的主要任务是将给定的文本集合划分到已知的一个或者多个类别集合中。文档分类是组织文档进行检索、分析和整理所必需的,目的是为文档分配标签。近年来,由于深度学习的有效性,分层结构在自然语言处理(natural language processing,NLP)领域得到广泛的应用。它们被用于各种各样的任务中,例如语言建模[1]、情感分析[2]和主题分类[3]。从词汇角度来看,单词内部的深层结构为更深层次地处理和更好地理解整个句子提供了额外的信息[4]。所有的分层结构都有一个共同点:分别在单词级和句子级两个层次上使用编码器,按照自底向上的方式学习对输入文本的表示。
最近NLP 的一个趋势是使用注意机制来建模信息依赖关系,而不考虑输入序列中单词之间的距离。深度学习中的注意机制具有选择特性,它通过降低数据维度,让任务处理系统更专注于找到输入数据中与当前输出显著相关的有用信息,从而提高输出的质量[5]。例如,Yang 等人[3]提出了分层注意力网络,用分层结构反映文本结构,在单词和句子级分别使用注意力机制,捕捉不同层次的重要信息,提升了文本分类的性能和准确度。Zhou 等人[6]提出混合注意力网络来解决短文本分类问题。Pappas等人[7]基于多语言层次注意力网络研究文本分类问题。Tarnpradab 等人[8]基于层次注意力网络来研究在线论坛的摘要提交问题。这些模型背后的根据是,并非文本的所有部分都同等重要。此外,确定相关部分涉及到建模单词之间的交互和重要性,而不仅仅是它们在文本中的存在。
然而,在大多数用于文档分类的NLP 任务中,所提出的模型并没有有效地将文档结构知识整合到体系结构中,文档中的每个句子被独立编码,并没有充分考虑上下文信息。也就是说,当处理一篇文档中给定的一个句子时,忽略了其他的句子,没有充分考虑句子与句子之间的信息。这种缺乏联系的选择显然不是最好的。例如,经典的分层注意网络(hierarchical attention networks,HAN)在处理一篇包含很多条句子的文档时,其中每个句子的开头都重复了相同的高度负面的特征(如,“terrible weather”),因为它独立地对每个句子进行编码,没有充分考虑句子与句子之间的信息,所以HAN 每次都把大部分的注意力预算花在最突出的地方,即对于文档中的每条句子都会捕获高度负面的特征“terrible weather”,结果重复捕获了文档中很多相同的信息,而忽略了文档的其他方面。事实上,在HAN 中,位于第二级的句子编码器通过为句子分配重要性得分,已经捕获了一些上下文的概念。但是,由于第二级的句子向量早已经形成,再对它们修改已经太晚。因此,句子编码器仅能对句子表示进行排序,不能解决类似高冗余的问题。在这种情况下,无论句子得分怎么样,都不会发现文档中重要的子主题或细节。
受以上研究启发,本文提出了一种用于文档分类的新方法,上下文感知与层级注意力网络的文档分类方法(document classification method based on context awareness and hierarchical attention network,CAHAN)。该方法通过在单词级注意机制中引入上下文向量使单词级编码器基于上下文信息做出注意决策,从而所生成的句子向量全面捕获了句子之间的上下文信息,而不仅仅依赖于双向的句子编码器,采用门控机制来明确地决定应该考虑多少上下文信息,使用GRU 解决了传统循环神经网络(recurrent neural network,RNN)在对序列数据进行编码时经常会遇到的长距离依赖消失的问题,同时采用单词-句子层次的注意机制有选择地将注意集中于文本句子的关键部分来提高模型的性能。本文对所提出的方法进行了评估,并将其结果与经典的模型进行了比较,在对比实验结果上展示出本文提出模型的有效性。
近年来随着深度学习在计算机视觉[9]和语音识别[10]等领域的成功应用,基于深度学习的模型越来越成为NLP 领域中的文本分类的主流方法。卷积神经网络(convolutional neural networks,CNN)能够通过不同窗口大小的滤波器从局部文本中提取深层特征。Kim[11]提出了TextCNN 模型,利用CNN 来提取句子中类似N-grams 的关键信息。尽管它们在很多NLP任务里都有不错的表现,但是CNN的局限在于卷积尺寸是固定的,对定长句子的处理是非常有帮助的,而对变长句子处理不够理想。RNN通过使用带自反馈的神经元,能够处理任意长度的序列。长短时记忆网络(long short-term memory,LSTM)是一种特殊的RNN,能够根据全局上下文记忆或忽略特征[12]。门控递归单元(gate recurrent unit,GRU)[13]是LSTM的一种变体,能够很好地处理远距离依赖问题。在NLP 领域中,文本往往具有时序信息,在获取文本语义特征时结合了时序特征通常会在一定程度上促进分类性能的提升。为了克服递归单元不能很好地处理远距离依赖问题,本文引入如图1 所示的GRU[14]。
Fig.1 Gate recurrent unit图1 门控递归单元
GRU 是循环神经网络的一种。它是为了解决长期记忆和反向传播中的梯度等问题而提出来的。GRU 的输入输出结构与普通的RNN 相似,其中的内部思想与LSTM 相似。不同于LSTM 的是GRU 内部少了一个门控,参数比LSTM 少,结构上GRU 比LSTM 简单,但是也能够达到与LSTM 相当的功能。考虑到硬件的计算能力和时间成本,实验中选择GRU,并且相比之下更容易进行训练,训练速度更快,更容易收敛,能够在很大程度上提升训练效率。
如图1 所示的GRU 使用一个门控机制跟踪序列状态。通过使用重置门控rt和更新门控zt共同控制如何将信息更新到状态。在时刻t,GRU 计算得到的新状态为:
式中,⊙表示对应元素相乘,通过之前单元状态ht-1和当前单元状态之间的线性插值,计算得到新的序列信息ht。更新门控zt不仅决定了可以保留多少过去的信息,还决定了可以添加多少新的信息。更新门控zt的计算式为:
其中,σ为sigmoid 函数,通过此函数可以将数据变换为[0,1]范围内的数值,从而来充当门控信号。当输出值为0 时表示没有信息通过,当输出值为1 时表示所有信息都通过。xt是时刻t的序列向量。当前单元状态的计算方式类似于传统的递归神经网络:
其中,重置门控rt用于控制忽略前一个单元状态信息的程度。重置门控的值越小,先前的单元信息越容易被忽略。如果rt为0,那么它将忘记之前的所有状态。重置门控的计算式为:
深度学习中的注意力机制具有选择性。注意力机制的研究动机来源于人类的注意力机制,最初是应用在图像处理领域,目的是为了让神经网络在处理数据时能将重点集中于某些信息。在图像和NLP问题中,可以看成图像或者文本中不同部分的重要性体现。
注意力机制首次在机器翻译模型中被引入,采用编码器译码器框架和注意机制,对外文单词进行翻译前的原语言参考词的选择,之后注意力机制在NLP 领域得到广泛的应用。胡朝举等人[15]将注意力机制和LSTM 结合解决特定主题的情感分析任务。Wang 等人[16]基于分层注意力网络来研究视频的行为识别。Wang 等人[17]提出了实体增强层次注意力神经网络,从生物医学文本中挖掘出蛋白质的相互作用。Gao 等人[18]基于分层注意力网络,改善了非结构化癌症病理报告中的多信息提取任务的效果。Yan等人[19]提出了分层多尺度注意力网络,解决了计算机视觉领域的动作识别问题。由此可见,注意力机制能够有效地突出重点,改善了传统模型对于输入数据同等看待的弊端,加入注意力机制的模型只保留对于当前任务有用的关键信息同时舍弃无用的信息,能够更加深入挖掘文本深层语义,有效地优化了文本特征向量。
本文提出模型的体系结构如图2 所示。该模型由多个层次组成:输入层、单词级编码器、单词级注意机制、句子级编码器、句子级注意机制和输出层。接下来的部分将对各个不同的层次进行详细阐释。
Fig.2 Architecture of CAHAN model图2 CAHAN 模型的体系结构
假设一篇文档中有L条句子si,每个句子中包含Ti个单词,wit表示第i个句子中的第t(t∈[1,T])个单词。即有:定义文档X∈RL×Ti×d为L个句子(s1,s2,…,sL)的序列,每个句子si是一个Ti×d维的单词向量(xi1,xi2,…,xiTi∈RTi×d)序列。
为了得到模型可以识别的输入,需要对输入文档进行向量化。因此,首先对文档进行分词处理,然后使用Word2Vec 预训练的模型嵌入词向量,得到低维稠密的词向量。这样,可以得到每个单词的输入向量。给出一个有单词wit的句子,通过一个嵌入矩阵We将单词嵌入到低维向量中,得到每个单词的嵌入向量:
基于单词级的Bi-GRU 层的任务是实现单词的序列化表示。为了融合序列的上下文信息,模型采用Bi-GRU 获取单词的高层语义表示。Bi-GRU 能够很好地处理远距离依赖。例如,冀文光[20]利用Bi-GRU 解决了传统RNN 在对序列数据进行编码时常常会面临长距离依赖消失的问题,GRU 能够有效地处理文本序列数据,Bi-GRU 则充分地兼顾了文本的上下文信息。将GRU 作为序列编码器的基本构建模块,通过单词的嵌入向量xit和之前的隐状态ht-1可以得到当前的状态ht,如式(6)所示。通过将xit输入到Bi-GRU 网络获得每个单词的隐藏状态构造单词级编码器,最后第i个句子中的第t个单词的表示为两个方向输出的连接,如式(7)。此时的hit总结了以单词wit为中心的整个句子的信息:
其中,GRU(,,)函数为编码过程的缩写,θ表示GRU的所有参数。
单词级双向GRU 对输入句子si进行处理,返回隐藏状态序列(hi1,hi2,…,hiTi)。
基于单词级的注意力层使用注意力机制得到每个单词与任务的相关程度,以得到相应的句子表示。具体来说:该模型将单词的重要性作为对齐向量eit与单词级上下文向量uw∈R2ds的相似性进行度量,并通过softmax 函数学习归一化的重要性权重αit,如式(8)和式(9)所示。之后,通过对基于权重的单词表示加权求和得到句子向量si,如式(10)所示。
其中,tanh 函数将值域压缩到[-1,1]中,softmax 函数对eit进行数值转化,通过归一化,将原始计算数值整理成所有元素权重之和为1 的概率分布,同时也通过softmax 的内在机制更加突出重要元素的权重,uw是一个随机初始化的单词级上下文向量,模型利用它计算出对应每个单词的任务权重αit,以此来体现单词与任务的相关程度。
正如前面所阐述的,文档中的每个句子被独立编码,没有考虑任何上下文信息。双向编码器虽然能考虑到所编码句子的相邻句子,但它仍然集中于当前所编码的句子,并没有有效地将文档结构知识整合到体系结构中。为了解决这一问题,在单词级注意机制中引入一个上下文向量ci,将其整合进eit的求解中,即在计算单词对齐系数时引导模型:
这里,采用递归法(CAHAN-RNN)和求和法(CAHAN-SUM)两种方式来求解上下文向量ci,接下来的2.3.1 节和2.3.2 节将分别阐述这两种求解方法。
2.3.1 CAHAN-RNN 求解ci
递归求解法就是在时间步长上简单地使用句子级编码器的表示作为上下文向量。例如,在生成第i条句子的表示时,将前面的i-1 条句子的信息考虑进来。
通过合理的设计,hi-1概括了句子向量(s1,s2,…,si-1)的所有信息,特别是最近时间步长上的信息。如果句子足够长,那么最终GRU 也将忘记开始句子向量的信息。然而,在实验中,使用的都是相对较短的文档,因此可以假设句子级编码器生成的表示能够成功地对整个序列进行表示。
2.3.2 CAHAN-SUM 求解ci
从信息论的角度来看,求和可以跟踪所有的信息。为了获取更为完整的上下文信息,采用求和法求解上下文向量ci。求和法求解上下文向量ci就是在求解当前句子si的向量表示时,将前面生成句子向量(s1,s2,…,si-1)的表示考虑进来,并对它们进行求和作为当前句子的上下文向量,即:
门控给了注意力机制更多的表现力。事实上,上下文信息并不总是同等重要的,需要视具体的情况而定。为了让模型在做出对齐决策时能够明确地决定应该考虑多少上下文信息,进一步对式(11)进行了修改:
其中,λ是由以单词的表示和上下文向量为输入的可训练机制生成的,sigmoid 激活函数起到过滤作用,确保将其所有实体压入[0,1]区间内。
从优化的角度来看,λ防止它将tanh 推到非常小的梯度区域,也有调节上下文向量大小的理想效果。因为上下文向量ci在文档的开头或末尾会变大,所以这对于CAHAN-SUM 特别有用。
基于句子级的Bi-GRU 层的任务是通过GRU 实现句子的序列化表示。Bi-GRU 神经网络实现从两个相反的方向获取信息,有利于从整体上捕捉句子的长依赖关系以及文本的深层语义表达。类似于单词级编码器,在句子级,将单词级编码器的输出(L为文档中句子的数量)输入Bi-GRU,并连接i∈[1,L])得到第i个句子的表示hi,即:
由于不同的句子对一份文档的组成有不同的贡献,因此有必要为它们分配不同重要性。为了达到这个目标,再一次使用注意机制,得到每个句子与任务的相关程度,进而以对应的文档表示,即文档向量:
其中,该模型将句子的重要性作为对齐向量eit与句子级上下文向量us的相似性进行度量,并通过softmax 函数学习归一化的任务权重αi,如式(17)和式(18)所示。式(19)表明,文档向量v是通过基于注意力机制的加权求和得到的,它总结了文档中所有句子的信息。
通过式(19)得到的文档向量v可以看作文档的高级表示,它可以作为最终文档特征向量用于文档分类。通过softmax 函数对这些向量进行文档分类,得到分类标签的概率分布。softmax 分类器的前向传播和训练损失函数分别如式(20)和式(21)所示:
训练过程中,使用交叉熵损失函数作为优化目标函数:
其中,N表示分类的类标签数目,yj表示第j个位置上的真实文档类别概率分布,lb表示以2 为底的对数函数,Pj表示第j个位置上模型预测的文档类别概率分布。
本文实验环境为Ubuntu 16.04 LTS 操作系统,Intel®Corei7-6800K@3.40 GHz CPU,16 GB 内存,显卡GIGABYTE GeForceGTX1080Ti。实验基于深度学习框架Tensorflow1.12.0 实现,实验所用开发语言为Python3.6。为了验证本文所提出模型的分类性能,实验中使用IMDB 和Yelp2013 的公开数据集进行了测试。在本章中,首先介绍模型使用的数据集,然后介绍对数据集的预处理以及参数的设置,最后介绍本文提出的模型与现有一些模型的对比,并对结果进行分析。
本文使用两个来自不同领域的公开数据集验证CAHAN 模型的性能。各个数据集的统计信息如表1所示。本文将80%的数据用作训练集,10%的数据用作验证集,剩余10%的数据用作测试集。
Table 1 Statistical information of data sets表1 数据集统计信息
IMDB(Internet Movie Data Base)是英文影评数据集:来自Diao 等人[21]使用的数据集,由英文电影评论构成,总共包含5 万条评论,分为积极和消极两类,属于二分类的情感分类问题。IMDB 情感分类的任务就是给定一条文本,预测它的情感是积极的还是消极的。
Yelp2013:评论文本来自2013 年Yelp 评论挑战赛,与Tang 等人[2]使用的Yelp2013 数据集信息一致,其中评论级别总共有5 个:1~5,级别越高越好。数据集统计信息如表1 所示。
在实验中,本文对数据集进行了预处理操作。由于在文档分类中,停用词的作用非常小,几乎不会影响整个句子的含义。因此,将类似the、a、an、of 等的停用词删除。本文在读取文档时,将每一篇文档切分成句子集合,并使用斯坦福的CoreNLP[22]工具标记每个句子。在构建词汇表时,只保留出现次数超过5 次的单词,将低于5 次的单词采用一个特殊的字符“UNK”替换。通过在训练集和验证集上训练一个无监督的word2vec 模型得到词嵌入,然后使用词嵌入来初始化向量空间We。
为了验证本文所提算法的有效性,使用精准率Precision、召回率Recall、F1-score 和Accuracy 作为评价指标,来衡量分类的整体效果。用r表示预测为正例,实际为正例;s表示预测为负例,实际为正例;t表示预测为正例,实际为负例;z表示预测为负例,实际为负例。如表2 所示。
Table 2 Confusion matrix of classification results表2 分类结果混淆矩阵
根据表2,可以得到如下计算式:
实验过程中模型的超参数在验证集上进行微调,而最终的算法性能比较在测试集中进行。本文中,GRU 网络的单元个数设置为50,那么Bi-GRU 网络生成的向量维数为100。随机初始化的单词上下文向量uw和句子上下文向量us的维度设置为100。对于模型的训练,将词嵌入的维度设置为100,采用大小为64 的批处理,采用动量为0.9 的随机梯度下降法(stochastic gradient descent,SGD)来训练所有的模型,并且在验证集上使用网格搜索来选择最佳学习率。此外,为了防止网络神经元出现共同适应性,本文还使用大小为0.5 的dropout 来随机丢弃网络中的神经元。经过多次调整,选取一组最优模型参数,如表3 所示。
Table 3 Model parameter setting表3 模型参数设置
将提出的模型与以下多种基线模型进行对比:
(1)TextFeatures:基于传统方法的模型,人工设计文本情感特征,输入到分类器SVM(support vector machine)中[23]。
(2)TextCNN-word:基于单词的CNN 模型,该模型采用不同大小的卷积内核来处理文档,模型的滤波器数目和滤波器大小是固定的[11]。
(3)LSTM:将整个文档作为一个单独的序列,所有单词隐藏状态的平均值作为分类的特征。
(4)Attention-based LSTM:基于注意力机制的LSTM。
(5)Attention-based Bi-LSTM:基于注意力机制的双向LSTM。
(6)HAN:分层注意神经网络模型,分别基于注意力机制和GRU 构建句子水平和文档水平的层次特征向量表示[3]。
(7)MHAN:用于多语言文档分类的层次注意网络[3]。
(8)HAN*:表示根据HAN 所提出的方法,通过层次注意网络对在线论坛讨论进行提取总结[3]。
本文的模型和现有的模型在所有数据集上的实验结果在表4 和表5 中给出。从实验数据可以看出,本文设计的CAHAN-RNN 和CAHAN-SUM 模型可以有效地提高文档分类的效果。CAHAN-RNN 和CAHAN-SUM 采用的分别是递归法和求和法求解上下文向量的上下文感知与层级注意力网络方法。这些结果表明,本文方法在所有的数据集上给出了最好的性能。
Table 4 Classification results of data set IMDB表4 数据集IMDB 的分类结果%
Table 5 Classification results of data set Yelp2013表5 数据集Yelp2013 的分类结果%
下面对表4 和表5 中的实验结果做具体分析。
在两个数据集上,本文提出的模型都显示出了相当大的改进。对于比较小的数据集IMDB,本文所提出模型的精度比基线模型TextFeatures、CNN、LSTM、Attention-based Bi-LSTM 和MHAN 至少高出了8.2 个百分点、5.4 个百分点、7.1 个百分点、4.9 个百分点和2.6 个百分点。基线模型HAN*的效果最好,但本文所提出模型效果至少超过了它1.4 个百分点。对于大数据集Yelp2013,本文提出的模型的精度比基线模型TextFeatures、CNN、LSTM、Attention-based Bi-LSTM 和HAN*至少高出了8.3 个百分点、4.9 个百分点、7.5 个百分点、3.8 个百分点和1.4 个百分点,比基线模型中表现最好的MHAN 高出了1.0 个百分点。同时,本文所提出模型的精准率Precision、召回率Recall和F1-score也有很大的提高。
从表4 实验数据可以看出,与传统机器学习模型TextFeatures相比,基于浅层神经网络的模型TextCNNword、TextCNN-char、LSTM 所占优势并不那么明显,它们的Accuracy值相差并不大,尤其是在大文本分类方面体现更为明显。例如,TextCNN-word、TextCNNchar 与LSTM 在IMDB 数据集上的Accuracy 值分别为82.2%、81.1%、80.5%,在Yelp2013 数据集上的Accuracy 值分别为83.6%、82.3%、81.0%。而Text-Features 方法在两个数据集上的Accuracy 值分别为79.4%和80.2%。
通过表4、表5 观察到,分层表示模型对于模型性能改善起到非常大的作用。例如,TextCNN-word、TextCNN-char 与LSTM 三个没有应用分层表示特征的模型与应用分层表示网络的模型HAN*进行对比,Accuracy 值得到明显提升。具体来说,HAN*较TextCNN-word 在IMDB 数据集和Yelp2013 数据集上的Accuracy 值分别提升了4.0 个百分点和3.5 个百分点。这表明利用词语-句层次结构,更有效地利用了文档的组织结构。对于时序特征以及层级注意力机制的性能改善也可以通过表4、表5 中对应模型对比发现,这同时也表明模型采用词语级注意力机制和句子级注意力机制有效地提取了强相关关系,提升了文档分类的准确度。
在两个数据集中,本文提出的上下文感知与层级注意力网络的方法CAHAN-RNN 和CAHAN-SUM较层级注意力网络HAN、MHAN 和HAN*都显示出了相当大的改进。例如,模型CAHAN-RNN 在IMDB数据集和Yelp2013 数据集上的Accuracy 值分别为87.6%和88.5%,CAHAN-SUM 在两个数据集上的Accuracy 值分别为91.9%和93.2%。而在IMDB 数据集上,分层注意网络中表现最好的模型HAN*的Accuracy 值为86.2%。在Yelp2013 数据集上,分层注意网络中表现最好的模型MHAN 的Accuracy 值为87.5%。可以看出,在两个数据集上,引入上下文感知层级注意力网络的方法较传统的分层注意力网络模型MHAN 和HAN*至少提高了1.0 个百分点和1.4个百分点。这些积极的结果提供了一个线索,即引入上下文向量ci并调节其大小确实是有益的。在单词级注意力机制中引入上下文向量ci使得在求解当前句子的表示时更全面地捕获了文档的上下文信息,门控使得注意力机制准确地决定应该考虑多少上下文信息,给模型提供了更多的表现力,也很有帮助。
针对本文提出的模型CAHAN-RNN 和CAHANSUM,可以看到模型CAHAN-RNN 的表现相对较差,CAHAN-SUM 取得了最佳的性能。例如,在IMDB数据集和Yelp2013 数据集上模型CAHAN-SUM 比CAHAN-RNN 分别高出了4.3 个百分点和4.7 个百分点。在此之前,相同的方法曾被用于对话行为分类,并获得了很好的结果。这可能是因为:与语音转录中的话语不同,文档中的句子不是按时间顺序排列的。换句话说,距离当前句子很远的句子并不一定比距离较近的句子更不相关。因此,平均考虑每个句子比通过RNN 强加一个隐式时间衰减要好。因此,CAHAN-SUM 的性能要更好。
分类的准确度是评价模型效果最重要的指标,但是训练过程中的消耗也是一个重要的指标。因此,实验过程中还比较了几种具有较高分类精度的模型的训练时间,如表6 所示。
Fig.6 Training time of model表6 模型的训练时间h
训练时间实验是在单机下操作的,系统为Ubuntu 16.04 LTS,Intel®Corei7-6800K@3.40 GHz CPU,显卡GIGABYTE GeForceGTX1080Ti。由表6 可知,对于IMDB 数据集,基线模型至少需要训练2.00 h 才能实现模型收敛,而本文提出的模型CAHAN-RNN 和CAHAN-SUM 分别需要1.00 h 和1.25 h。类似地,对于Yelp2013 数据集,本文所采用的基线模型至少需要训练3.45 h 才能实现模型收敛,而本文提出的模型CAHAN-RNN 和CAHAN-SUM 分别需要2.00 h和3.00 h。由此可见,本文提出的模型在训练阶段具有较快的收敛速度,可以有效地减少训练时间的消耗。
本文针对文档分类问题,提出了一个新的上下文感知与层级注意力网络的文档分类方法(CAHAN),通过在单词级注意力机制中引入句子上下文向量全面地捕获了句子之间的信息,并利用门控机制来准确地决定上下文信息的多少,提高了文档分类的准确度。采用Bi-GRU 表示文档中上下文和单词序列的语义信息,同时利用注意力机制考虑文本中不同单词和句子的重要性。实验结果表明,该模型在现有的公开可用的数据集中均优于所比较的模型。此外,训练时间大大减少。CAHAN 模型性能有待继续提升,后续的研究工作将进一步在此基础上对网络结构进行优化。