一种对抗神经网络的集成方法及计算机设备与流程

文档序号:17374922发布日期:2019-04-12 23:11阅读:175来源:国知局
一种对抗神经网络的集成方法及计算机设备与流程

本发明涉及一种神经网络,尤其涉及一种对抗神经网络的集成方法及计算机设备。



背景技术:

现在的模型结构普遍采用机器方式进行机器学习,机器学习是将待解决问题视为求输入数据到输出答案的未知函数,该函数无法人工描述或计算。传统监督学习方法是给定一组输入和输出的训练数据集,训练含有很多特征的数据集,数据集中的样本都有一个标签或目标,学习如何关联输入和输出,在许多情况下,输出很难自动收集,必须由人来提供“监督”。具体是在解决一个问题时需要提供待解决问题相关的大量有标签的训练数据,模型的输入数据与输出答案相互配对,由机器学习专家指定一个模型结构,一个模型结构具有若干可训练的参数,该参数能够表示输入数据与输出答案在空间上的一个函数族,一组参数的取值确定了函数族中的一个具体函数,模型结构是反映该问题规律性的性质。同时机器学习专家指定问题的优化目标,该优化目标是可量化、可计算地反映参数确定的模型函数与解决问题的真实函数之间的差距。之后在训练数据上执行优化方法,试图逐步改进优化目标即减小模型函数与真实函数之间的差距。训练数据除了包括与待解决问题相关的信息,还有大量无关信息和噪音,所以单个训练数据样本提供的信息有限,为了能够拟合真实函数,需要训练数据的数量够多且足够高信噪比地近似于问题的数据分布;同时训练数据样本在高维数据空间中高度稀疏,为了能在这样的空间上稳定优化,单个训练数据样本只能贡献非常微小的参数更新。当训练数据来自数据分布采样时,给定模型误差界与超出误差界的概率上界,某个模型的数据量需求的理论可参考vapnik-chervonenkis定理,数据量不小于o(dlogd),其中d为模型的vc维数。

在机器学习过程中,要用到的训练数据需要带有标签且数量要够大,这样的训练过程比较繁琐,工作量比较大,还难以从训练数据中抽象出规律。有鉴于此,本发明针对这个特性进行研究并由此产生本发明的技术方案。



技术实现要素:

本发明要解决的技术问题之一,在于提供一种对抗神经网络的集成方法,通过对抗学习方法降低了训练数据需求;通过逐渐增加难度的训练和对抗神经网络模型的集成,使得神经网络模型可以学习到数据的抽象规律。

本发明的问题之一,是这样实现的:

一种对抗神经网络的集成方法,对抗神经网络包括生成模型和判别模型,所述方法包括如下步骤:

步骤1、安排从简单到复杂类别的训练数据作为示范;

步骤2、通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境,输入当前类别的训练数据到生成模型,所述生成模型根据该训练数据在该问题环境中生成一个待解决问题;

步骤3、将待解决问题输入给所述判别模型,并通过所述判别模型对待解决问题进行判别和分析,产生待解决问题对应的解;

步骤4、通过所述生成模型和判别模型对当前类别的训练数据进行对抗学习,通过不断地对抗学习将解收敛到一个稳定值,即学习到了当前所见训练难度的求解知识;

步骤5、增加下一类别的训练数据的难度,重复步骤2至步骤4对当前类别的训练数据进行下一轮迭代,每一轮迭代中的生成模型和判别模型是将之前的生成模型和判别模型视为本轮已知的求解知识,将之前训练过的所有生成模型和判别模型作为函数进行调用,利用之前迭代产生的训练数据进行对抗学习,学习解决本轮迭代中的问题,直至完成所有训练数据的对抗学习,如此就集成了所有待解决问题的求解知识。

进一步地,所述步骤2具体为:

通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境,一个问题环境由复数个表示事实的事实数据和一个表示问题的形式语言组成,事实数据由生成模型从训练数据中抽取,形式语言是根据程序代码预先设计而成的;所述生成模型是一个解码神经网络,以抽取的训练数据作为输入,生成模型根据当前训练数据在该问题环境中生成一个待解决问题。

