APP下载

基于改进胶囊网络的文本分类

2020-09-29尹春勇

计算机应用 2020年9期
关键词:胶囊卷积向量

尹春勇,何 苗

(南京信息工程大学计算机与软件学院,南京 210044)

0 引言

文字作为传播文化和沟通感情的桥梁,在人类社会发展的道路上一直起着至关重要的作用。随着网络的发展,大量的文字信息走进大众的生活,新闻、微博、短信、网络点评等不同形式的文本大量地涌现。文本信息中蕴含了很多重要信息,对文本的处理主要包括文本检索、翻译、文本分类等。如何快速而准确地获取文本信息,文本分类技术发挥着重要的作用。

文本分类是指,对于给定的一些文本集D={d1,d2,…,dn}和一些类别C={c1,c2,…,cM},如何利用分类模型ƒ将D中的文本映射到C中的某一个类别中。例如将淘宝的评论分为好评与差评;微博评论分为开心、愤怒、伤心等情感类型;新闻分为体育新闻、娱乐新闻、教育新闻、军事新闻等。文本分类大致经过了3 个阶段:第1 阶段代表人物是Maron 和Borko,他们在20世纪60年代早期就提出了用标引词代替文本,根据标引词在类中出现的概率来确定类别,再将多个标引词用少数因子来代表;第2 阶段出现在20 世纪60 年代中期到70 年代中期,这一阶段主要是探索各种可用的分类方法如图论、统计、矩阵法等;第3阶段就是现阶段,将机器学习用于文本分类。

文本分类主要分为文本预处理和文本分类两大部分。预处理就是将文本进行分词,使得文本变成一个一个词组成的数组,由于有一部分词没有实际意义,比如“的”“了”“在”“是”“地”等,这就需要建立停用词库,将这些停用词放词库,进行分词时,再将它们全部去除,这样可以降低数组的维度,增强分类效果。将文本进行去停用词后,所得的文本数组维度还是太高,这就需要对词进行特征选择,选择出现频率高或对文本类型具有意义的词,能够有效地降低数组的维度,减少计算量。由于计算机无法识别文本类型的数据,所以还需要对文本进行建模,使文本类型数据转化成数值型数据。最后,就是选择分类器对文本进行分类,传统的机器学习方法如:王艺颖[1]和钟磊[2]使用的朴素贝叶斯(Naive Bayesian,NB),殷亚博等[3]和Liu等[4]使用了K-近邻(K-Nearest Neighbor,KNN),郭超磊等[5]使用了支持向量机(Support Vector Machine,SVM),姚立等[6]使用了随机森林(Random Forest);深度学习方法,如:Wei 等[7]使用了卷积神经网络(Convolutional Neural Network,CNN),Hu 等[8]使用了循环神经网络(Recurrent Neural Network,RNN),冯国明等[9]使用了胶囊网络(Capsule Network,CapsNet)等。

文本分类属于自然语言处理范畴,一般是使用机器学习进行分类操作的,所以提出了很多关于机器学习模型和模型的改进算法。文本分类中一个很重要的发展是由原来仅通过简单的提取关键字转变为通过理解语义和联系上下文而获取文本信息。主题模型能根据一个文本提取出多个主题[5],不受文本的位置和词语的数量影响。word2vec 对于文本分类来说是另一个重要的突破,Church[10]和薛炜明等[11]使用word2vec有效地解决了文本向量维度过大问题,通过CBOW(Continuous Bag of Words)或Skip-Gram模型,可以得到既定的词语和既定词语上下文中可能出现的词语,word2vec使得每个词语的向量表示具有了具体的意义。将word2vec 与CNN、长短记忆网络(Long Short-Term Memory,LSTM)、支持向量机(SVM)相结合有效地提高了分类速度,也提高了准确度。近几年又出现了胶囊网络,它在CNN的基础上进行了改进,用动态路由代替CNN中的池化操作。在实践中,胶囊网络更是适用于图片分类和文本分类。Zhao等[12]最先将胶囊网络用于文本分类,先使用一层卷积层对不同位置进行特征的提取,再使用两层胶囊层进行训练,最后使用全连接胶囊层输出每个文本类型的概率进行softmax分类。本文在原有的胶囊网络的基础上进行了改进:先使用一层卷积层对不同位置的特征进行提取;然后使用一层胶囊层对上层的卷积操作的标量输出替换为矢量输出,从而保留了文本的词语顺序和语义;再使用一层卷积层对不同位置的特征再次进行特征的提取,提取完成后,再次使用胶囊层。

