一种应用深度学习技术的多示例学习方法与流程

文档序号:11920826阅读:450来源:国知局

本发明涉及一种机器学习方法,尤其指一种应用深度学习技术的多示例学习方法。



背景技术:

多示例学习是机器学习的一个分支,自从出现以来就受到了机器学习研究者的广泛关注。多示例学习最初是在药物分子的活性分析问题中被提出,之后在图像分类、语音识别、文本理解等领域都被广泛应用。在多示例学习的分类问题中,用于训练学习器的样本包含多个示例,而只有其中某些样本才会对示例的分类标签起决定性作用,而在示例中的其它样本对分类没有任何作用。例如一幅图像由很多较小的局部区域组成,而只有某些局部区域才能确定该图像的分类(例如人像、风景、建筑物等)。但是在一般的多示例学习的数据集中,类别信息仅与样本相关联,而不会与样本里面的某个示例相关联。现有用于解决多示例学习问题的方法主要有:MI-SVM、DD-SVM、MI-RBF、Citation-KNN、MI-Boosting、贝叶斯多示例学习、基于高斯过程的多示例学习方法等。文献“Kim,Minyoung and Torre,Fernando.Multiple Instance Learning via Gaussian Processes.Data Min.Knowl.Discov.,Kluwer Academic Publishers,2014,28,pp.1078-1106”报告了一种基于高斯过程的多示例学习方法,先通过建立基于示例的核Gram矩阵得到示例相对于目标分类标签的先验分布,然后通过贝叶斯公式和极大似然理论建立示例到目标分类标签的后验分布,并通过迭代算法对此后验分布及由其导出的预测分布进行学习,最终得到一个从样本到标签的概率分布,该方法的主要问题是计算量巨大,且在样本数量较小的情况下过度拟合的情况比较严重。

现有方法的不足之处是:

(1).现有方法多是基于对已有的单示例机器学习算法进行修改,使之适用于多示例学习的场景中,而这种修改受到很多的限制,会导致算法的复杂度增加、效率下降,训练数据集的信息损失等问题,从而使得算法的效果都不是十分理想;

(2).现有方法多基于监督学习,因而十分依赖于数据集中数据的特征和标签的质量,算法的鲁棒性比较差,数据集中的微小误差会被放大,对模型的正确率有较大的影响;

(3).现有方法多基于统计,对输入特征的概率分布建模,这并不利于对多示例数据集中的隐含抽象概念的发现和建模,使最终的分类模型的正确率和泛化性能都受到了严重的限制。

基于此,本发明提出一种基于深度学习的多示例学习方法,通过一系列的数据填充和分割手段,把多示例样本转化为等大小的特征矩阵,使用卷积神经网络进行有监督学习并分类,本发明能够发现多示例数据集中的隐含抽象概念,对数据集的误差有很好的容忍能力,有良好的泛化能力。



技术实现要素:

为了克服现有的多示例学习方法的不足之处,包括现有方法多是对已有单示例学习方法的修改、对数据质量十分敏感、基于统计和概率分布等,本发明专利提出了一种基于深度学习的多示例学习方法。本发明的特征包括多示例样本属性的归一化、多示例样本的示例扩充、训练过程和分类过程,每个过程包含若干个步骤,其特征分别描述如下:

(1).多示例样本属性的归一化

设示例的维数为m,包含连续属性和离散属性。

A.连续属性的归一化方法为:对于某个连续属性pi,在数据集中所有示例中,求出pi的最大值和最小值,分别记为和归一化之后该连续属性的计算方法为:同时,记录训练数据集所有示例中每个连续属性的和信息,这些信息将被用于对模型训练好之后未知测试数据的归一化;

B.离散属性的哑变量化:对于包含有k个可能值的离散属性,采用哑变量化,即转化为一个有k个元素的一维向量,当该属性的值为某个可能值时,一维向量里对应的元素设置为1,其余元素为0,在这个k维向量中,对于每一个数据记录,只能有一个元素为1,其余的均为0,离散属性在哑变量化后,不再进行其它的归一化操作;

(2).多示例样本的示例扩充

多示例样本的示例扩充的目的在于使训练数据集中的每一个样本都具有相同的示例数,这样可以进行卷积神经网络的深度学习。设目标多示例数据包含k个类别,扩充方法步骤如下:

A.设定示例扩充的最大示例数nmax为训练集中样本所包含的最大示例数;

B.对于某一个目标类别,训练数据集中的训练样本可以分为属于该类别的样本(正例)集合DP和不属于该类别的样本(负例)集合DN,把所有的负例样本中的示例放在一个集合中并打乱顺序,该集合记为DIN

C.对于每一个训练集中的样本,若它包含的示例数不足nmax,则随机从DIN中抽取示例,加入到该训练样本中,使它包含的示例数等于nmax,完成该步骤后,对于每个训练样本,均有nmax个示例,每个示例是m维(在进行哑变量化之前),每个示例转化为一个nmax行m列的实值矩阵;

D.把步骤C重复q次,即对于每个样本,从DIN中随机抽取示例,放入样本中,形成新的样本,这个过程重复q次,则数据集的规模扩大到约原来的q倍(其中可能有些样本的示例数为nmax,则这部分样本不参与扩充)

E.对于每个经过扩充之后的样本,把其中的示例顺序打乱p次,p=nmax/2,把每次打乱示例顺序的样本作为一个新的样本,这样数据的规模扩大到原来的p倍;

F.样本的标签随着示例的扩充而扩充,即对于某个分类的样本,扩充后的新样本与原来样本的分类标签一样;

(3).卷积神经网络的设计