进一步地,所述步骤4在通过不断地对抗学习将解收敛到一个稳定值具体为:通过对抗学习并使用随机梯度下降法对产生的解进行优化,达到最终的优化目标,减少输出的解与真实的解之间的差距,从而将输出的解收敛到一个稳定值。

进一步地,所述步骤5之后还包括:

步骤6、将每一轮迭代产生的训练数据存储在对抗神经网络的记忆单元中,当需要用到学习后的训练数据时,再从记忆单元中调用和学习,具体有:

步骤61、采集问题学习后的训练数据,所述学习后的训练数据包括问题信息和对应的解答信息,根据编码模型将所述学习后的训练数据编码成对应的求解特征向量,并将该求解特征向量存储在深度神经网络的记忆单元中;

步骤62、输入目标特征向量给深度神经网络;

步骤63、根据查询模型从记忆单元中查找各求解特征向量,分别计算出每个求解特征向量与目标特征向量之间的差值,从记忆单元中提取出与目标特征向量最接近的求解特征向量,差值越小,表示求解特征向量与目标特征向量越接近;

步骤64、将该差值作为新的目标特征向量,输入到深度神经网络中,重复步骤63至步骤64进行下一轮迭代,迭代次数由用户自行设定,若在设定的迭代次数内该差值位于设定范围内,则认为该问题信息描述的问题已被记忆单元中的解答信息所解决,最终提取出最接近的的求解特征向量给解码模型,进入步骤65;否则认为该问题需要新知识来解决,那么将最后的差值存放在记忆单元中;

步骤65、解码模型读取该求解特征向量,并根据该求解特征向量产生对应的指令序列,再根据该指令序列将求解特征向量还原成对应的学习后的训练数据,所述指令序列作为学习后的训练数据的调用接口,将学习后的训练数据从深度神经网络中解放出来用于学习问题的规律。

进一步地,所述步骤61中采用seq2seq模型中的编码器将所述学习后的训练数据编码成对应的求解特征向量;

所述步骤63中计算出每个求解特征向量与问题特征向量之间的差值,具体为:将每个求解特征向量一一与目标特征向量进行比对,并通过向量距离计算公式计算出求解特征向量与目标特征向量之间的距离;

所述步骤65具体为:所述解析模型采用的是seq2seq模型,由seq2seq模型中的解码器产生的指令序列进行解码,该指令序列包括寻址、读、写和应用变换操作指令;

所述学习后的训练数据是包括描述问题的问题信息以及描述该问题对应的解答信息,解答信息为在深度神经网络中求解问题所需的求解步骤信息以及每个步骤所产生的状态信息。

本发明要解决的技术问题之二,在于提供一种计算机设备,通过对抗学习方法降低了训练数据需求;通过逐渐增加难度的训练和对抗神经网络模型的集成,使得神经网络模型可以学习到数据的抽象规律。

本发明的问题之二,是这样实现的:

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

步骤1、安排从简单到复杂类别的训练数据作为示范;

步骤2、通过生成模型来搭建一个符合当前类别的训练数据的问题环境,输入当前类别的训练数据到生成模型,所述生成模型根据该训练数据在该问题环境中生成一个待解决问题;

步骤3、将待解决问题输入给判别模型,并通过所述判别模型对待解决问题进行判别和分析,产生待解决问题对应的解;

步骤4、通过所述生成模型和判别模型对当前类别的训练数据进行对抗学习,通过不断地对抗学习将解收敛到一个稳定值,即学习到了当前所见训练难度的求解知识;

步骤5、增加下一类别的训练数据的难度,重复步骤2至步骤4对当前类别的训练数据进行下一轮迭代,每一轮迭代中的生成模型和判别模型是将之前的生成模型和判别模型视为本轮已知的求解知识,将之前训练过的所有生成模型和判别模型作为函数进行调用,利用之前迭代产生的训练数据进行对抗学习,学习解决本轮迭代中的问题,直至完成所有训练数据的对抗学习,如此就集成了所有待解决问题的求解知识。

进一步地,所述步骤2具体为:

通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境,一个问题环境由复数个表示事实的事实数据和一个表示问题的形式语言组成,事实数据由生成模型从训练数据中抽取,形式语言是根据程序代码预先设计而成的;所述生成模型是一个解码神经网络,以抽取的训练数据作为输入,生成模型根据当前训练数据在该问题环境中生成一个待解决问题。

进一步地,所述步骤4在通过不断地对抗学习将解收敛到一个稳定值具体为:通过对抗学习并使用随机梯度下降法对产生的解进行优化,达到最终的优化目标,减少输出的解与真实的解之间的差距,从而将输出的解收敛到一个稳定值。

进一步地,所述步骤5之后还包括:

步骤6、将每一轮迭代产生的训练数据存储在对抗神经网络的记忆单元中,当需要用到学习后的训练数据时,再从记忆单元中调用和学习,具体有:

步骤61、采集问题学习后的训练数据,所述学习后的训练数据包括问题信息和对应的解答信息,根据编码模型将所述学习后的训练数据编码成对应的求解特征向量,并将该求解特征向量存储在深度神经网络的记忆单元中;

步骤62、输入目标特征向量给深度神经网络;

步骤63、根据查询模型从记忆单元中查找各求解特征向量,分别计算出每个求解特征向量与目标特征向量之间的差值,从记忆单元中提取出与目标特征向量最接近的求解特征向量,差值越小,表示求解特征向量与目标特征向量越接近;

步骤64、将该差值作为新的目标特征向量,输入到深度神经网络中,重复步骤63至步骤64进行下一轮迭代,迭代次数由用户自行设定,若在设定的迭代次数内该差值位于设定范围内,则认为该问题信息描述的问题已被记忆单元中的解答信息所解决,最终提取出最接近的的求解特征向量给解码模型,进入步骤65;否则认为该问题需要新知识来解决,那么将最后的差值存放在记忆单元中;

步骤65、解码模型读取该求解特征向量,并根据该求解特征向量产生对应的指令序列,再根据该指令序列将求解特征向量还原成对应的学习后的训练数据,所述指令序列作为学习后的训练数据的调用接口,将学习后的训练数据从深度神经网络中解放出来用于学习问题的规律。

进一步地,所述步骤61中采用seq2seq模型中的编码器将所述学习后的训练数据编码成对应的求解特征向量;

所述步骤63中计算出每个求解特征向量与问题特征向量之间的差值,具体为:将每个求解特征向量一一与目标特征向量进行比对,并通过向量距离计算公式计算出求解特征向量与目标特征向量之间的距离;

所述步骤65具体为:所述解析模型采用的是seq2seq模型,由seq2seq模型中的解码器产生的指令序列进行解码,该指令序列包括寻址、读、写和应用变换操作指令;

所述学习后的训练数据是包括描述问题的问题信息以及描述该问题对应的解答信息,解答信息为在深度神经网络中求解问题所需的求解步骤信息以及每个步骤所产生的状态信息。

本发明的优点在于:对抗学习提供了一种有效表示数据分布的无监督学习方法,无监督学习方法只处理“特征”,不操作监督信号,减少了数据的监督部分,无监督学习的大多数尝试是指从不需要人为注释的样本的分布中抽取信息,无监督学习方法与监督学习方法相比,无监督学习方法训练含有较少的数据集,数据集可以无标签,大幅减小了训练数据规模,通过对抗学习方法降低了训练数据需求;通过逐渐增加难度的训练和对抗神经网络模型的集成,使得神经网络模型可以学习到数据的抽象规律。

附图说明

下面参照附图结合实施例对本发明作进一步的说明。

图1为本发明一种对抗神经网络的集成方法的执行流程图。

具体实施方式

为使得本发明更明显易懂,现以一优选实施例,并配合附图作详细说明如下。

如图1所述,本发明的一种对抗神经网络的集成方法,对抗神经网络包括用于学习的生成模型和判别模型,所述方法包括如下步骤:

步骤1、安排从简单到复杂类别的训练数据作为示范;

步骤2、通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境(类似于让生成模型讲故事,根据训练数据中出现过的词语造句成篇,提问也同样,这里的生成模型一般是一个循环神经网络,从训练数据学习合适的句法和陈述方式),输入当前类别的训练数据到生成模型,所述生成模型根据该训练数据在该问题环境中生成一个待解决问题(训练数据中包含规范且答案确定的问题,生成模型模仿这类数据产生自己的提问);该步骤具体为:

通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境,一个问题环境由复数个表示事实的事实数据和一个表示问题的形式语言组成,事实数据由生成模型从训练数据中抽取,形式语言是根据程序代码预先设计而成的;所述生成模型是一个解码神经网络,以抽取的训练数据作为输入,生成模型根据当前训练数据在该问题环境中生成一个待解决问题;

步骤3、将待解决问题输入给所述判别模型,并通过所述判别模型对待解决问题进行判别和分析,产生待解决问题对应的解;采用对抗方式,将一个生成模型产生的故事和提问混合一个训练数据中的故事和提问,判别模型阅读这两个故事和提问并分别回答,若判别模型错误判断了训练数据中的提问,则给予生成模型激励;若判别模型正确判断了生成模型的提问,则同时给予生成模型和判别模型激励;否则给予判别模型激励;训练收敛的判别模型即可认为学会了解决当前问题,获得了待解决问题对应的解;

步骤4、通过所述生成模型和判别模型对当前类别的训练数据进行对抗学习,生成模型和判别模型为两个可学习部分,分别试图最小化和最大化同一个目标函数,称为对抗学习,对抗学习方式确立了有效的学习目标,这里我们将两个可学习部分都设计为神经网络结构。通过不断地对抗学习将解收敛到一个稳定值,即学习到了当前所见训练难度的求解知识;该步骤中在通过不断地对抗学习将解收敛到一个稳定值具体为:通过对抗学习并使用随机梯度下降法(stochasticgradientdescent,简称sgd)对产生的解进行优化,达到最终的优化目标,减少输出的解与真实的解之间的差距,从而将输出的解收敛到一个稳定值;最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。常见的最优化方法有梯度下降法(批量梯度下降法bgd、随机梯度下降法sgd、小批量梯度下降法mbgd)、牛顿法和拟牛顿法、共轭梯度法等等。随机梯度下降每次迭代只使用一个小批量样本,迭代一次计算量为n2,当样本个数m很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的负梯度方向都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况,实际上我们的目标函数高度非凸,梯度下降通常会终止在一个局部最优解附近,不过局部最优通常已经足够好。

步骤5、增加下一类别的训练数据的难度,重复步骤2至步骤4对当前类别的训练数据进行下一轮迭代,每一轮迭代中的生成模型和判别模型是将之前的生成模型和判别模型视为本轮已知的求解知识,将之前训练过的所有生成模型和判别模型作为函数进行调用,利用之前迭代产生的训练数据进行对抗学习,学习解决本轮迭代中的问题,相当于获得了数据的抽象规律,直至完成所有训练数据的对抗学习,如此就集成了所有待解决问题的求解知识;一次抽象是从具体到一般的单一逻辑步骤,以一阶逻辑命题为例,含自由变量的命题是一个具体个例,加上全称量词约束该自由变量得到的命题就是对原命题的一次抽象。每一轮迭代得到的生成模型和判别模型可以视为一种逻辑操作,模型经历一次迭代就可以多使用一种逻辑操作,从而描述更复杂的问题和进行更复杂的解答;

步骤6、将每一轮迭代产生的训练数据存储在对抗神经网络的记忆单元中,当需要用到学习后的训练数据时,再从记忆单元中调用和学习,具体有:

步骤61、采集问题学习后的训练数据,所述学习后的训练数据包括问题信息和对应的解答信息,即所述学习后的训练数据是包括描述问题的问题信息以及描述该问题对应的解答信息,解答信息为在深度神经网络中求解问题所需的求解步骤信息以及每个步骤所产生的状态信息;根据编码模型将所述学习后的训练数据编码成对应的求解特征向量,所述编码模型采用seq2seq模型中的编码器、词袋模型或双向堆叠lstm;将求解特征向量视作为被执行的深度神经网络的表示,并将该求解特征向量存储在深度神经网络的记忆单元中;若干个模块组成了一个深度神经网络,一个模块代表一个求解步骤信息,由一个确定性的解释程序根据seq2seq模型的输出序列生成;探索求解步骤信息,复杂问题可以通过若干步骤被分解为已知的简单问题,即为规律性;

