一种基于遗传算法的极大多标签分类方法

文档序号:29127888发布日期:2022-03-05 00:38阅读:137来源:国知局
一种基于遗传算法的极大多标签分类方法

1.本发明属于自然语言处理领域,具体涉及一种基于遗传算法的极大多标签分类方法。


背景技术:

2.由于互联网内容的爆发式增多以及人们对大数据组织视图日渐增长的迫切需求,大规模多标签文本分类,即从数万级以上(即极大多标签)的类别空间中找到每个文本最相关标签子集的应用问题变得越来越重要。如电子商务中的商品分类,网页的标签分类,新闻的文本分类以及蛋白质的功能分类等。在计算资源有限的情况下,如何解决如此大规模的多标签分类问题是机器学习研究领域的一个重要挑战。
3.目前多标签文本分类方法主要分为:传统机器学习方法与基于深度学习的方法。传统机器学习的方法又包括算法适应的方法,即将原来单标签学习算法扩展为能够直接处理多标签分类问题的算法;和问题转换的方法,即将多标签分类问题转化为一个或多个单标签分类问题;而基于深度学习的方法也包括基于卷积神经网络(cnn)、基于循环神经网络(rnn)以及基于transformer结构的多标签分类方法。
4.近年来基于深度学习的多标签文本分类方法备受瞩目,其中针对大规模多标签分类问题中的数据稀疏问题与巨大标签量级问题,有研究学者提出利用卷积神经网络解决大规模多标签分类问题。利用卷积神经网络模型的基本思想是对单词的词嵌入用不同的滤波器进行卷积操作,然后用最大池化的方法进行池化操作,最后连接一个全连接层进行softmax输出。
5.尽管基于卷积神经网络的多标签分类方法有很多优势,但是传统的卷积神经模型更适用于较小数据集的多标签文本分类。因为基于卷积神经网络的多标签分类模型的输出层往往是标签分类概率,当数据集中的标签数达到数万级以上后,这意味着基于卷积神经网络的模型的输出层将是数万以上的神经元,令模型的训练成本迅速增高。所以如何降低模型训练的时间和空间复杂度,提高模型的分类准确度,一直是理论研究和实践应用的难点。
6.由于在文本分类问题中可以假设同类文档的相似度较大,而不同类文档的相似度较小,于是有研究人员使用文本聚类的方法来解决大规模多标签文本分类问题。根据已知的训练数据的特征数据和标签,采用k-means算法对所述标签进行聚类,并根据聚类后标签训练所述分类模型。而一段文本的主题思想往往由其关键词决定,因此对于基于文本平均词向量的传统聚类方法,应该首先划分出关键词,再根据关键词进行聚类。而如何提取高准确度的关键词是文本挖掘邻域的一个重要研究方向。


技术实现要素:

7.针对上述背景技术中存在的技术问题,本发明提出了一种基于遗传算法的极大多标签分类方法,对文本的平均词向量进行聚类从而得到文本的邻居标签,结合卷积神经网
络提取的样本语义特征与投影到低维空间的样本邻居标签信息,通过回归样本邻居标签与样本真实标签间汉明距离的方式,得到遗传算法的损失值函数,然后在样本的邻居标签空间中利用遗传算法得到损失值最小即距离样本真实标签最近的邻居标签,最后将该邻居标签作为该样本的预测标签。本发明通过遗传算法的交叉变异获得比一般聚类算法准确度更高的多标签分类方法。具体技术方案如下:
8.本发明所采用的技术方案如下:
9.一种基于遗传算法的极大多标签分类方法,包括下列步骤:
10.步骤1,训练词向量:除去训练文本的特殊字符,构造连续词袋模型,利用连续词袋模型训练文本将单词转换为对应词向量;
11.步骤2,计算文本平均词向量:基于转换得到的词向量,计算每一条文本对应的平均词向量;
12.步骤3,基于平均词向量通过k-means算法寻找邻居标签:初始化聚类中心,以文本的标签类数为分类个数,训练得到聚类模型;在样本对应簇内为样本寻找若干邻居标签;
13.步骤4,训练损失值函数模型:以one-hot编码形式表示标签,将文本词向量与邻居标签向量作为输入,通过卷积神经网络提取文本的语义特征,通过全连接网络将邻居标签向量投影到低维空间,将提取的文本语义特征与投影到低维空间的标签信息通过全连接层回归样本邻居标签与真实标签的汉明距离,从而得到损失值函数模型;
14.步骤5,通过遗传算法预测样本标签:以样本的文本词向量与样本的邻居标签向量作为解空间,在解空间中通过遗传算法得到损失值最小的若干邻居标签,将这些邻居标签的概率经过平均后得到分类概率,通过变换得到样本的预测标签。
15.进一步,所述步骤1中使用连续词袋模型将文本训练成为词向量的具体过程如下:
16.步骤1.1,构造连续词袋模型,所述连续词袋模型包括输入层、隐藏层和输出层三层;
17.步骤1.2,计算隐藏层输出值h:
[0018][0019]
其中,w表示输入层到隐藏层的权重矩阵;x={x1,...,xv}表示输入的one-hot形式单词向量;为权重矩阵w的第k行;xk为输入单词在one-hot编码中对应为1的值;表示与输入层相关的单词的n维向量表示形式;
[0020]
步骤1.3,计算输出层输出值,每一个单词的得分:
[0021][0022]
其中,表示权重矩阵w