1 相关工作

2011 年,Hinton 等[13]首次引入胶囊网络。其核心思想是使用胶囊来代替卷积神经网络中的神经元,使网络可以保留对象之间详细的姿态信息和空间层级关系。2017 年,Sabour等[14]在神经信息处理系统大会上发表论文,进一步提出了胶囊间的动态路由算法与胶囊神经网络结构。该论文介绍了一个在MNIST(著名的手写数字图像数据集)上达到最先进性能的胶囊网络架构,并且朱娟等[15]在MultiMNIST(一种不同数字重叠对的变体)上得到了比卷积神经网络更好的结果。张天柱等[16]将胶囊网络进行改进用于图像识别,在MNIST 数据集上准确率可达到99.37%。

胶囊网络与卷积神经网络不同的地方有:用向量胶囊代替卷积神经网络中的神经元、动态路由代替池化操作、Squash函数代替ReLU 激活函数。胶囊网络不同于卷积神经网络的三大部分是标量到向量的转化、Squash 压缩激活函数和动态路由。胶囊网络原理图如图1所示,其中,ui表示低层特征,wij表示低层特征与高层特征之间的关系,uj|i表示高层特征。

图1 胶囊工作原理示意图Fig.1 Schematic diagram of capsule working principle

1.1 从标量到向量的转化

卷积神经网络接收到神经元输入的标量后,将标量乘以权重,然后相加得到总和,最后将总和传递给一个非线性激活函数,生成一个输出标量,作为下一层的输入变量。其工作原理可用3个步骤描述:

1)将输入标量xi乘上权重wi;

2)对所有的xi×wi进行求和,得到S;

3)将S传递给非线性激活函数f(·),得到输出标量y。

胶囊网络不同于卷积神经网络的是,在进行加权求和时增加了一步。其工作原理可用4个步骤描述:

1)将输入向量ui乘上权重矩阵wij,得到了新的输入向量uj|i。

2)将输入向量uj|i乘上权重cj|i,其中cj|i由动态路由决定。

3)对所有的uj|i×cj|i进行求和,得到向量Sj。

4)用压缩激活函数Squash,将Sj转化向量vj。

1.2 Squash压缩激活函数

激活层就是对卷积层的输出结果做一次非线性映射。本文采用的是ReLU函数,表达式如式(1)所示:

当x大于0 时,ReLU 函数的导数恒等于1,所以在卷积神经网络中不会导致梯度消失和爆炸问题。若负数值过多,由式(1)看来,这部分的值就都为0,这导致了相应的神经元无法激活,但是可以通过设置学习率来解决。

胶囊网络使用的是压缩激活函数Squash,Squash 函数的公式如式(2)所示:

式(2)简写为vj=A·B,Squash 函数还有功能是使得向量的长度不超过1,而且保持vj和Sj同方向。其中A项可以看出Sj的模长越长,则A项的值越大,则Sj代表的特征就越强,输出值也就越大。B项是将Sj模长压缩为1。由式(7)看来,vj的模长在0~1,方向同Sj同一个方向。

1.3 动态路由

卷积神经网络的池化层又称为下采样或欠采样,用于特征降维,减少参数,还起着加快计算速度和防止过拟合的作用。主要有最大池化和平均池化两种方式。本文采用的是最大池化,原理图如图2所示。

图2 最大池化原理Fig.2 Maximum pooling principle

采用最大池化操作,通过调整池化窗口参数,提取出每张特征图中最具有说服力的局部最优特征,从而生成每一行是每一篇文本进行一次最大池化抽样的结果的矩阵。这样也起到约减参数的作用,提高了模型的适应性。

胶囊网络通过采用动态路由可代替卷积神经网络中的池化层,对输入的特征进行聚类,即相似特征越多,这类特征就越强,由此进行了一次特征选择过程,达到池化层特征选择的目的。

动态路由伪代码如下所示。

2 改进胶囊网络模型

胶囊网络最先开始用在图像上,Zhao 等[12]第一次将胶囊网络用在文本分类上,在多分类标签上的效果明显优于卷积神经网络和循环神经网络。

该模型主要分为4 个部分:第1 部分是一个标准的卷积层,通过多个不同的卷积核在句子的不同位置提取特征;第2部分为主胶囊层,该层是将卷积操作中的标量输出替换为矢量输出,从而保留了文本的单词顺序和语义信息;第3 部分为卷积胶囊层,在这一层中,胶囊通过与变换矩阵相乘来计算子胶囊与父胶囊的关系,然后根据路由协议更新上层胶囊层的权重;第4 部分是全连接胶囊层,胶囊乘上变换矩阵,然后按照路由协议生成最终的胶囊及其对每个类的概率。4 个部分中包括1层卷积层和3次胶囊层。

