基于数据特征的深度神经网络自训练方法与流程

文档序号:12469177阅读:205来源:国知局
基于数据特征的深度神经网络自训练方法与流程

本发明涉及一种基于数据特征的深度神经网络自训练方法,属于模糊识别技术领域。



背景技术:

机器学习是人工智能领域的一个重要学科。自从20世纪80年代以来,机器学习在算法、理论和应用等方面都获得巨大成功。从20世纪80年代末期以来,机器学习的发展大致经历了两次浪潮:浅层学习(shallow learning)和深度学习(deep learning)。

深度学习通过建立类似于人脑的分层模型结构,对输入数据逐级提取从底层到高层的特征,从而能很好地建立从底层信号到高层语义的映射关系。深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层、甚至超过10层的隐层节点;2)明确突出了特征学习的重要性。

从具有开创性的文献发表之后,Bengio、Hinton、Jarrett、Larochelle、Lee、Ranzato、Salakhutdinov、Taylor和Vincent等大量研究人员对深度学习进行了广泛的研究以提高和应用深度学习技术。Bengio和Ranzato等人提出用无监督学习初始化每一层神经网络的想法;Erhan等人尝试理解无监督学习对深度学习过程起帮助作用的原因;Glorot等人研究深度结构神经网络的原始训练过程失败的原因。

目前,深度学习的应用领域遍布图像识别、语音识别、自然语言处理、广告与推荐系统,大数据分析与预测、自动化控制等,而且越来越多的公司和研究者正在探索将深度学习应用到新领域的可行性与效果。可见,对于深度学习无论是理论还是应用上的研究都有可能对多个领域的生产工作起到促进的作用。

由于现阶段深度学习算法的有效性普遍缺乏有力的理论支撑,于是造成很多研究者及从业人员对模型的优化无从下手,只能采用盲目调节不同参数进行训练,然后比较分类精度来选取更佳的参数组合。这种方法既枯燥,也是对人力和时间的浪费,而且只能保证调参得到的神经网络只对当前的训练集有效,一旦将相同的网络应用在不同的样本库上,又要重新开始冗长的调参工作。

虽然目前有很多文献涉及深度神经网络参数的调节方法,比如Bengio在文献中给出了用于不同种类深度结构神经网络的训练方法的指导意见。但更多的文献是针对自己的网络结构提供推荐的参数设置,并没有广泛的适用性。如果我们事先对尽可能多的不同种类样本库及其对应的最佳网络参数设置进行分析,找到样本数据与最优参数背后的联系,这样在面对新样本时,我们就有依据预测一个最佳的参数组合,尽快达到我们对分类精度的要求。即使该组参数仍不尽人意,我们也能从这组参数出发,节约大量的前期调参时间。这也是本技术发明提出的出发点。



技术实现要素:

本发明的目的就在于为了解决上述问题而提供一种能自动调节参数的基于数据特征的深度神经网络自训练方法。

本发明通过以下技术方案来实现上述目的:

一种基于数据特征的深度神经网络自训练方法,包括以下步骤:

(1)从事先准备好的不同样本集提取对应的标准特征,该标准特征表征样本集本身数据分布的特点,并且能够用来唯一区分不同的样本集;

(2)将已知样本集与对应的标准特征输入训练器,寻找具有不同特征的样本集需要怎样的参数设置才能达到尽可能高的训练精度;

(3)当引入新样本集时,根据新样本集的特征来自动选取一组最优的深度神经网络参数,从而保证当以该参数构造神经网络并对新样本进行训练时,能够得到尽可能高的预测精度。

作为优选,所述步骤(1)中,采用的样本集满足以下条件:数据类型相同,数据维度相同,样本容量相同或基本相同;如果某个样本集的样本容量稍少于其他样本集,则提取标准特征时其他样本集也只处理与其相同数目的样本;如果某个样本集的样本容量远少于其他样本集,则通过复制或人工加入微量噪声的方法将该样本集扩展到适当的大小,使其满足上述条件;对于多组样本集,分别将每组样本集作为标准化神经网络的输入,无论输入数据的类型和维度如何,该神经网络的输出都被转化为双精度浮点数向量;对于所有样本集,标准化神经网络的结构是固定的,其权重参数也是提前规定好的,以使其输出的特征具有标准性;对于长度较长的特征向量,经过PCA降维后,得到长度较短的特征向量,即各个样本集所唯一对应的标准特征;PCA即Principal Component Analysis,是一种常用的数据分析方法。