的第j列向量;权重矩阵w

={ω

ij
}表示隐藏层到输出层的权重矩阵;ω

ij
为第i行第j列的值;
[0023]
步骤1.4,通过sigmoid函数计算单词的后验分布为:
[0024][0025]
其中,ωj、ωi分别表示为第j个单词与输入单词;yj表示输出层第j个神经单元的输出值;μj′
为第j

个单词的得分;
[0026]
将式(1)和式(2)带入式(3)得到:
[0027][0028]
步骤1.5,连续词袋模型的损失函数为:e=-log p(ωo|ωi),计算损失函数关于得分μj的偏导数为:
[0029][0030]
其中,ωo为实际输出单词;当且仅当输出层的第j个神经单元为真实的输出单词时tj取值为1,否则tj取值为0;ej为输出层第j个单词的预测误差;
[0031]
根据链式法则求出损失函数e关于权重矩阵w

元素ω

ij
的偏导数为:
[0032][0033]
其中,hi为隐藏层第i个神经元的值;
[0034]
因此采用随机梯度下降算法得到隐藏层到输出层权重的更新公式为:
[0035][0036]
其中,分别为ωj更新前和更新后的输出向量;η为参数更新的学习速率;v为文本词汇量的大小;
[0037]
步骤1.6,计算损失函数关于隐藏层hi的偏导数为:
[0038][0039]
其中,eh是词汇表中所有单层输出向量的和的n-dim向量,用于预测误差加权;
[0040]
由式(1)变形可有:
[0041][0042]
其中,ω
ki
为权重矩阵w第k行第i列的值;
[0043]
因此,计算损失函数关于权重矩阵w的偏导数为:
[0044][0045]
利用张量乘积的方式,得到:
[0046][0047]
其中,x为one-hot编码的输入单词向量;
[0048]
因此权重矩阵w的更新公式为:
[0049][0050]
其中,分别是更新前后输入单词的向量表示;由此更新输入层到隐藏层的权重矩阵。
[0051]
进一步,所述步骤2中平均词向量的计算方法为:
[0052][0053]
其中,w2c(
·
)是步骤1中训练模型得到的文本词向量转换函数;xi表示构成文本x的第i个单词。
[0054]
进一步,所述步骤3中使用k-means算法将文本聚成k类并寻找样本邻居标签的过程如下:
[0055]
步骤3.1,在文本空间包含的n个文本词向量中,随机选取k个不同的文本词向量作为初始聚类中心;
[0056]
步骤3.2,计算每个文本词向量xi与k个聚类中心的距离,将xi与最近的类中心归为一类,xi的类标签labeli表示为:
[0057][0058]
其中,mc表示第c类的中心;
[0059]
步骤3.3,将每个类中所有点的均值作为新的类中心,类中心mc的更新方式为:
[0060][0061]
其中,clusterc表示第c类,|clusterc|是第c类包含的代表点的数目;
[0062]
步骤3.4,重复步骤3.2和步骤3.3,直到所有类的中心不再变化;
[0063]
步骤3.5,根据聚类情况,为样本在其对应簇内寻找若干邻居标签。
[0064]
进一步,所述步骤4中训练损失值函数模型的过程如下:
[0065]
步骤4.1,卷积神经网络包括卷积和池化两个部分;卷积获得的新特征ci表示为:
[0066]ci
=gc(v
tei:j+h-1
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16)
[0067]
其中,ei表示当前文档中第i个单词对应的k维单词嵌入;e
1:m
=[e1,...,em]表示第i个字到第j个字的文本区域;v表示卷积过滤器;gc表示卷积层的非线性激活函数;
[0068]
池化获得的新特征p(c)表示为:
[0069][0070]
其中,m表示一个文档含有的单词数;p表示获得的最大特征数量;
[0071]
步骤4.2,通过一个全连接层将one-hot形式标签投影到低维空间,得到的新特征表示为:
[0072]ai
=wnliꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(18)
[0073]
其中,a为邻居标签投影到低维空间的特征表示;li表示当前one-hot编码形式标签中第i个位置的元素值;wn表示投影标签的权重矩阵;
[0074]
步骤4.3,通过两层全连接层得到输出结果,表示为:
[0075]
y=w
ogh
(wh[p(c
(1)
),...,p(c
(t)
),a
(1)
,...,a
(q)
])
ꢀꢀꢀꢀꢀꢀꢀ
(19)
[0076]
其中,wh表示隐藏层的权重矩阵,wo表示输出层的权重矩阵;gh表示隐藏层的非线性激活函数;p(c
(1)
),...,p(c
(t)
)为由卷积神经网络提取的所有文本语义特征;a
(1)
,...,a
(q)
为向低维空间投影得到的所有标签信息;
[0077]
步骤4.4,选取均方误差为损失函数,通过最小化损失函数优化模型参数,其损失
函数表示为:
[0078][0079]
其中,yi为模型输出的标签向量;表示样本邻居标签与样本真实标签的汉明距离;n表示样本的数量。
[0080]
进一步,所述步骤5中通过遗传算法寻找样本最近标签的过程如下:
[0081]
步骤5.1,在文本词向量与邻居标签向量空间中选择若干样本,随机产生单个交叉点,令若干样本在交叉点前后的向量序列交换;同时在文本词向量与邻居标签向量空间中再选择若干样本,随机产生单个变异点,令若干样本的变异点对应值发生一定大小改变;
[0082]
步骤5.2,通过损失值函数模型计算得到各个样本的损失值,对于损失值的样本赋予较大被选择概率,依选择概率挑选样本,从而更新种群;
[0083]
步骤5.3,依照种群个体损失值的大小选择损失值最低的若干个体对应的邻居标签,对选择的邻居标签进行概率平均得到样本的分类概率,样本的分类概率表示为:
[0084][0085]
其中,k表示挑选的样本个数;q表示标签的维度;为预测样本第i个邻居标签向量第j位的值。
[0086]
本发明的有益效果:
[0087]
(1)传统的聚类方法对文本的平均词向量进行聚类,但实际上往往应该首先划分出关键词,再根据关键词进行聚类。针对此问题,本发明同样不划分文本关键词,但通过遗传算法的交叉变异产生距离真实标签更近的预测标签,从而得到准确率更高的分类效果。同时由于大规模多标签分类的特殊性,标签的量级往往是百万以上,因此基于神经网络、以one-hot编码标签作为输出的网络模型规模往往会非常大,消耗大量计算资源与时间资源。而结合遗传算法的多标签分类方法构造的损失值函数模型在输出层仅有一个神经元,大幅度降低了网络模型的规模。
[0088]
(2)本发明结合了遗传算法提高了单独使用聚类算法的多标签分类方法的效果,遗传算法中遗传、交叉和变异的可能性扩大了解空间,使得该方法在普通聚类的基础上更有可能获得与真实标签更为接近的预测标签。
[0089]
(3)本发明利用了深度神经网络极强的表达能力,通过回归样本预测标签与真实标签的汉明距离间接的还原样本的真实标签,从而避免了在大规模多标签分类问题中传统神经网络模型最后一层的全连接层需要连接超百万数量神经元的巨大计算资源与时间资源消耗。
附图说明
[0090]
图1是基于卷积神经网络的损失值函数模型的训练流程图。
[0091]
图2是基于遗传算法的预测样本标签过程的预测流程图。
具体实施方式
[0092]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
[0093]
本发明为了实现更高效、更精确的多标签分类任务,采用结合遗传算法的聚类模型获得文本的邻居标签,然后根据文本信息与邻居标签信息训练模型回归至邻居标签与真实标签的汉明距离,最后通过遗传算法启发式搜索最接近样本真实标签的标签,从而得到样本的预测标签。本发明主要包含五个步骤:训练文本词向量、计算文本平均词向量、聚类寻找样本邻居标签、训练损失值函数模型、通过遗传算法预测标签。本发明首先训练文本得到文本词向量;然后计算文本的平均词向量;接着根据文本的平均词向量,利用k-means算法对文本进行聚类,根据聚类情况得到样本的若干邻居标签;再根据样本的文本信息与样本的邻居标签训练损失值函数模型使其回归样本邻居标签与样本真实标签的汉明距离;最后将训练得到的损失值函数模型做为遗传算法中的损失值函数,通过启发式搜索解空间获得样本的预测标签。具体步骤如下:
[0094]
步骤1,训练文本词向量:除去训练文本的特殊字符,构造连续词袋模型,将文本输入连续词袋模型,通过连续词袋模型将单词转换为对应词向量;连续词袋模型的训练过程如下:
[0095]
步骤1.1,构造连续词袋模型:连续词袋模型分为输入层、隐藏层和输出层三层;
[0096]
步骤1.2,计算隐藏层输出值:假设文本词汇量的大小为v,隐藏层的大小为n,相邻层的神经元是全连接的。输入层是一个用one-hot方式编码的单词向量x={x1,...,xv},其中只有一个xi为1,其余均为0。从输入层到隐藏层的权重值可以用一个v
×
n的权重矩阵w来表示,其中w矩阵的每一行代表的是一个与输入层相关的单词的n维向量表示形式对于给定的一个上下文(一个单词),假设xk=1,xk′
=0,其中k≠k’,那么隐藏层的输出值h可由下式(1)计算:
[0097][0098]
其中,xk为输入单词在one-hot编码中对应为1的值;为权重矩阵w的第k行,为输入词ωi的向量表示;
[0099]
步骤1.3,计算输出层输出值:连接权重用n
×
v矩阵w