本文在Zhao 等[12]的模型基础上又增加了1 层卷积层,用来再次提取不同位置上的特征,使得特征提取更加地细致。基于改进胶囊网络的文本分类模型如图3所示。

图3 改进胶囊网络的文本分类模型Fig.3 Text classification model of improved capsule network

模型主要分成了5 层,分别是N-gram 卷积层、主胶囊层、卷积层、卷积胶囊层和全连接胶囊层。

2.1 N-gram卷积层

该层卷积层通过卷积在文本的不同位置提取N-gram 特征,若X为文本中的一条文本,其长度为L,词嵌入大小为V,即X的维度大小为L×V,Xi为文本X中的第i个词语,Xi的维度为V。设N-gram 滑动大小为K1,Wα为卷积运算操作的滤波器,则Wα的维度为K1×V。滤波器每次移动的单词窗口为Xi至Xi+K1-1,产生的特征为mα,其维度为L-K1+1,则每个单词特征mi的特征如式(3)所示:

其中:b0为偏置项;ƒ()为非线性激活函数。若有B个滤波器,即α=1,2,…,B,则所得的特征M的维度为(L-K1+1)×B。卷积操作工作原理如图4所示,其中,w1、w2、w3为u1、u2、u3的权重系数,b为偏置项系数,这里的u1、u2、u3为底层特征ui的具体举例。

图4 卷积操作工作原理示意图Fig.4 Schematic diagram of convolution operation working principle

2.2 主胶囊层

设胶囊的维度为d,pi为N-gram 产生的实例化参数,Mi为每个滑动窗口的向量,其维度为B,Wb表示为不同的滑动窗口的共享滤波器,其维度为B×d。生成胶囊P的维度为(L-K1+1)×d,则pi的表示如式(4)所示:

其中:g()表示非线性压缩函数;b1为胶囊的偏置项。对于所有的滤波器C来说,胶囊特征P可以表示为式(5)所示结构:

其中P的维度为(L-K1+1)×d×C。

2.3 卷积层

再次进行卷积操作时,可设置较少的滤波器的个数,一个滤波器提取一个特征,滤波器的个数减少后,特征的个数也随之减少,训练的维度就降低了,节约了时间成本。再次使用卷积操作更加细化了特征的提取过程,使得提取出来的特征更有利于文本的分类。

2.4 卷积胶囊层

卷积胶囊层的胶囊维度应与多标签文本分类的分类数量相关,每一层都代表了每一个类型的概率,而主胶囊层的胶囊维度可任意设置。

2.5 全连接胶囊层

卷积胶囊层的被压扁成一个胶囊列表,并送入到全连接胶囊层。

全连接层可以学习到局部和全局的特征,因为其输入部分为卷积层和动态路由的输出,卷积层提取的是局部特征,动态路由得到的是全局特征。全连接层的输出如式(6)所示:

其中:x为神经元的输入;hW,b(x)为输出;T为W的转置,将输出节点送入softmax分类器进行概率预测,完成文本分类任务。

3 实验与结果分析

3.1 实验数据

实验采用了两组数据集:一组做多标签分类;另一组做二分类问题。

多标签分类实验采用了搜狗实验室的中文新闻数据集,该数据集包括了429 819 条新闻,能够被标出类别的有320 045条新闻,共有13类,剔除掉2类因样本数不足的数据,最后保留了其中的11 类作为分类数据文本。每类新闻选择2 000条文本,训练集、验证集和测试集的划分比例为16∶4∶5。数据集分布如表1所示。

表1 数据集分布Tab.1 Dataset distribution

实验的预处理部分先将下载好的数据进行转码,然后给文本加上标签,分词选用的是中文文本采用的jieba 分词工具,由于有些新闻字数太多,为了减少维度的损失,固定文本长度为100个字符。

二分类实验选用了IMDB 数据集包含来自互联网电影数据库12 500 个正面电影评论和12 500 个负面电影评论,每个句子的长度都固定为150 个字符,如果长度大于150 个字符,则将超过的部分截掉;如果小于150 字符,则在最前面用数字“0”填充。

3.2 多标签分类实验