所述步骤(2)中,用训练器寻找样本集标准特征与深度神经网络参数选取之间关系的方法包括以下步骤:

(2.1)对于某一个已知样本集Sn,n取值从1到N,随机生成M组参数P(n)m,m取值从1到M,根据参数P(n)m建立深度神经网络DNN(n)m,将样本集Sn作为网络DNN(n)m的训练集,并训练深度神经网络,训练完毕后以测试集测试其精度,如果没有特定测试集,则将整个样本集Sn作为测试集;

(2.2)如果网络DNN(n)m测试精度设为C(n)m,对所有参数组遍历执行建立网络、训练网络、测试精度的过程,然后选取测试精度C(n)m最高的一组P(n)m,再取样本集Sn对应的标准特征Fn,即找到一组样本集特征与最优深度神经网络参数的关系对;

(2.3)对所有已知样本集处理完毕后,就得到了若干P(n)m-Fn关系对,可视为经过参数-特征空间中某超平面上的点,通过这些点就能够拟合该超平面,得到一般化的参数-特征关系;

上述步骤(2.1)-(2.3)中,Sn表示第n个样本集,P(n)m表示对应第n个样本集的第m组参数,DNN(n)m表示根据参数P(n)m产生的深度神经网络;C(n)m代表从样本Sn训练网络DNN(n)m得到的测试精度;

所述步骤(3)中,在已知样本数据基本特征分布的情况下,利用机器学习算法的分类与预测能力,自动选取若干组恰当的深度神经网络结构参数,所述参数包括但不限于网络的深度、卷积层中卷积核的数量和尺寸、梯度方法、初始训练步长、损失函数,再以这些组参数分别自动迭代训练深度神经网络,验证其预测精度;如果某些参数组能够产生符合要求的预测精度,则将产生最高精度的参数组合返回给用户;如果遍历所有参数组合也没能达到所需的预测精度,则从精度最好的一组参数出发,产生一组新的参数进行训练,直到产生所需的预测精度为止;得到最优参数之后,即可建立相应的深度神经网络,并且能够保证其分类精度达到相应的标准。

进一步,所述步骤(3)中,在选取参数组的过程中,只要在误差允许范围内,总选取节点数最少的那一组参数。

本发明的有益效果在于:

本发明的优点在于利用机器学习算法根据样本数据的特征自动调整深度神经网络的参数,建立合适的网络模型,并能保证能够达到较高的测试精度,这样既克服了入门研究者对深度学习模型参数调整经验的缺乏,又避免了花费大量人力和时间不断尝试参数进行模型调整的枯燥工作。

附图说明

图1是本发明所述基于数据特征的深度神经网络自训练方法的流程示意图;

图2是标准特征提取的流程示意图;

图3是训练器设计的流程示意图;

图4是新模型训练的流程示意图;

图5是实施例中得到的最佳网络结构示意图。

具体实施方式

下面结合附图对本发明作进一步说明:

如图1-图4所示,本发明所述基于数据特征的深度神经网络自训练方法包括以下步骤:

(1)从事先准备好的不同样本集提取对应的标准特征,该标准特征表征样本集本身数据分布的特点,并且能够用来唯一区分不同的样本集;

(2)将已知样本集与对应的标准特征输入训练器,寻找具有不同特征的样本集需要怎样的参数设置才能达到尽可能高的训练精度;

(3)当引入新样本集时,根据新样本集的特征来自动选取一组最优的深度神经网络参数,从而保证当以该参数构造神经网络并对新样本进行训练时,能够得到尽可能高的预测精度;

所述步骤(1)中,采用的样本集满足以下条件:数据类型相同,数据维度相同,样本容量相同或基本相同;如果某个样本集的样本容量稍少于其他样本集,则提取标准特征时其他样本集也只处理与其相同数目的样本;如果某个样本集的样本容量远少于其他样本集,则通过复制或人工加入微量噪声的方法将该样本集扩展到适当的大小,使其满足上述条件;对于多组样本集,分别将每组样本集作为标准化神经网络的输入,无论输入数据的类型和维度如何,该神经网络的输出都被转化为双精度浮点数向量;对于所有样本集,标准化神经网络的结构是固定的,其权重参数也是提前规定好的,以使其输出的特征具有标准性;对于长度较长的特征向量,经过PCA降维后,得到长度较短的特征向量,即各个样本集所唯一对应的标准特征;