步骤62、输入目标特征向量给深度神经网络;

步骤63、根据查询模型从记忆单元中查找各求解特征向量,分别计算出每个求解特征向量与目标特征向量之间的差值,从记忆单元中提取出与目标特征向量最接近的求解特征向量,差值越小,表示求解特征向量与目标特征向量越接近;具体为:将每个求解特征向量一一与目标特征向量进行比对,并通过向量距离计算公式计算出求解特征向量与目标特征向量之间的距离;

步骤64、将该差值作为新的目标特征向量,输入到深度神经网络中,重复步骤63至步骤64进行下一轮迭代,迭代次数由用户自行设定,若在设定的迭代次数内该差值位于设定范围内,则认为该问题信息描述的问题已被记忆单元中的解答信息所解决,最终提取出最接近的的求解特征向量给解码模型,进入步骤65;否则认为该问题需要新知识来解决,那么将最后的差值存放在记忆单元中;

步骤65、解析模型读取该求解特征向量,并根据该求解特征向量产生对应的指令序列,再根据该指令序列将求解特征向量还原成对应的学习后的训练数据;所述解析模型采用的是seq2seq模型,seq2seq模型的作用是根据一个输入序列x,来生成另一个输出序列y。seq2seq模型有很多的应用,例如翻译、文档摘取、问答系统等等。在翻译中,输入序列是待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,而输出序列是答案。这里是将seq2seq模型应用于问答系统中,输入序列为输入的问题特征向量,输出序列为产生的指令序列,由seq2seq模型中的解码器产生的指令序列进行解码,该指令序列包括包括寻址、读、写和应用变换操作指令;所述指令序列作为学习后的训练数据的调用接口,将学习后的训练数据从深度神经网络中解放出来用于学习问题的规律;深度神经网络作为高层次模型的一部分,提供了问题的一个解决步骤,深度神经网络之间可以多次组合满足任意层次的泛化学习。

实施例一:

比如想让机器学习初等算术。一开始可以先学数数,训练数据就是类似012这样自然数序列,生成模型产生不同于训练数据中的数据,问判别模型序列的下一个数字是什么,能够正确预测下一个数字的判别模型即可认为学会了数数;然后训练数据和生成模型把自然数序列123和1+2=3这样的自然数加法等式放在一起作为一个故事,2+2=?作为提问,产生类似这样的多个故事和提问让判别模型回答,判别模型可以多次调用上一次的数数模型来解决加法,根据获得的激励学习解决模式即调用次数与文本中加数相等的关系,能够正确预测答案的判别模型即可认为学会了自然数加法;之后再依次提供用于学习整数减法、乘法、除法、有理数算术的数据迭代类似过程,最终历次迭代得到的判别模型能够解决初等算术问题。

实施例二:

在记忆存储数据时有,软件项目的数据功能通常以sql或类似查询语言操作数据库来实现,传统上需要专业开发人员编写sql代码,复杂代码容易产生缺陷。本发明的一个应用是记忆类sql代码的表示,根据软件功能的设计描述自动组装出实现功能的sql程序,设计描述是设计人员以规范且简单的自然语言编写的。为了实现一定程度的通用性,神经网络输入输出的类sql代码较数据库可执行的代码进行了更高程度的抽象,具体的表名、字段名抽象为通用的占位符,同时允许另一占位符代表此处应调用其他代码,上述抽象可以由预先确定的程序解析设计描述进行转换;另外我们限定一次输入输出的结果为长度不超过固定范围的一句此类代码,通过调用能力实现复杂功能,这样我们保持欲记忆的代码简单容易学习;下文忽略前述差异,认为本发明的神经网络输入问题描述和对应的sql代码(sql代码是描述求解问题所需的求解步骤信息以及每个步骤所产生的状态信息)并记忆之,输入设计描述来查询,输出最匹配查询的sql代码。可见,该应用的词汇表(包括sql代码和问题描述)预先固定。我们以一个固定维度的向量表示某一词汇即词嵌入,使用一个参数化模型作为编码器将输入的一整句sql代码编码为一个固定维度的向量;当然根据需要编码器可以简单比如词袋模型也可以更复杂比如带注意力机制的双向堆叠lstm(编码器为词袋模型或双向堆叠lstm),不失一般性称为编码器即可。同样也有一个结构类似的参数化模型来解码设计描述,其输出与代码的向量表示维数相同。解码器相当于编码的逆,结构类似编码sql代码的模型的反向。

