一种多层半监督分类方法与流程

文档序号:17865494发布日期:2019-06-11 23:10阅读:204来源:国知局
一种多层半监督分类方法与流程

本公开涉及数据分类方法,具体地讲,涉及一种基于多层半监督分类方法。



背景技术:

现有的数据分类方法包括有监督分类、半监督分类、无监督分类等方法。其中监督分类方法中需要大量的已标记样本来训练模型,限制了其应用场景;无监督分类不需要数据的类别信息,应用广泛,但由于缺乏类别信息导致分类效果不好。半监督因只需少量的已标记的数据,获取成本低,又能通过学习大量的未标记数据的数据分布而得到较好的分类效果,因而具有广泛的应用场景。

基于图的半监督分类方法由于充分利用了数据样本之间的关系,往往取得较好的效果,得到广泛的关注。

目前基于图的半监督分类方法中,对数据的特征表达不够准确,不能很好地反映分类数据的实际情况,因此分类的准确率较低。另外,对于样本量小的数据集,因为涵盖的范围过小不能有效体现数据类别的特征;而对于样本量大的数据集,运算量过大,有太多时间和空间损耗,不能适用于体量较大的数据集。因此,现有的基于图的半监督分类方法中,数据集应用范围过窄,分类准确率低。



技术实现要素:

针对上述问题,本公开提出了一种多层半监督分类方法,不仅能够提高分类的准确率,另外还能扩大数据集的应用范围。

具体的,本公开提出的多层半监督分类方法,包括:

s100、准备数据集,所述数据集是包含图拓扑结构的数据集,其包括节点及节点间的关系,节点间的关系用图拓扑结构中的边表示,所述数据集包括已标记数据和未标记数据两部分,已标记数据包含类别信息作为数据的标签,而未标记数据不包含类别信息及标签;

s200、对步骤s100准备的数据集进行预处理,

s201、提取数据集中所有的节点信息的特征向量构成特征向量x、以及数据集中所有节点的边构成邻接矩阵a;

s202、根据构造好的邻接矩阵a进行预处理得到新的邻接矩阵

s300、基于步骤s200预处理的数据集建立对应的卷积神经网络模型;

s400、基于步骤s200预处理的数据集对步骤s300建立好的卷积神经网络模型进行训练得到分类结果,包括:

s401、初始化模型的权值矩阵;

s402、在建立好的卷积神经网络模型中输入数据集的特征向量x和新的邻接矩阵进行正向传播;

s403、正向传播结束输出分类结果后,判断是否达到迭代结束条件,如果迭代结束则输出该步骤的分类结果作为最终分类结果;如果迭代未结束则利用交叉熵损失函数计算输出的分类结果和实际数据类别的误差,得到交叉熵c;

s404、利用所述交叉熵c在所述模型中进行反向传播,更新模型的权值矩阵;

s405、基于更新后的权值矩阵,返回步骤s402继续执行。

使用本公开的多层半监督分类方法,不仅提高分类的准确率,另外还能扩大数据集的应用范围,使得无论体量较大或是较小的数据集都能能够进行很好地进行适用分类;现有技术相比,达到了更好的分类效果。

附图说明

图1表示本公开建立的卷积神经网络模型的结构图;

图2表示现有的一阶邻接的半监督分类方法与本公开的多层半监督分类方法的分类准确率对比示意图。

具体实施方式

以下结合附图1说明本公开的多层半监督分类方法的具体流程。

在一个实施例中,提供了一种多层半监督分类方法,包括:

s100、准备数据集,所述数据集是包含图拓扑结构的数据集,其包括节点及节点间的关系,节点间的关系用图拓扑结构中的边表示,所述数据集包括已标记数据和未标记数据两部分,已标记数据包含类别信息作为数据的标签,而未标记数据不包含类别信息及标签;

s200、对步骤s100准备的数据集进行预处理,

s201、提取数据集中所有的节点信息的特征向量构成特征向量x、以及数据集中所有节点的边构成邻接矩阵a;

s202、根据构造好的邻接矩阵a进行预处理得到新的邻接矩阵

s300、基于步骤s200预处理的数据集建立对应的卷积神经网络模型;

s400、基于步骤s200预处理的数据集对步骤s300建立好的卷积神经网络模型进行训练得到分类结果,包括:

s401、初始化模型的权值矩阵;

s402、在建立好的卷积神经网络模型中输入数据集的特征向量x和新的邻接矩阵进行正向传播;