={ω

ij
}来表示;由输入文本中的单词构成一个无重复的词表;通过式(2)可为词表中的每一个单词计算一个得分:
[0100][0101]
其中,μj为第j个单词的得分;表示权重矩阵w

的第j列向量;
[0102]
步骤1.4,计算单词后验分布:通过sigmoid函数可以计算单词的后验分布为:
[0103][0104]
其中,ωj、ωi分别表示为第j个单词与输入单词;yj表示输出层第j个神经单元的输出值,μj′
第j

个单词的得分。
[0105]
将式(1)和式(2)带入式(3)可以得到:
[0106][0107]
步骤1.5,更新隐藏层到输出层权重矩阵:该连续词袋模型的损失函数为:e=-log p(ωo|ωi);
[0108]
因此通过式(5)可计算损失函数关于得分μj的偏导数:
[0109][0110]
其中,ωo为实际输出单词;tj=1(j=j
*
),j
*
是输出层中实际输出单词的索引,即当且仅当输出层的第j个神经单元为真实的输出单词时tj的取值为1,其余情况都取值为0;ej为输出层第j个单词的预测误差;
[0111]
根据链式法则求出损失函数e关于矩阵w

的元素ω

ij
的偏导数为:
[0112][0113]
其中,hi为隐藏层第i个神经元的值;
[0114]
因此采用随机梯度下降算法得到隐藏层到输出层权重的更新公式为:
[0115][0116]
其中,为ωj更新前的输出向量;为ωj更新后的输出向量;η为参数更新的学习速率。
[0117]
步骤1.6,更新输入层到隐藏层权重矩阵:计算损失函数关于隐藏层hi的偏导数为:
[0118][0119]
其中,ω