学习后的训练数据给出若干问题信息和对应的sql代码(对求解问题所需的求解步骤以及每个步骤所产生的状态的信息);将输入的问题描述和对应的sql代码由编码器进行编码,得到求解特征向量并存储于记忆单元中;输入问题特征向量后,查询模型尝试用编码器给出的求解特征向量从记忆单元中查找最接近的求解特征向量,并将求解特征向量交给解码器进行解码,并输出为sql代码;编码器给出的问题特征向量与最接近的求解特征向量的差作为自身的新输入迭代上述查找过程;若在限定迭代次数(迭代次数可自行设定)内剩余的差值足够小(差值范围可自行设定)则认为该设计描述的问题已被记忆中的解所涵盖,否则认为该问题需要新知识来解决,那么将剩余的差值存放在记忆单元新的位置上。整个编码-记忆-查询-解码模型尝试还原接收的学习后的训练数据。

本发明的一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:

步骤1、安排从简单到复杂类别的训练数据作为示范;

步骤2、通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境(类似于让生成模型讲故事,根据训练数据中出现过的词语造句成篇,提问也同样,这里的生成模型一般是一个循环神经网络,从训练数据学习合适的句法和陈述方式),输入当前类别的训练数据到生成模型,所述生成模型根据该训练数据在该问题环境中生成一个待解决问题(训练数据中包含规范且答案确定的问题,生成模型模仿这类数据产生自己的提问);该步骤具体为:

通过所述生成模型来搭建一个符合当前类别的训练数据的问题环境,一个问题环境由复数个表示事实的事实数据和一个表示问题的形式语言组成,事实数据由生成模型从训练数据中抽取,形式语言是根据程序代码预先设计而成的;所述生成模型是一个解码神经网络,以抽取的训练数据作为输入,生成模型根据当前训练数据在该问题环境中生成一个待解决问题;

步骤3、将待解决问题输入给所述判别模型,并通过所述判别模型对待解决问题进行判别和分析,产生待解决问题对应的解;采用对抗方式,将一个生成模型产生的故事和提问混合一个训练数据中的故事和提问,判别模型阅读这两个故事和提问并分别回答,若判别模型错误判断了训练数据中的提问,则给予生成模型激励;若判别模型正确判断了生成模型的提问,则同时给予生成模型和判别模型激励;否则给予判别模型激励;训练收敛的判别模型即可认为学会了解决当前问题,获得了待解决问题对应的解;

步骤4、通过所述生成模型和判别模型对当前类别的训练数据进行对抗学习,生成模型和判别模型为两个可学习部分,分别试图最小化和最大化同一个目标函数,称为对抗学习,对抗学习方式确立了有效的学习目标,这里我们将两个可学习部分都设计为神经网络结构。通过不断地对抗学习将解收敛到一个稳定值,即学习到了当前所见训练难度的求解知识;该步骤中在通过不断地对抗学习将解收敛到一个稳定值具体为:通过对抗学习并使用随机梯度下降法(stochasticgradientdescent,简称sgd)对产生的解进行优化,达到最终的优化目标,减少输出的解与真实的解之间的差距,从而将输出的解收敛到一个稳定值;最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。学习和工作中遇到的大多问题都可以建模成一种最优化模型进行求解,比如我们现在学习的机器学习算法,大部分的机器学习算法的本质都是建立优化模型,通过最优化方法对目标函数(或损失函数)进行优化,从而训练出最好的模型。常见的最优化方法有梯度下降法(批量梯度下降法bgd、随机梯度下降法sgd、小批量梯度下降法mbgd)、牛顿法和拟牛顿法、共轭梯度法等等。随机梯度下降每次迭代只使用一个小批量样本,迭代一次计算量为n2,当样本个数m很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。随机梯度下降---最小化每条样本的损失函数,虽然不是每次迭代得到的负梯度方向都向着全局最优方向,但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况,实际上我们的目标函数高度非凸,梯度下降通常会终止在一个局部最优解附近,不过局部最优通常已经足够好。