s403、正向传播结束输出分类结果后,判断是否达到迭代结束条件,如果迭代结束则输出该步骤的分类结果作为最终分类结果;如果迭代未结束则利用交叉熵损失函数计算输出的分类结果和实际数据类别的误差,得到交叉熵c;

s404、利用所述交叉熵c在所述模型中进行反向传播,更新模型的权值矩阵;

s405、基于更新后的权值矩阵,返回步骤s402继续执行。

在该实施例中,由于本方法采用的是半监督学习,因此选择的数据集中的数据一部分含有类别信息作为数据的标签,一部分没有。数据集含有图拓扑结构,即是含有节点和节点间关系的数据集,因此不需要构建数据的图模型,因为数据集本身就是一个现成的拓扑图。可提取图中所有节点信息的特征向量构成特征向量x,提取图中每条边构成邻接矩阵a,二者结合可以代表整个数据集,提取方法例如现有的嵌入法。

在该实施例中,步骤s403中的迭代条件通常是设置训练次数epoch,当训练次数达到epoch则训练结束。通常次数越多训练效果越好,得到的分类结果也就越准确,具体可设置为100次、200次、250次等,可以根据实际分类精度的需要而定。

在一个优选的实施例中,所述步骤s202具体为:

使用公式构建新的邻接矩阵其中a2代表图的二阶邻居,α代表节点自身与一阶邻居具有的权重,节点的二阶邻居具有权重(1-α),in是对角线上全部为1的n阶单位矩阵,n代表数据集中的数据个数。

在该实施例中,对常用图卷积神经网络中所采用的邻接矩阵进行了改进,原有常用的的范围只包括实例自身和它的一阶邻居,由于涵盖范围过小,不能准确表达每个节点的特征,因此引入了图的二阶邻居a2,从而将实例的二阶邻居引入到计算范围内,扩大邻接矩阵在计算时所考虑的实例范围,所以能够更加准确地表述图中每一个节点间的关系,从而更准确地表达数据的特征,贴近实际分类情况,提高分类的准确率。

在一个优选的实施例中,所述步骤s300中,卷积神经网络模型按数据流向顺序建立,该模型的结构如图1所示,包括:

输入层,用于接收特征向量x和新的邻接矩阵作为输入并存储;

随机丢弃层_1,用于对输入层的数据进行随机丢弃;

图卷积层_1,用于接收随机丢弃层_1的结果和邻接矩阵a,进行卷积运算;

随机丢弃层_2,用于对图卷积层_1的运算结果进行随机丢弃;

图卷积层_2,用于接收随机丢弃层_2的结果和邻接矩阵a,进行卷积运算;

随机丢弃层_3,用于对图卷积层_2的运算结果进行随机丢弃;

图卷积层_3,用于接收随机丢弃层3的结果和邻接矩阵a,进行卷积运算;

全连接层,用于接收图卷积层_3的运算结果,全连接层中的每一个神经元都与图卷积层_3中的神经元相连,全连接层进行卷积运算;

输出层,使用softmax函数进行计算,得出分类结果用于存储并输出分类结果。

在该实施例中,所述模型是按照输入数据的流向顺序建立的,模型中除了输入层、输出层,还使用了三个随机丢弃层和三个图卷积层以及全连接层,各层按顺序分别对输入的数据进行处理,最后输出分类结果。

在一个优选的实施例中,所述步骤s401初始化模型的权值矩阵具体为:

将w(0),w(1),w(2),w(3),w(4)进行随机赋值,其中w(0)表示输入层到随机丢弃层_1的权值矩阵,w(1)图表示卷积层1到随机丢弃层_2的权值矩阵,w(2)表示图卷积层_2到随机丢弃层_3的权值矩阵,w(3)表示图卷积层_3到全连接层的权值矩阵,w(4)代表全连接层到输出层的权值矩阵。

建立好所需的神经网络模型后,就需要对模型进行训练,以使模型能够得到更好的分类效果。本方法的模型训练过程包括:初始化权值矩阵→正向传播得到分类结果→计算交叉熵→反向传播更新权值矩阵→返回正向传播的多次迭代过程,在该实施例中,说明了训练过程中首先对模型中的各个权值矩阵进行随机赋值初始化,作为模型训练的开始步骤。

在一个优选的实施例中,所述步骤s402正向传播过程包括:

s4021、将特征向量x和新的邻接矩阵以矩阵的形式存储到输入层;

s4022、随机丢弃层_1对输入层的神经元进行随机关闭;