所述步骤(2)中,用训练器寻找样本集标准特征与深度神经网络参数选取之间关系的方法包括以下步骤:

(2.1)对于某一个已知样本集Sn,n取值从1到N,随机生成M组参数P(n)m,m取值从1到M,根据参数P(n)m建立深度神经网络DNN(n)m,将样本集Sn作为网络DNN(n)m的训练集,并训练深度神经网络,训练完毕后以测试集测试其精度,如果没有特定测试集,则将整个样本集Sn作为测试集;

(2.2)如果网络DNN(n)m测试精度设为C(n)m,对所有参数组遍历执行建立网络、训练网络、测试精度的过程,然后选取测试精度C(n)m最高的一组P(n)m,再取样本集Sn对应的标准特征Fn,即找到一组样本集特征与最优深度神经网络参数的关系对;

(2.3)对所有已知样本集处理完毕后,就得到了若干P(n)m-Fn关系对,可视为经过参数-特征空间中某超平面上的点,通过这些点就能够拟合该超平面,得到一般化的参数-特征关系;

上述步骤(2.1)-(2.3)中,Sn表示第n个样本集,P(n)m表示对应第n个样本集的第m组参数,DNN(n)m表示根据参数P(n)m产生的深度神经网络;C(n)m代表从样本Sn训练网络DNN(n)m得到的测试精度;

所述步骤(3)中,在已知样本数据基本特征分布的情况下,利用机器学习算法的分类与预测能力,自动选取若干组恰当的深度神经网络结构参数,所述参数包括但不限于网络的深度、卷积层中卷积核的数量和尺寸、梯度方法、初始训练步长、损失函数,再以这些组参数分别自动迭代训练深度神经网络,验证其预测精度;如果某些参数组能够产生符合要求的预测精度,则将产生最高精度的参数组合返回给用户;如果遍历所有参数组合也没能达到所需的预测精度,则从精度最好的一组参数出发,产生一组新的参数进行训练,直到产生所需的预测精度为止,出于计算复杂度的考虑,在选取参数组的过程中,只要在误差允许范围内,总选取节点数最少的那一组参数;得到最优参数之后,即可建立相应的深度神经网络,并且能够保证其分类精度达到相应的标准。

实施例:

为了验证本方法的可行性与有效性,以如下实验进行具体说明:

以二维数据为例,针对本方法设计一个图像分类问题。在已知若干图像分类样本库的情况下,利用本方法建立一个神经网络模型,再测试该模型的分类精度。

选取多个不同的样本库作为训练器的样本集,其中包括ORL Faces人脸库以及来自UCI Machine Learning Repository的若干样本库。候选参数有:网络深度(隐层层数)为1,2,3;卷积核的数量为6,10,12,16,20,32,64(规定后一层的节点数多于前一层);卷积核的尺寸为3x3,5x5,7x7;梯度方法为随机梯度下降法,Momentum,Adam;初始训练步长为1.0,0.1,0.01,0.001,0.0001;损失函数为绝对误差,误差平方,交叉熵误差。显然可选的参数组合是非常多的,不过由于某些参数组合产生的训练精度就很低,借助Early Stopping策略(在前200次迭代训练精度低于50%则停止训练),就已经过滤了相当一部分参数组合。

采用Google的开源深度学习框架TensorFlow作为深度神经网络的实现接口。至于训练器的实现,利用Bash脚本根据事先规定的参数选定范围产生TensorFlow兼容的Python脚本,该脚本中规定了相应的网络结构,然后直接调用TensorFlow进行训练并获取分类精度。以上过程全部是程序自动完成的。由于采用了基于GPU版本的API,一组参数对应的神经网络训练耗时平均约为4分钟。

经过长达数小时的训练后,引入MNIST手写数字识别库,通过本方法得到一组最佳参数。规定目标分类精度为99%,达到该要求且计算量需求最小的参数组合为:网络深度为2,其中第一层包含10个5x5的节点,第二层包含20个5x5的节点,梯度方法为Adam,初始训练步长为0.0001,误差函数为交叉熵误差。网络的结构描述见图5。最终该网络的分类精度为99.05%。

上述实施例只是本发明的较佳实施例,并不是对本发明技术方案的限制,只要是不经过创造性劳动即可在上述实施例的基础上实现的技术方案,均应视为落入本发明专利的权利保护范围内。

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