步骤5、增加下一类别的训练数据的难度,重复步骤2至步骤4对当前类别的训练数据进行下一轮迭代,每一轮迭代中的生成模型和判别模型是将之前的生成模型和判别模型视为本轮已知的求解知识,将之前训练过的所有生成模型和判别模型作为函数进行调用,利用之前迭代产生的训练数据进行对抗学习,学习解决本轮迭代中的问题,相当于获得了数据的抽象规律,直至完成所有训练数据的对抗学习,如此就集成了所有待解决问题的求解知识;一次抽象是从具体到一般的单一逻辑步骤,以一阶逻辑命题为例,含自由变量的命题是一个具体个例,加上全称量词约束该自由变量得到的命题就是对原命题的一次抽象。每一轮迭代得到的生成模型和判别模型可以视为一种逻辑操作,模型经历一次迭代就可以多使用一种逻辑操作,从而描述更复杂的问题和进行更复杂的解答;

步骤6、将每一轮迭代产生的训练数据存储在对抗神经网络的记忆单元中,当需要用到学习后的训练数据时,再从记忆单元中调用和学习,具体有:

步骤61、采集问题学习后的训练数据,所述学习后的训练数据包括问题信息和对应的解答信息,即所述学习后的训练数据是包括描述问题的问题信息以及描述该问题对应的解答信息,解答信息为在深度神经网络中求解问题所需的求解步骤信息以及每个步骤所产生的状态信息;根据编码模型将所述学习后的训练数据编码成对应的求解特征向量,所述编码模型采用seq2seq模型中的编码器、词袋模型或双向堆叠lstm;将求解特征向量视作为被执行的深度神经网络的表示,并将该求解特征向量存储在深度神经网络的记忆单元中;若干个模块组成了一个深度神经网络,一个模块代表一个求解步骤信息,由一个确定性的解释程序根据seq2seq模型的输出序列生成;探索求解步骤信息,复杂问题可以通过若干步骤被分解为已知的简单问题,即为规律性;

步骤62、输入目标特征向量给深度神经网络;

步骤63、根据查询模型从记忆单元中查找各求解特征向量,分别计算出每个求解特征向量与目标特征向量之间的差值,从记忆单元中提取出与目标特征向量最接近的求解特征向量,差值越小,表示求解特征向量与目标特征向量越接近;具体为:将每个求解特征向量一一与目标特征向量进行比对,并通过向量距离计算公式计算出求解特征向量与目标特征向量之间的距离;

步骤64、将该差值作为新的目标特征向量,输入到深度神经网络中,重复步骤63至步骤64进行下一轮迭代,迭代次数由用户自行设定,若在设定的迭代次数内该差值位于设定范围内,则认为该问题信息描述的问题已被记忆单元中的解答信息所解决,最终提取出最接近的的求解特征向量给解码模型,进入步骤65;否则认为该问题需要新知识来解决,那么将最后的差值存放在记忆单元中;

步骤65、解析模型读取该求解特征向量,并根据该求解特征向量产生对应的指令序列,再根据该指令序列将求解特征向量还原成对应的学习后的训练数据;所述解析模型采用的是seq2seq模型,seq2seq模型的作用是根据一个输入序列x,来生成另一个输出序列y。seq2seq模型有很多的应用,例如翻译、文档摘取、问答系统等等。在翻译中,输入序列是待翻译的文本,输出序列是翻译后的文本;在问答系统中,输入序列是提出的问题,而输出序列是答案。这里是将seq2seq模型应用于问答系统中,输入序列为输入的问题特征向量,输出序列为产生的指令序列,由seq2seq模型中的解码器产生的指令序列进行解码,该指令序列包括包括寻址、读、写和应用变换操作指令;所述指令序列作为学习后的训练数据的调用接口,将学习后的训练数据从深度神经网络中解放出来用于学习问题的规律;深度神经网络作为高层次模型的一部分,提供了问题的一个解决步骤,深度神经网络之间可以多次组合满足任意层次的泛化学习。