s4023、将随机丢弃层_1没有被丢弃的信息以及邻接矩阵a输入到图卷积层_1进行卷积运算;

s4024、随机丢弃层_2对图卷积层_1的神经元进行随机关闭;

s4025、将随机丢弃层_2没有被丢弃的运算结果以及邻接矩阵a输入图卷积层_2进行卷积运算;

s4026、随机丢弃层_3对图卷积层_2的神经元进行随机关闭;

s4027、将随机丢弃层_3没有被丢弃的运算结果以及邻接矩阵a输入图卷积层_3进行卷积运算;

s4028、将图卷积层_3的运算结果输出到全连接层进行卷积运算;

s4029、将全连接层运算结果传入输出层,通过softmax函数进行分类后得到分类结果进行存储并输出。

在该实施例中,各个随机丢弃层对前一层的数据进行随机丢弃是随机关闭一些神经元,对于卷积神经网络模型而言,每个神经元对应一个数据节点,随机关闭一些神经元,目的是防止过拟合。

过拟合(overfitting)现象是机器学习中很常见的问题,是指一个模型在训练集上表现很好但是在测试集上的表现糟糕,泛化能力差。如果一个模型饱受过拟合困扰,也说此模型方差过高,造成这个结果的原因可能是模型含有太多参数导致模型过于复杂。同样,模型也可能遇到欠拟合(underfitting)问题,也说此模型偏差过高,原因是模型过于简单不能学习到训练集中数据存在的模式,同样对于测试集表现很差。

在该实施例中,随机丢弃层随机关闭了一些神经元,能够减少模型的复杂度,有效地避免过拟合现象。

在一个优选的实施例中,所述正向传播过程中,数据经过所述卷积神经网络模型的前一层到随机丢弃层再到后一卷积层的计算过程为:

h(j)=d(σ(ah(j-1)w(j-1))),

其中,h(j)表示第j层的运算结果,h(j-1)表示第j-1层的运算结果,h(j)和h(j-1)都是激活向量,w(j-1)代表连接第j-1层到随机丢弃层的权值矩阵,d代表随机丢弃函数,用于随机关闭一些神经元,σ是激活函数,h(0)表示输入层的激活向量。

对于本发明而言,涉及到三次上述计算过程,因此j的取值为1、2、3,就可以分别计算出三次卷积运算的结果,是三次相同运算的迭代过程。

具体而言,j的取值为1、2、3,可以得出由输入层到图卷积层_1到图卷积层_2到图卷积层_3的运算过程具体如下:

当j=1时,上述公式转化为h(1)=d(σ(ah(0)w(0))),因为图卷积层_1之前没有其他卷积层,因此h(0)表示输入层的运算输出,作为激活向量;h(1)表示图卷积层_1的运算结果,也是激活向量。h(0)中包含了前述的输入和存储到输入层的特征向量x和新的邻接矩阵的信息。

σ是激活函数,激活函数是用来加入非线性因素的,因为线性模型的表达力不够。对于样本来说,不一定是线性可分的,为了解决这个问题,可以进行线性变化,或者引入非线性因素,解决线性模型所不能解决的问题。常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid、tanh比较常见于全连接层,后者relu常见于卷积层。激活函数是公知常用的方法,可以根据实际需要进行选择。

当j=2时,公式转化为h(2)=d(σ(ah(1)w(1))),h(2)表示图卷积层_2的运算结果,

当j=3时,公式转化为h(3)=d(σ(ah(2)w(2))),h(3)表示图卷积层3的运算结果。

经过上述三步,得到以下式子:

解该方程组,得到的关于h和a的公式如下:

f(h,a)=h(3)=d(σ(ad(σ(ad(σ(ah(0)w(0))w(1))w(2))))),

f(h,a)代表了三层图卷积结构的运算过程,将每一个σ(·)的运算结果作为一个新的h′来看待,会发现这是三次相同的运算进行的迭代。

在由图卷积层_3到全连接层的运算过程中,全连接层的运算公式为:h(4)=σ(ah(3)w(3)),h(4)代表全连接层的运算结果。

在由全连接层到输出层的运算过程中,运算公式为:h(5)=softmax(h(4)w(4)),h(5)代表输出层输出的分类运算结果。

在一个优选的实施例中,所述步骤s403中,计算交叉熵c的交叉熵损失函数为:

c=-∑kyklogak

其中,c表示交叉熵,ak表示输出层中第k个神经元的输出值,yk表示第k个神经元对应的真实值,取值为0或1。

