基于Multi Focal损失函数的中文文本分类研究
2020-06-08曹泽炎
曹泽炎,郑 静
(杭州电子科技大学经济学院,浙江 杭州 310018)
0 引 言
随着社交媒体的广泛应用,互联网中文本数据量急剧增长,这些文本数据包含社会成员丰富的行为信息,通过对这些文本的情感分析可以更加深入地了解人们对国际时事、国内公共事件和个人生活模式的偏好,在舆论分析、资源推荐和法律挖掘中具有深远的影响。早期的文本分类方法主要是机器学习(Machine Learning,ML)方法和统计方法,如:毛伟等[1]使用链状朴素贝叶斯分类器(Chain Augmented Naive Bayesian Classifier,CA-NBC)对中文文本进行分类,得到良好的分类效果。Zhang D.W.等[2]基于词性和词典对分类文本进行特征选择,并使用改进的支持向量机(Support Vector Machine for Multivariate Performance Measures,SVMperf)对文本进行分类,虽然取得不俗的分类效果,但也存在对词典过于依赖的弊端。刘东启等[3]把自适应合成采样与支持向量机(Support Vector Machine,SVM)相结合,平衡每个类别的样本数量,解决了不平衡数据集带来的问题。深度学习(Deep Learning,DL)作为当下最热门的领域之一,在文本分类、自然语言处理领域也有不俗的表现。王儒等[4]提出语义聚类处理方法,在短文本数据集对话预测中取得了较好的结果。金占勇[5]基于长短期记忆网络(Long Short Term Memory,LSTM)+word2vec[6]模型对突发灾害事件网络舆情进行情感识别,结果优于卷积神经网络(Convolutional Neural Network,CNN)和传统机器学习方法。
情感分类任务分为显性情感分类和隐性情感分类。与显性情感分类的任务相比,隐性情感分类的任务更困难,而中文情感表达往往是隐性的。从情感表达的语言层面来看,汉语词汇没有形态变化,获取中文语义特征更加困难[7]。无监督神经网络模型通过从大规模语料库中学习得到词语的向量化表示形式,在许多自然语言处理中取得了重要进展,如word2vec模型训练捕获的词向量可以直观计算词语之间的异同。基于这一思想,本文使用word2vec模型训练获得词语的词向量,用于深度学习模型建立前的数据预处理工作。
现实中,不平衡数据集占有一定的比重,中美贸易战舆情评论数据集是典型的不平衡数据集,使用这种数据集进行建模往往存在部分类别的分类准确率较低的问题。Lin T.Y.等[8]提出Focal Loss函数(FL),通过降低分配给正确分类的损失来解决难分类类别准确率过低的问题,本文将FL的思想推广到多分类,采用Multi-Focal损失函数(MFL),并据此建立深度神经网络模型,使得模型在训练过程中把训练的重点放在错误分类的样本上,有效提升了分类器性能。
1 深度学习模型及Multi Focal损失函数
1.1 卷积神经网络
CNN与普通的人工神经网络(Artificial Nueral Networks,ANNs)的相似之处是均通过层层节点组织起来,其中每个节点都为一个神经元;不同之处在于相邻的层之间只有部分节点相连,可以把输入的内容转换为信息量更高的特征。CNN的网络结构主要由输入层、卷积层、池化层和全连接输出层组成。
对于处理文本的CNN而言,网络的输入是一个经过分词以及去停用词的文档,它是由一个个的词语组成,长度固定为L,即有L个词,每个词用词向量来替代,词向量由word2vec模型在预训练时设定,维数为D,也可以不预先映射好词向量而采用对每个词进行标号,再由嵌入层(EMBEDDING)来对独热编码(ONE-HOT)词向量进行词嵌入。但无论用哪种方法,最终输入的文档均为相同维度的矩阵X∈RL×D。
卷积层是CNN中最为重要的组成部分,与全连接层不同的是,卷积层中的每一个节点仅仅是上一层网络中的一小部分,文本处理通常采用一维卷积,卷积核w的长度为h,宽度等于词向量的维数D,即w∈Rh×D,卷积公式如下:
函数f为激活函数,j和k分别为矩阵的行和列,b为偏移,输出矩阵的形式为c∈RL-h+1,1,卷积核数量越多,输出矩阵变得越多,这些矩阵叠加起来形成的深度越深。
卷积层后连接一个池化层,它的作用是简化神经网络计算的复杂程度,压缩数据,提取主要特征。池化主要形式有平均池化和最大池化,本文将采用最大池化方法,池化不会改变矩阵的深度。池化的输出为:
cout=max{c1,c2,…,cL-h+1}
如果后面不再添加卷积层,则需要将数据平铺成普通的一维向量作为后面全连接层的输入。另外,在每一层中需要适当断开一定数量的神经元来避免过拟合。
1.2 长短期记忆网络
LSTM是循环神经网络(Recurrent Neural Network, RNN)的一种变体,普通循环神经网络通过分析信息的短期依赖关系来辅助当前决策,但无法解决长期依赖问题。很多监督学习任务中,LSTM往往比RNN表现更为出色。LSTM拥有“三门”的特殊结构,“三门”分别为输入门、遗忘门和输出门。遗忘门用来控制遗弃无用信息,根据当前时刻节点的输入xt、上一时刻节点的状态Ct-1以及上一时刻节点的输出ht-1来决定需要遗忘的无用信息。遗忘门公式定义如下:
f=sigmoid(Wfht-1+Ufxt+bf)
通过遗忘门以后,上一时刻的状态为f∘Ct-1,“∘”为哈达玛乘积,Wf,Uf分别为隐状态中遗忘门和输入的权重矩阵,bf为偏移。
输入门根据xt和ht-1来决定当前输入数据中哪些信息被加入到状态Ct-1和新生成的状态Ct。数据经过遗忘门之后,需从当前输入添加最新的记忆。输入门公式定义如下:
i=sigmoid(Wiht-1+Uixt+bi)
a=tanh(Waht-1+Uaxt+ba)
其中,Wi,Wa,Ui,Ua分别为输入门权重矩阵,bf为偏移。此外,通过输入门之后的输入为i∘a,与遗忘门得到的上一刻状态f∘Ct-1相加可得到新的状态:
Ct=f∘Ct-1+i∘a
在得到最新状态Ct后,结合ht-1和xt来决定当前时刻节点的输出:
o=sigmoid(Woht-1+Uoxt+bo)
ht=o∘tanhCt
Wo,Uo分别为输出门权重矩阵,bo为偏移。
若网络不再添加其他LSTM结构,则处理方式与CNN最后的操作相同。
1.3 Multi Focal损失函数
在处理难分类样本数据集和不平衡数据集时,采用常规损失函数搭建的神经网络模型往往得不到理想的模型评价,而F1得分是查准率和查全率的一个调和均值,仅在查准率和查全率都较高的情况下才能得到较高的F1得分,因此,选择F1得分作为实验结果的评价标准。基于交叉熵损失改进的Focal Loss能够很好地解决二分类任务中的难分类样本准确率较低的问题,本文根据Focal Loss的构造思路,将Focal Loss函数推广到多分类任务上,提出Multi Focal损失函数,用于解决多分类文本数据集中的难分类问题,提高分类器的准确率。
在二分类任务中,一般采用标准交叉熵(Cross Entropy,CE)作为神经网络的损失函数,其表达式为:
FCE(p,y)=-log2(pt)
而Focal Loss(FL)的表达式为
FFL(pt)=-(1-pt)γlog2(pt)
(1)
式中,(1-pt)γ作为难分类样本的调至系数,γ≥0,其工作原理为:当某样本被分错时,pt趋于0,故调至系数约为1,此时的FL与普通交叉熵一样,而在样本被分对的情况下,调至系数趋于0,FL也趋于0,对总损失函数的贡献很小。γ则是对调至系数做出一些调整,避免过大或过小。
FL减少正确分类样本带来的损失对总损失的贡献,从而解决二分类数据不平衡的问题和某一类别的难分类问题。根据这一思想,本文提出MFL函数用于解决多分类任务数据集不平衡问题和部分类别的难分类问题,但在多分类任务中对比的是预测和实际的概率分布,很难直观地用FL中pt的大小来体现误分问题,故本文使用的方法为:当样本被误判时增加对总损失的贡献,而没有误判时保持不变。因此表达式为:
(2)
2 实验与分析
2.1 数据预处理
本文通过网络爬虫获取搜狐新闻12个类别总计35 548条数据,12个类别分别是娱乐、财经、房地产、旅游、科技、体育、健康、教育、汽车、新闻、文化、女人。同时在微博、b站、美国之声爬取中美贸易战新闻评论,对应有3 634,13 130,3 566条数据,贸易战评论数据集均为不平衡数据集,人工将其标注成3类,分别为消极情感、中性情感和积极情感。首先对所有数据分词并剔除停用词。由于数据量较大,针对搜狐新闻数据,在本地训练word2vec模型需要花大量时间,故直接采用维基百科已训练完毕的word2vec模型的词向量,而微博、b站、美国之声等数据由于样本较少,且不像新闻文本那样正式,存在很多新颖的词语、句式,故使用gensim库中的models.word2vec接口对文本进行向量化处理,所有词向量维数均设置成128。本文不对数据进行复杂的特征选择处理,而是参考不同数据集文档分词后长度的中位数和众数给出合适的最大文档长度,并根据汉语语义,对超过限定长度的文档进行首尾截取,通过这种处理来降低分类器的负担。本文实验在处理器Intel(R) Core(TM) i5-7300HQ,win10操作系统下使用python3.7进行编程。
2.2 模型对比
测试用数据为搜狐新闻数据,采用分类器分别为朴素贝叶斯(Naive Bayesian Classifier,NBC),CNN,LSTM和加入了卷积层的长短期记忆网络CNN+LSTM,模型的查准率(Precision)、查全率(Recall)、F1得分(F1-score)如图1所示,模型的综合性评价指标如表1所示。
图1 分类器测试结果
图1中,共有4个子图,每个子图的横坐标为12个类别标签,纵坐标为百分数,每个子图有12个簇,对应数据的12个类别。从图1可以看出:财经、科技、新闻和文化类的F1得分较低,属于难判别类。
表1 模型微平均F1、宏平均F1及训练耗时
表1中,微平均F1是输入分类器的预测样本个数和预测正确的样本个数(无论类别)的比值,也称为准确率,宏平均F1为每个分类器中所有类的F1得分值取算术平均得到的值。从表1可以看出:CNN,LSTM和CNN+LSTM分类器的效果要优于NBC分类器。就分类性能而言,NBC垫底,但运行速度最快。LSTM分类表现最好,但是效率低下,CNN表现中规中矩,在较快的时间内取得不错的分类性能。CNN+LSTM运行速度比LSTM快不少,和CNN相比,分类效果并没有明显的提高。
2.3 基于MFL函数的模型优化
图1中得到评估指标最高的模型为LSTM,将它作为基础模型,把MFL与Logcosh函数(LC)和CCE进行对比,使用的实验数据为搜狐新闻文本数据集和中美贸易战数据集,分别为部分类别F1得分较低的数据集和不平衡数据集,实验结果如表2和表3所示。
表2 基于搜狐新闻数据集的模型F1得分对比
通过表2可知:对于搜狐新闻数据集而言,在原LSTM模型(LSTM+CCE)中分类结果较差的财经、科技、新闻类别的误判率有较为明显的降低,分别降低了5%,6%,8%。
表3 基于贸易战评论数据集的模型F1得分对比
热点话题评论问题(b站、微博、美国之声上的贸易战评论)不比新闻文本,不同的类别罕有明显的关键词,而且由于人工分类的原因,标注可能存在问题,分类性能存在一定的缺陷。
通过表3可知:b站评论中,消极情感的识别率较低;微博评论中,中性情感识别率不高;美国之声评论中,积极情感识别率较弱。采用MFL分类器对模型的弱项有明显提高,难分类类别的F1得分也得到了提升,例如微博数据集中消极类别的F1得分比LSTM+CCE提高了8%,美国之声数据集的积极类别的F1得分比LSTM+CCE提高了9%。综上所述,改进的MFL函数不仅能解决平衡数据集中部分类别的难分类问题,也能较好地解决不平衡数据集带来的问题。
3 结束语
Focal Loss通过对标准交叉熵添加加权因子可使得模型在训练时更专注于难分类的样本,本文提出Multi Focal Loss多分类交叉熵损失函数,充分考虑多个难分类样本对损失的影响,有效提升了多类别文本分类任务中难分类类别的分类准确率。在下一步研究工作中,将更加注重不同损失函数对模型整体分类评价指标的提升。