实施例一:

比如想让机器学习初等算术。一开始可以先学数数,训练数据就是类似012这样自然数序列,生成模型产生不同于训练数据中的数据,问判别模型序列的下一个数字是什么,能够正确预测下一个数字的判别模型即可认为学会了数数;然后训练数据和生成模型把自然数序列123和1+2=3这样的自然数加法等式放在一起作为一个故事,2+2=?作为提问,产生类似这样的多个故事和提问让判别模型回答,判别模型可以多次调用上一次的数数模型来解决加法,根据获得的激励学习解决模式即调用次数与文本中加数相等的关系,能够正确预测答案的判别模型即可认为学会了自然数加法;之后再依次提供用于学习整数减法、乘法、除法、有理数算术的数据迭代类似过程,最终历次迭代得到的判别模型能够解决初等算术问题。

实施例二:

在记忆存储数据时有,软件项目的数据功能通常以sql或类似查询语言操作数据库来实现,传统上需要专业开发人员编写sql代码,复杂代码容易产生缺陷。本发明的一个应用是记忆类sql代码的表示,根据软件功能的设计描述自动组装出实现功能的sql程序,设计描述是设计人员以规范且简单的自然语言编写的。为了实现一定程度的通用性,神经网络输入输出的类sql代码较数据库可执行的代码进行了更高程度的抽象,具体的表名、字段名抽象为通用的占位符,同时允许另一占位符代表此处应调用其他代码,上述抽象可以由预先确定的程序解析设计描述进行转换;另外我们限定一次输入输出的结果为长度不超过固定范围的一句此类代码,通过调用能力实现复杂功能,这样我们保持欲记忆的代码简单容易学习;下文忽略前述差异,认为本发明的神经网络输入问题描述和对应的sql代码(sql代码是描述求解问题所需的求解步骤信息以及每个步骤所产生的状态信息)并记忆之,输入设计描述来查询,输出最匹配查询的sql代码。可见,该应用的词汇表(包括sql代码和问题描述)预先固定。我们以一个固定维度的向量表示某一词汇即词嵌入,使用一个参数化模型作为编码器将输入的一整句sql代码编码为一个固定维度的向量;当然根据需要编码器可以简单比如词袋模型也可以更复杂比如带注意力机制的双向堆叠lstm(编码器为词袋模型或双向堆叠lstm),不失一般性称为编码器即可。同样也有一个结构类似的参数化模型来解码设计描述,其输出与代码的向量表示维数相同。解码器相当于编码的逆,结构类似编码sql代码的模型的反向。

学习后的训练数据给出若干问题信息和对应的sql代码(对求解问题所需的求解步骤以及每个步骤所产生的状态的信息);将输入的问题描述和对应的sql代码由编码器进行编码,得到求解特征向量并存储于记忆单元中;输入问题特征向量后,查询模型尝试用编码器给出的求解特征向量从记忆单元中查找最接近的求解特征向量,并将求解特征向量交给解码器进行解码,并输出为sql代码;编码器给出的问题特征向量与最接近的求解特征向量的差作为自身的新输入迭代上述查找过程;若在限定迭代次数(迭代次数可自行设定)内剩余的差值足够小(差值范围可自行设定)则认为该设计描述的问题已被记忆中的解所涵盖,否则认为该问题需要新知识来解决,那么将剩余的差值存放在记忆单元新的位置上。整个编码-记忆-查询-解码模型尝试还原接收的学习后的训练数据。

综上所述,本发明的优点如下:

本发明的对抗学习提供了一种有效表示数据分布的无监督学习方法,无监督学习方法只处理“特征”,不操作监督信号,减少了数据的监督部分,无监督学习的大多数尝试是指从不需要人为注释的样本的分布中抽取信息,无监督学习方法与监督学习方法相比,无监督学习方法训练含有较少的数据集,数据集可以无标签,大幅减小了训练数据规模,通过对抗学习方法降低了训练数据需求;通过逐渐增加难度的训练和对抗神经网络模型的集成,使得神经网络模型可以学习到数据的抽象规律。

虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

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