实验采用了python 作为算法的实现语言,由于CNN、LSTM 和CapsNet 是最常见的神经网络模型。所以,先比较CNN、LSTM和CapsNet三种相关方法的分类效果,再进行比较改进后的胶囊网络与Zhao 等[12]提出的胶囊网络的分类效果,实验最后加入word2vec进行文本向量建模,分析实验结果。

3.2.1 相关实验

在进行神经网络对比实验前,先对比了朴素贝叶斯、支持向量机、K-近邻这三种传统的机器学习方法,在多标签的数据集下,朴素贝叶斯的准确率为84.38%,支持向量机的分类准确率为84.41%,而K-近邻在K值为14 时的分类准确率仅为31.47%。实验证明:K-近邻明显地不适合应用于文本分类。其他两种传统机器学习的方法,朴素贝叶斯和支持向量机在分类结果上占取了很大的优势,不仅分类效果好,而且分类的时间较深度学习来说缩短了很多,但是需要人工进行特征构造,可扩展性差;而神经网络能够自动地学习构造特征,具有较强的适应能力。

CNN在搭建模型时,首先将文本处理成矩阵的形式,作为输入层的输入,本文将每个文本处理成100×200 的矩阵形式。因为文本长度不一致,所以选取100 作为统一的文本长度,超过100的文本截取前100个词语,不足的长度的加零补齐。在进行词语独热编码时,形成了维度为200 的词向量,这就形成100×200 的矩阵。再通过1 层卷积层与池化层来缩小向量长度,再加一层压平层将2 维向量压缩到1 维,最后通过两层全连接层将向量长度收缩到12 上,对应新闻分类的12 个类(其中标签0没有用到)。CNN模型结构如表2所示。

表2 CNN模型结构Tab.2 CNN model structure

由于RNN 只考虑到最近状态,无法作用于前期状态,使得分类效果不佳,后来进行了变形,能够不仅能够考虑到之前状态,还能决定哪些状态该保留,哪些状态该遗弃,这就是长短期记忆(Long Short-Term Memory,LSTM)网络。LSTM 模型结构如表3所示。

CapsNet 同CNN 一样的是,都需要进行一层卷积层,不同的是经过胶囊层后,输出的结构仍然是二维矩阵,不需要池化层进行池化操作,capsule 层里已经使用了动态路由操作,可代替池化操作进行特征选取,最后一层,同CNN 一样,将全连接层输出结构变成一维矩阵,不同的是使用的激活函数为Squash函数,该函数在应用中可自行构造。CapsNet模型结构如表4所示。

表3 LSTM模型结构Tab.3 LSTM model structure

表4 CapsNet模型结构Tab.4 CapsNet model structure

实验从训练集、验证集和测试集三个方面比较分类效果,实验结果如表5所示。

表5 不同神经网络分类精度对比Tab.5 Classification precision comparison of different neural networks

三种方法都是经过了3 次迭代过程,在训练集上的分类精度都达到了90%以上,其中胶囊网络分类精度最高,达到了98.62%。在验证集上的分类精度都达到了85%以上,其中还是胶囊网络的精度最高,达到了89.03%。最后比较测试集,在测试集上的分类精度明显低于训练集和验证集,但是,胶囊网络的分类精度还是最高,达到了84.06%。由此可见,在文本分类中,胶囊网络的分类效果要优于卷积神经网络和循环神经网络。

胶囊网络是在卷积神经网络的基础上提出来,用来解决池化操作带来的特征信息丢失问题的。考虑到卷积神经网络缺失的相对位置、角度等其他信息的问题,胶囊网络变标量信息为矢量信息,增加了对位置和角度等信息的提取,从而使得识别效果有所提升。卷积神经网络能够注意到各部分的局部特征,但是却忽略了位置和角度等主要信息。以图像人脸为例,卷积神经网络能够识别图像中的各个局部特征,如鼻子、眼睛和嘴巴等,但是对其位置和角度却不做考虑。若嘴巴在额头上,眼睛在下巴上,只要鼻子眼睛嘴巴这些局部特征都在,卷积神经网络会认为该图片就是一张人脸。所以在进行文本分类的过程中卷积神经网络只能联系各个局部特征是否存在,并不会联系其内部结构问题,这就使得了分类效果不如胶囊网络。

3.2.2 改进胶囊网络实验

从训练集、验证集、测试集和时间4 个方面比较CapNet、文献[12]模型和本文提出的CapNet 的分类精度,实验结果如表6所示。

表6 不同胶囊网络分类精度对比Tab.6 Classification precision comparison of different CapsNets