ij
为权重矩阵w

第i行第j列的值;eh是词汇表中所有单层输出向量的和的n-dim向量,用于预测误差加权;:=表示计算机编程语言中的“定义为”;
[0120]
由式(1)变形可有:
[0121][0122]
其中,ω
ki
为权重矩阵w第k行第i列的值;
[0123]
因此,计算损失函数关于权重矩阵w的偏导数为:
[0124][0125]
利用张量乘积的方式,可以得到:
[0126][0127]
其中,x为one-hot编码的输入单词向量;为张量积运算符。
[0128]
因此权重矩阵w的更新公式为:
[0129]
[0130]
其中,分别是更新前后输入单词的向量表示;
[0131]
步骤2,基于步骤1中转换得到的文本词向量,计算文本平均词向量:文本的平均词向量由式(13)计算:
[0132][0133]
其中,w2c(
·
)是训练步骤1中模型得到的文本词向量转换函数即式(4);xi表示构成文本x的第i个单词。
[0134]
步骤3,基于平均词向量聚类寻找文本的邻居标签:使用k-means算法将文本聚成k类并寻找邻居标签,具体过程如下:
[0135]
步骤3.1,聚类中心初始化:在文本空间包含的n个文本词向量中,随机选取k个不同的文本词向量点,在后文中简称为点,作为初始聚类中心;
[0136]
步骤3.2,类标签分配:分别计算每个文本词向量xi与k个聚类中心的距离,将xi与最近的类中心归为一类,xi的类标签labeli可由式(14)计算:
[0137][0138]
其中,mc表示第c类的中心。
[0139]
步骤3.3,聚类中心更新:将每个类中所有点的均值作为新的类中心,类中心mc的更新表达式为式(15):
[0140][0141]
其中,clusterc表示第c类,|clusterc|是第c类包含的代表点的数目;
[0142]
步骤3.4,重复步骤3.2和步骤3.3,直到所有类的中心不再变化;
[0143]
步骤3.5,根据聚类情况,为样本在其对应簇内随机寻找若干邻居标签。
[0144]
步骤4,训练损失值函数模型:通过卷积神经网络提取文本的语义特征,同时将样本的标签向量投影到低维空间,再通过两层全连接层训练回归样本邻居标签与样本真实标签间汉明距离的损失值函数模型,其训练流程如图1所示,训练损失值函数模型的过程如下:
[0145]
步骤4.1,基于卷积神经网络提取文本语义特征:
[0146]
卷积神经网络包括卷积和池化两个部分;卷积部分获得的新特征可由式(16)计算得到:
[0147]ci
=gc(v
tei:j+h-1
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(16)
[0148]
其中,表示当前文档中第i个单词对应的k维单词嵌入;表示第i个字到第j个字的文本区域;表示卷积过滤器;gc表示卷积层的非线性激活函数。
[0149]
池化部分获得的新特征可由式(17)计算得到:
[0150][0151]
其中,p(c)为特征映射后的元素;c
i:j
为卷积得到的特征中第i个到第j个元素;m表示一个文档含有的单词数;p表示获得的最大特征数量;
[0152]
步骤4.2,投影标签向量到低维空间:
[0153]
以one-hot编码表示步骤3中得到的邻居标签得到邻居标签向量,通过一个全连接层将邻居标签向量投影到低维空间,得到的新特征可由式(18)计算得到:
[0154]
a=wnliꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(18)
[0155]
其中,a为邻居标签投影到低维空间的特征表示;li表示当前one-hot编码形式标签中第i个位置的元素值;wn表示投影标签的权重矩阵;
[0156]
步骤4.3,训练损失值函数模型:将提取的文本语义特征与投影到低维空间的标签信息连接两层全连接层得到输出层神经元结果,其值可由式(19)计算得到:
[0157]
y=w
ogh
(wh[p(c
(1)
),...,p(c
(t)
),a
(1)
,...,a
(q)
])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(19)
[0158]
其中,表示隐藏层的权重矩阵;表示输出层的权重矩阵;gh表示隐藏层的非线性激活函数;p(c
(1)
),...,p(c
(t)
)为由卷积神经网络提取的所有文本语义特征;a
(1)
,...,a
(q)
为向低维空间投影得到的所有标签信息;
[0159]
步骤4.4,优化损失值函数模型参数:选取均方误差为损失函数,通过优化器最小化损失函数从而优化模型参数,其损失函数由式(20)给出:
[0160][0161]
其中,yi为模型输出的标签向量;表示样本邻居标签与样本真实标签的汉明距离;n表示样本的数量。
[0162]
步骤5,通过遗传算法预测标签:通过文本词向量、邻居标签向量的交叉与变异搜索得到解空间中距离样本真实标签最近的标签,其预测过程如图2所示,遗传算法的搜索过程如下:
[0163]
步骤5.1,产生交叉变异:在文本词向量与邻居标签向量空间中以概率p1选择若干样本,随机产生单个交叉点,令所选取的若干样本在交叉点前后的向量序列交换;同时在文本词向量与邻居标签向量空间中再以概率p2选择若干样本,随机产生单个变异点,令所选取的若干样本的变异点对应值发生一定大小改变;
[0164]
步骤5.2,迭代更新种群:将步骤4中训练得到的损失值函数模型作为遗传算法的损失值函数,通过损失值函数计算得到各个样本的损失值,赋予损失值小的样本较大被选择概率,然后根据轮盘赌算法挑选样本更新种群,迭代该过程若干次得到最终的种群;
[0165]
步骤5.3,预测样本标签:依照最终的种群个体损失值的大小选择损失值最小的若干个体对应的邻居标签,对选择的邻居标签进行概率平均得到样本的分类概率,样本的分类概率可由式(21)计算得到:
[0166][0167]
其中,k表示挑选的样本个数;q表示标签的维度;为预测样本第i个邻居标签向量第j位的值。
[0168]
以上实施例仅用于说明本发明的设计思想和特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,本发明的保护范围不限于上述实施例。所以,凡依据本发明所揭示的原理、设计思路所作的等同变化或修饰,均在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1