A.输入:nmax行m列的实值矩阵,通道数为1

B.卷积层采用5*5的卷积核,不增加0填充,不进行缩放,在卷积层后面紧跟一个激活层,在以下两种激活函数中进行选择:

a)Relu:y=max(x,0),其中x为上一层的输出,y为本激活层的输出;

b)Sigmoid:其中x为上一层的输出,y为本激活层的输出;

C.卷积层的通道数从64起,每一层比上一层增加64个通道,最大通道数不超过了512个通道,当某一卷积层的通道数达到512个,则之后的卷积层的通道数不再增加。

D.当经过卷积层和激活层的输出的特征图的其中一个维度到达1时,不再进行卷积操作,而把特征图输入到全连接层,一共设置8个全连接层,设最后一个卷积层-激活层的输出维数为1*w,则这8个全连接层的维数在区间[w,8w]之间随机取值;

E.在每两个全连接层之间增加20%的dropout层,即事先随机把上一个全连接层的输出单元的20%屏蔽;

F.输出层与最后一个全连接层以全连接的方式相连,输出层的维数与数据集的分类数量一致。

(4).模型训练

采用卷积神经网络的误差反向传播学习算法对网络的权值进行调整,调整是根据网络的输入与输出的差异进行的。具体来说,对于每一个输入模型的样本,网络的输出是一个维数与类别数量一样的向量,误差的计算方法为网络输出向量与真实的类别向量之间的海明距离除以向量的维数,当输出向量与真实类别向量完全相同时,它们之间的海明距离为0,误差为0,当输出向量与真实类别向量完全不同时,它们之间的海明距离与维数相同,此时的误差为1。

网络的权值采用[0,1]之间的随机数进行初始化,进行多轮训练,所有训练样本输入到网络中并且完成权值调整为一轮,直到网络的输出误差不再下降为止。

(5).样本分类

当需要对一个多示例样本进行分类时,首先对样本的属性值进行归一化,每个属性的最大值和最小值用训练集中数值,然后进行示例扩充,此时有两种情况:

A.待分类的样本中包括的示例数小于等于nmax,按照本发明专利发明内容的第(2)点,对示例进行扩充,使它包含的示例数等于nmax,即随机从负例集合中选取一些示例,对待分类的样本进行示例扩充。对于每一个待分类样本,进行v次扩充,其中v为奇数,然后用训练好的网络对每个扩充后的样本进行分类,把得到的v个分类结果进行投票,得票多的结果作为该待分类样本的最终分类标签。

B.待分类的样本中包含的示例数大于nmax,对待分类样本中的示例进行随机抽取,每次抽取nmax个,一共抽取v次,其中v为奇数,然后用训练好的网络对每个抽示示例后的样本进行分类,把得到的v个分类结果进行投票,得票多的结果作为该待分类样本的最终分类。

具体实施例

本发明在UCI数据集(http://archive.ics.uci.edu/ml/)上进行测试,取得了较好的效果。下面给出一个实施例,以UCI数据集的Musk2(http://archive.ics.uci.edu/ml/datasets/Musk+%28Version+2%29)作为测试数据集,该数据集为一个多示例数据集,有示例6598个,数据属性168个,全部为连续属性,样本中含有的最小示例数为13,样本中含有的最大示例数为51。

(1)数据预处理

对于连续属性,找出数据集中该属性的最大值和最小值,并用本发明对于连续属性的预处理方法进行处理。例如:对于连续字段f1,在所有数据中求出它的最大值和最小值,分别为292和-3,则对于数据集中的第1条记录的该字段,它归一化后的值为:(46-(-3))/(292-(-3))=0.1661,在本实施例中,归一化后的数据四舍五入,保留到小数点后4位。

(2)示例扩充

先把数据集中所有负例样本中包含的示例全部放在一个集合中,即负示例集合,然后对整个数据集的样本进行示例扩充,负示例集共有示例5581个。数据集中样本包含的最大示例数为51,则若一个样本包含的示例数小于51,则随机从负示例集中抽取示例补充到该样本中,使它的示例数等于51,对于每个样本,重复这样的过程10次,即每个原始样经过示例扩充后可以得到10个样本;之后对每个样本里面的51个示例进行顺序的随机打乱,一共打算10次,每个经过示例扩充后的样本可以得到10个包含相同示例但顺序打乱的样本。至此,数据集的规模增大为原来的100倍,每个示例中均包含51个样本,维数为168。

(3)网络设计

采用卷积神经网络深度学习模型,网络的设计如表1所示:

表1.网络设计表

(3).网络训练

在MatConvNet中通过配置文件实现表1中的网络结构,把数据集做成Matlab数据文件.mat格式,然后使用MatConvNet提供的训练脚本cnn_train.m进行训练。训练进行30轮,使用的学习率为前10轮0.05,11-20轮0.005,21-30轮0.0005。训练的损失函数采用zero-one loss。经过30轮训练后,系统会生成30个.mat文件,分别保存了各轮训练结束时模型的参数,这些.mat文件为各轮训练好的模型,可用于对未知多示例样本的分类。

(4).样本分类

使用第30轮训练结束时的网络模型作为分类模型,对于一个待分类的多示例样本,首先对其属性值进行归一化,所使用的属性最大值得和最小值为训练集中的相应值;然后进行示例扩充,按照待分类样本的示例数小于等于51和大于51两种情况处理,处理的方法按照第5点“发明的内容”的第(5)小点进行,其中v值取11。把经过示例扩充的11个样本分别输入到分类网络中,得到11个分类标记,然后进行投票,票数多的那一个分类标记为模型对该待分类样本的最终分类标记。

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