在该实施例中,使用了log似然代价函数来计算交叉熵,能够取得较好的计算效果。

在一个优选的实施例中,计算得到交叉熵后,选择交叉熵损失较小的节点添加标签,以增加数据集中带有标签的节点的个数。

在该实施例中,由于图卷积神经网络在交叉熵损失计算过程中对已标记节点的数量有一定要求,限制了方法的应用范围。s100中提到过,数据集中有一部分不含标签的数据和一部分带标签的数据,当数据集中具有标签的节点个数过少时,交叉熵损失的计算会产生较大的误差,类似于用于参照的样本如果过少,会导致样本所涵盖的范围过于片面化,不能体现数据的所有特征。

因此可以在计算交叉熵损失过后,选择一些交叉熵损失较小(与理想模型最为接近)的实例(节点)来添加类别集合,从而增加数据集中带有标签的实例(节点)的个数。

在另一个优选的实施例中,选择交叉熵损失较小的节点的筛选条件是:

a)交叉熵损失小于阈值t;

b)在交叉熵损失由小到大的排序中位于前d%;

其中,t和d的取值根据不同的数据集进行调整。

在该实施例中,选取符合上述筛选节点条件(最接近实际情况)的节点,为其添加标签,这样可以增加含有标签的节点的个数。通过增加含有标签的节点的个数,让含标签的数据集合可以覆盖更广的范围,使得交叉熵损失的计算更加准确。这样,能够扩大数据集的应用范围。

在一个优选的实施例中,所述步骤s404反向传播过程包括:

s4041、用交叉熵对w(4)求偏导p(4),公式为:

更新w(4):w(4)′=w(4)-φ*p(4),其中φ代表学习速率,w(4)′代表更新后的权值矩阵;

s4042、用交叉熵对w(3)求偏导p(3),公式为:h(4)代表全连接层的输出结果;

更新w(3):w(3)′=w(3)-φ*p(3),其中φ代表学习速率,w(3)′代表更新后的权值矩阵;

s4043、用交叉熵对w(2)求偏导p(2),公式为:h(3)代表图卷积层3的输出结果;

更新w(2):w(2)′=w(2)-φ*p(2),其中φ代表学习速率,w(2)′代表更新后的权值矩阵;

s4044、用交叉熵对w(1)求偏导p(1),公式为:h(2)代表图卷积层2的输出结果;

更新w(1):w(1)′=w(1)-φ*p(1),其中φ代表学习速率,w(1)′代表更新后的权值矩阵;

s4045、用交叉熵对w(0)求偏导p(0),公式为:h(1)代表图卷积层1的输出结果;

更新w(0):w(0)′=w(0)-φ*p(0),其中φ代表学习速率,w(0)′代表更新后的权值矩阵。

在该实施例中,通过交叉熵反向逐步进行计算,更细各个权值矩阵,以作为再次返回正向传播时的基础权值矩阵。

当达到设置的迭代条件时,停止对模型的训练过程,即可输出最终的分类结果。

以上是对本公开的多层半监督分类方法的详细说明,根据该方法对数据进行分类,不仅能够准确表达数据的特征,提高分类的准确率,另外还能扩大数据集的应用范围,使得无论体量较大或是较小的数据集都能能够进行很好地进行适用分类;现有技术相比,达到了更好的分类效果。

实验:

为了验证本公开提出的多层半监督分类方法相比现有的一阶邻接的半监督分类方法的优点,进行了实验比较验证。

实验中,采用的是cora数据集,cora数据集是现有公知的数据集,可从网络上下载:https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz。

图2是实验结果的对比示意图,表示出本公开的多层半监督分类方法与现有的一阶邻接的半监督分类方法的分类准确率,从图上可以看出,本方法中对α取值提高时,分类的准确率也不断提高,还示出了d=0.99时的准确率,本方法比只考虑一阶邻居时方法的准确率更高。

综上,本公开的多层半监督分类方法,不仅提高分类的准确率,另外还能扩大数据集的应用范围,使得无论体量较大或是较小的数据集都能能够进行很好地进行适用分类;现有技术相比,达到了更好的分类效果。

尽管以上结合附图对本发明的实施方案进行了描述,但本发明并不局限于上述的具体实施方案和应用领域,上述的具体实施方案仅仅是示意性的、指导性的,而不是限制性的。本领域的普通技术人员在本说明书的启示下和在不脱离本发明权利要求所保护的范围的情况下,还可以做出很多种的形式,这些均属于本发明保护之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1