从表6 的实验结果中可以看出,改进后的胶囊网络比单纯的胶囊网络的分类精度提高了2.14个百分点,相较于Zhao等[12]提出的胶囊网络的分类精度提高了1.17 个百分点。卷积操作的增加虽然增加了少量的训练时间,但是特征的提取也更加地细致,使得分类精度有所增加。随着卷积操作的一层一层加入特征提取得越来越细致。以图片为例进行卷积操作,结果如图5所示。

图5 卷积操作特征提取Fig.5 Convolution operation for feature extraction

图5 下方的3 张图分别代表了第1 次卷积操作、第2 次卷积操作和第3次卷积操作后提取的特征。由图5可以看出:第1次卷积可以提取出低层次的特征;第2次卷积可以提取出中层次的特征;第3 次卷积可以提取出高层次的特征。特征是不断进行提取和压缩的,最终能得到比较高层次特征。本文进行了两次卷积操作,并没有进行更加多次的卷积操作,是因为考虑到过多地卷积操作会造成训练的过拟合现象,不仅增加了训练时间还降低了分类精度。在本文提出的网络模型中若再增加一层卷积操作会出现过拟合现象导致分类精度的降低,其在测试集上的分类精度仅达到了80.82%,相较于本文的改进模型分类精度降低了5.38个百分点。

3.2.3 加入word2vec扩展实验

最后将word2vec加入到本文的方法中,再次进行实验,实验结果如表7所示。

表7 word2vec实验结果Tab.7 word2vec experimental results

从表7 中可以看出,word2vec 的加入使得了文本的分类精度不仅没有增加反而减小了0.64 个百分点。word2vec 从大量文本语料中以无监督的方式学习语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近。其基本思想是把自然语言中的每一个词,表示成一个统一意义统一维度的短向量。但是由于语境的不完善,上下文的联系不够密切,并不能捕捉到全局的信息,这使得分类效果反而降低。

3.2.4 多标签分类实验结果总结

多标签分类问题是文本分类的主要部分,本文实验采用的是搜狗实验室的中文新闻数据集,该数据集具有一定的代表性。其实验结果总结如图6所示。

图6 多标签分类实验结果Fig.6 Experimental results of multi-label classification

实验对比了长短记忆网络、卷积神经网络、胶囊网络、Zhao 等[14]提出的胶囊网络和本文提出的改进胶囊网络(Improved CapsNet)[12]的分类效果。实验结果显示,本文的改进胶囊网络模型比多标签实验中的其他4 种模型来说效果更好。

3.3 二分类实验

由于多分类实验的结果显示,LSTM并不适用于文本的分类问题,所以,二分类实验并没有考虑再次使用其方法进行实验。二分类实验进行了卷积神经网络、胶囊网络、Zhao 等[12]提出的胶囊网络和本文改进的胶囊网络分类实验,其结果如图7所示。

图7 二分类实验结果Fig.7 Experimental results of binary classification

从图7 可以发现在二分类的电影评论数据集上,改进过后的胶囊网络在测试集上的分类精度达到了87.03%,单纯的卷积神经网络和胶囊网络分别是86%和85.94%,而Zhao等[12]提出的胶囊网络的分类精度为86.50%。从测试集上来看,改进过后的胶囊网络的分类效果还是优于其他三类网络模型的分类效果。虽然测试集上的优势不是很大,但是在验证集上,本文改进过后的胶囊网络明显地优于其他网络模型,比单纯的卷积神经网络和胶囊网络提高了7.28 个百分点和5.6 个百分点,比Zhao 等[12]提出的胶囊网络提高了3.84 个百分点。

4 结语

胶囊网络有效地克服了卷积神经网络的池化层操作的弊端,动态路由在效果和理论解释性上都优于最大池化操作,但同时也增加了网络的计算量。单独的胶囊网络在文本分类中的分类精度并没有达到最大化,本文将卷积操作与胶囊网络进行结合用于文本分类,实验结果显示,无论是多标签分类还是二分类,本文的方法都比其他方法分类精度要高。胶囊网络中的压缩激活函数Squash,总体上能很好地解释其原理,但是第一项中的“1”,并没有解释,在实验过程中发现,可用其他小于1的非负小数代替“1”,比如0.5,其结果优于Hinton 设置的“1”。如何设置Squash 中的实数参数,在未来的研究中有待解决。

猜你喜欢

胶囊卷积向量
基于全卷积神经网络的猪背膘厚快速准确测定
国家药监局批准七蕊胃舒胶囊上市
向量的分解
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
时光胶囊
聚焦“向量与三角”创新题
时光胶囊
向量垂直在解析几何中的应用