掌桥专利:专业的专利平台
掌桥专利
首页

神经网络的训练方法及其装置、计算机设备、存储介质

文献发布时间:2023-06-19 16:11:11



技术领域

本申请涉及人工智能(artificial intelligence,AI)技术领域,特别涉及一种神经网络的训练方法及其装置、计算机设备、存储介质。

背景技术

随着神经网络的普及,神经网络应用到了越来越多的领域。在使用神经网络之前,通常需要设计初始的神经网络,并使用训练样本对该初始的神经网络进行训练,以保证神经网络的性能。

相关技术中,通常使用梯度下降法对神经网络进行训练。其训练过程包括多个迭代过程,每个迭代过程包括:将训练样本输入初始神经网络,并获取初始神经网络针对该训练样本的输出结果,然后根据该输出结果相对于训练样本的误差,计算本次迭代过程中对初始神经网络进行参数更新使用的梯度,使得本次迭代过程中根据该梯度更新初始神经网络中神经元的权重和偏置项等参数。

但是,根据该梯度下降法对初始神经网络进行训练的训练效率有待进一步提高。

发明内容

本申请提供了一种神经网络的训练方法及其装置、计算机设备、存储介质,提高了对初始神经网络进行训练的训练效率。本申请提供的技术方案如下:

第一方面,本申请提供了一种神经网络的训练方法,该方法包括:获取训练数据集和待训练神经网络,其中,训练数据集中包括多个训练样本;利用训练数据集中的多个训练样本对待训练神经网络进行迭代训练,在迭代训练的过程中:获取第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,其中,N为正整数;基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数;基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新。其中,动量系数用于衡量第N次迭代过程之前的迭代过程中使用的梯度的累积值对实际更新量的贡献量。

通过在对待训练神经网络的迭代训练过程中,基于第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,确定第N次迭代过程中使用的动量系数,然后基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新,能够使得在不同次迭代过程中使根据不同的动量系数对神经网络的参数进行更新,有利于找到对神经网络进行训练的更优优化路径,有助于提高对神经网络进行训练的效率。

在一种可实现方式中,基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数,包括:基于第N次迭代过程中的训练样本和输出结果,分别确定第N次迭代过程中待训练神经网络的各个隐含层使用的动量系数。

在任一次迭代过程中,通过分别确定待训练神经网络的各个隐含层使用的动量系数,能够以隐含层为粒度调整动量系数,细化了调整动量系数的粒度,能够进一步提高对神经网络进行训练的效率。

可选的,基于第N次迭代过程中的训练样本和输出结果,分别确定第N次迭代过程中待训练神经网络的各个隐含层使用的动量系数,包括:基于第N次迭代过程中的训练样本和输出结果,获取第N次迭代过程中任一隐含层的参考梯度;获取任一隐含层在第N次迭代过程之前的迭代过程中的参考梯度;基于任一隐含层的第N次及之前的迭代过程中的参考梯度,确定第N次迭代过程中任一隐含层使用的动量系数。

进一步的,基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数,包括:基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的参考动量系数;基于用户输入的调整指示和参考动量系数,得到动量系数。

通过基于用户输入的调整指示,对参考动量系数进行更新,能够在确定动量系数的过程中注入人为经验,能够进一步地提高对神经网络进行训练的效率。

可选的,基于用户输入的调整指示和参考动量系数,得到动量系数,还包括:当参考动量系数位于调整指示指定的动量系数范围内时,将参考动量系数确定为动量系数;当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数。

在一种可实现方式中,当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数,包括:当参考动量系数大于动量系数范围的上限值时,将上限值确定为动量系数;当参考动量系数小于动量系数范围的下限值时,将下限值确定为动量系数。

可选的,基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新,包括:

基于动量系数,对第N次迭代过程中待训练神经网络的参考梯度进行更新;

基于更新的梯度,对待训练神经网络的参数进行更新。

第二方面,本申请提供了一种神经网络的训练装置,该装置包括:获取模块,用于获取训练数据集和待训练神经网络,其中,训练数据集中包括多个训练样本;获取模块,还用于利用训练数据集中的多个训练样本对待训练神经网络进行迭代训练,在迭代训练的过程中:获取第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,其中,N为正整数;确定模块,用于基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数;更新模块,用于基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新。

可选的,确定模块,具体用于:基于第N次迭代过程中的训练样本和输出结果,分别确定第N次迭代过程中待训练神经网络的各个隐含层使用的动量系数。

可选的,确定模块,具体用于:基于第N次迭代过程中的训练样本和输出结果,获取第N次迭代过程中任一隐含层的参考梯度;获取任一隐含层在第N次迭代过程之前的迭代过程中的参考梯度;基于任一隐含层的第N次及之前的迭代过程中的参考梯度,确定第N次迭代过程中任一隐含层使用的动量系数。

可选的,确定模块,具体用于:基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的参考动量系数;基于用户输入的调整指示和参考动量系数,得到动量系数。

可选的,确定模块,具体用于:当参考动量系数位于调整指示指定的动量系数范围内时,将参考动量系数确定为动量系数;当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数。

可选的,确定模块,具体用于:当参考动量系数大于动量系数范围的上限值时,将上限值确定为动量系数;当参考动量系数小于动量系数范围的下限值时,将下限值确定为动量系数。

可选的,更新模块,具体用于:基于动量系数,对第N次迭代过程中待训练神经网络的参考梯度进行更新;基于更新的梯度,对待训练神经网络的参数进行更新。

第三方面,本申请提供了一种计算机设备,计算机设备包括:处理器和存储器,存储器中存储有计算机程序;处理器执行计算机程序时,计算机设备实现本申请第一方面及任一可选的实现方式提供的方法。

第四方面,本申请提供了一种非瞬态的计算机可读存储介质,当该计算机可读存储介质中的指令被处理器执行时,实现本申请第一方面及任一可选的实现方式提供的方法。

第五方面,本申请提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请第一方面及任一可选的实现方式提供的方法。

附图说明

图1是本申请实施例提供的一种神经网络的训练方法涉及的训练装置的示意图;

图2是本申请实施例提供的另一种神经网络的训练方法涉及的训练装置的示意图;

图3是本申请实施例提供的一种神经网络的训练方法涉及的应用场景的示意图;

图4是本申请实施例提供的一种神经网络的训练方法的流程图;

图5是本申请实施例提供的另一种神经网络的训练方法涉及的应用场景的示意图;

图6是本申请实施例提供的一种基于训练样本和输出结果,确定第N次迭代过程中使用的动量系数的方法流程图;

图7是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

随着深度学习技术(deep learning)的发展,越来越多的用户使用深度神经网络(deep neural network,DNN,也称深层次神经网络)解决问题。其中,深度学习是一类采用深度神经网络解决问题的机器学习技术,其主要特征是使用多重非线性变换结构对数据进行处理和分析。深度学习主要应用于人工智能领域的感知和决策等场景,例如图像和语音识别、自然语言翻译、计算机博弈等场景。深度神经网络是深度学习的一种框架,它是一种具备至少一个隐含层的神经网络。深度神经网络与浅层神经网络类似,深度神经网络能够在更高的抽象层次上为复杂非线性系统提供建模,提高了模型的能力。

类似于深度神经网络,浅层神经网络也得到了广泛的应用,浅层神经网络与深度神经网络的主要区别在于隐含层的数目(也称为深度)相差较大。该深度神经网络和浅层神经网络统称为神经网络,根据不同的应用需求,可以采用不同深度的神经网络用于实际应用场景。在使用神经网络之前,需要对神经网络进行训练,使得神经网络具有较好的性能,提高使用该神经网络解决问题的效率和准确度。通常的,采用随机梯度下降(stochasticgradient descent,SGD)方法对神经网络进行训练。随机梯度下降方法也称为增量梯度下降方法,其实质是优化器(optimizer),其通过根据小批量训练样本计算损失函数(lossfunction)的梯度,并根据梯度迭代地优化神经网络中神经元的权重与偏置项等参数,实现对神经网络的训练。其中,损失函数是训练过程中需要被优化的目标函数,该损失函数是一个对神经网络的参数可导的函数。

随机梯度下降方法将第N次迭代过程之前的迭代过程中使用的梯度进行累积,并将梯度的累积值与第N次迭代过程中根据损失函数得到的梯度结合,作为第N次迭代过程中对神经网络的参数进行更新的实际更新量,该实际更新量即为第N次迭代过程中对神经网络的参数进行更新实际使用的梯度。随机梯度下降方法能够使神经网络的损失函数更快速地收敛到最优解。其中,动量(momentum)系数用于衡量第N次迭代过程之前的迭代过程中使用的梯度的累积值对实际更新量的贡献量。动量系数的取值范围为[0,1]。在一种可实现方式中,第N次迭代过程中的实际更新量=第N次迭代过程中根据损失函数得到的参考梯度+动量系数×第N次迭代过程之前的迭代过程中使用的梯度的累积值。该第N次迭代过程之前的迭代过程中使用的梯度的累积值可以等于第N-1次迭代过程中的实际更新量。

目前,采用随机梯度下降方法训练神经网络的过程中,在整个训练过程中采用相同的动量系数对神经网络进行训练,也即在计算每次迭代过程中的实际更新量时,梯度的累积值对实际更新量的贡献量均相同。然而,对于神经网络这种具有多层结构的模型,在整个训练过程中采用相同的动量系数对神经网络进行训练,限制了训练过程中寻找更优的优化路径的可能性。因此,根据该随机梯度下降法对神经网络进行训练的训练效率有待进一步提高。

本申请实施例提供了一种神经网络的训练方法。在对待训练神经网络的迭代训练过程中,通过基于第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,确定第N次迭代过程中使用的动量系数,然后基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新,能够在每次迭代过程中计算第N次迭过程中使用的动量系数,使得在不同次迭代过程中根据不同的动量系数对神经网络的参数进行更新,有利于找到对神经网络进行训练的更优优化路径,有助于提高对神经网络进行训练的效率。

本申请实施例提供的神经网络的训练方法可应用于神经网络的训练装置。该训练装置用于执行本申请实施例提供的神经网络的训练方法。可选地,该训练装置可以通过终端、物理机、裸金属服务器、云服务器、虚拟机或容器等实现。

训练装置可以在逻辑上分成多个部分,每个部分具有不同的功能。例如,如图1所示,训练装置10可以包括以下几个功能模块:获取模块101、确定模块102和训练模块103。获取模块101用于获取训练数据集和待训练神经网络,及在对待训练神经网络的迭代训练过程中,获取第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果。确定模块102用于基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数。更新模块103用于基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新。又例如,如图2所示,训练装置10还可以包括:初始化模块104,该初始化模块104用于在启动对神经网络的训练时,对神经网络中的每个网络层的参数进行初始化(即向神经网络的参数赋予初始值)。

并且,训练装置的多个部分可以独立地部署在终端、物理机、裸金属服务器、云服务器、虚拟机或容器上。或者,训练装置的多个部分可以分布式地部署在终端、多个物理机、多个裸金属服务器、多个云服务器、多个虚拟机和多个容器中的一个或多个上,该分布式部署的多个部分协同实现训练装置的全部功能。

在一种可实现方式中,训练装置可以部署在云平台的物理机、裸金属服务器、云服务器、虚拟机和容器中的一个或多个。云平台中部署有云服务提供商拥有的大量基础资源。例如云平台中部署有计算资源、存储资源和网络资源等,且该计算资源可以是大量的计算机设备(例如服务器)。训练装置可以利用该云平台中部署的基础资源实现本申请实施例提供的神经网络的训练方法,实现对神经网络的训练。

此时,如图3所示,本申请实施例提供的神经网络的训练方法能够由云服务提供商在云平台抽象成一种用于对神经网络进行训练的云服务(下文称为训练云服务)提供给用户。用户在云平台购买训练云服务后,云平台能够利用训练装置对用户提供对神经网络进行训练的云服务。并且,根据应用需求,云平台可以向用户提供不同服务粒度的训练云服务。下面以三种服务粒度为例,对训练云服务的实现方式进行说明:

在第一种可实现方式中,用户在购买训练云服务后,将待训练的神经网络发送至云平台中,云平台利用训练云服务对该用户提供的神经网络进行训练,并向用户提供训练完成的神经网络。

在第二种可实现方式中,用户在购买训练云服务后,将待训练的神经网络和该神经网络的相关用户参数发送至云平台,云平台利用该云平台的开发能力,根据该相关用户参数和本申请实施例提供的神经网络的训练方法,开发得到用于训练该神经网络的训练代码包,然后使用该训练代码包对该神经网络进行训练,并向用户提供训练完成的神经网络。

在第三种可实现方式中,用户在购买训练云服务后,将用于实现本申请实施例提供的神经网络的训练方法的相关代码下载至用户使用的终端中,然后用户使用自己提供的开发能力,开发得到用于训练待训练的神经网络的训练代码包,然后将待训练的神经网络和该训练代码包发送至云平台,云平台使用该云平台的资源运行该训练代码包对该待训练的神经网络进行训练,然后向用户提供训练完成的神经网络。

可选地,在本申请实施例中,云平台可以是中心云的云平台、边缘云的云平台或包括中心云和边缘云的云平台,本申请实施例对其不做具体限定。并且,当云平台为包括中心云和边缘云的云平台时,该训练装置可以部分部署在边缘云的云平台中,部分部署在中心云的云平台中。

应理解的是,以上对训练装置中功能模块的划分方式和部署方式仅为示意性的举例,本申请不对训练装置中功能模块的划分方式和各功能模块的部署方式进行限定,实际应用时可根据用于部署训练装置的计算设备的计算能力或具体应用需求进行适应性的部署。

下面对本申请实施例提供的一种神经网络的训练方法的实现过程进行说明。如图4所示,该神经网络的训练方法的实现过程可以包括以下步骤:

步骤401、获取训练数据集和待训练神经网络。

训练数据集和待训练神经网络可以由用户提供。其中,如图5所示,用户可以提供训练样本,构建并提供待训练神经网络,以便于训练装置基于该训练样本对待训练神经网络进行训练。其中,训练数据集中包括多个训练样本。

步骤402、利用训练数据集中的多个训练样本对待训练神经网络进行迭代训练,在迭代训练的过程中:获取第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络针对训练样本的输出结果,其中,N为正整数。

对待训练神经网络进行训练的过程包括多个迭代过程。在第N次迭代过程中,训练装置会向神经网络输入训练样本,神经网络会根据该神经网络当前的参数对训练样本进行处理,并输出针对训练样本的输出结果,然后,训练装置会根据该训练样本和输出结果,确定第N次迭代过程的损失函数是否达到最优解,当损失函数未达到最优解时,根据第N次迭代过程的训练样本和输出结果确定损失函数的梯度,然后根据该梯度调整神经网络的参数,以便于根据调整参数后的待训练神经网络执行第N+1次迭代过程。因此,训练装置能够获取第N次迭代过程中的训练样本和该神经网络针对该训练样本的输出结果。其中,N为正整数。

步骤403、基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数。

可选地,当神经网络包括多个隐含层时,对神经网络进行训练时,在同一迭代过程中,不同隐含层使用的动量系数可以相同或不同。相应的,当同一迭代过程中不同隐含层使用的动量系数不同时,基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数的实现过程包括:基于第N次迭代过程中的训练样本和输出结果,分别确定第N次迭代过程中待训练神经网络的各个隐含层使用的动量系数。

下面以同一迭代过程中不同隐含层使用的动量系数不同为例,对确定神经网络的多个隐含层中的目标隐含层使用的动量系数的实现过程进行说明,当同一迭代过程中不同隐含层使用相同动量系数时,其确定动量系数的实现过程请相应参考该实现过程。其中,该目标隐含层为该多个隐含层中的任一个隐含层。如图6所示,其实现过程包括:

步骤4031a、基于第N次迭代过程中的训练样本和输出结果,获取第N次迭代过程中目标隐含层的参考梯度。

训练装置根据第N次迭代过程中的训练样本和输出结果,能够得到第N次迭代过程中损失函数的值。且损失函数是一个对神经网络的参数可导的函数,则根据第N次迭代的损失函数的值和第N次迭代过程中目标隐含层的参数的取值,通过对损失函数求导,能够确定第N次迭代过程中目标隐含层的参考梯度。

步骤4031b、获取目标隐含层在第N次迭代过程之前的迭代过程中的参考梯度。

在每次迭代过程中,都会向待训练神经网络输入训练样本,且待训练神经网络均会根据训练样本产生输出结果,因此,可以分别根据每次迭代过程中的训练样本和输出结果,确定对应次迭代过程中的参考梯度。

步骤4031c、基于目标隐含层的第N次及之前的迭代过程中的参考梯度,确定第N次迭代过程中目标隐含层使用的动量系数。

在第N次迭代过程中,可以根据目标隐含层的第N次及之前的迭代过程中的参考梯度,判断目标隐含层的参数在当前梯度方向上的累积程度是否足够,并在累积程度不够时,根据该累积程度,对指定动量系数进行调整,得到第N次迭代过程中目标隐含层使用的动量系数,以便于根据该动量系数对目标隐含层的参数进行调整后能够在当前梯度方向上取得较合适的累积程度。其中,指定动量系数可以应用需求进行设置。例如,根据经验设定指定动量系数为0.9或0.95。

其中,累积程度可以根据目标隐含层的第N次及之前的迭代过程中的迭代过程中的参考梯度确定。在一种可实现方式中,在第N次迭代过程中,可以确定目标隐含层的第N-1次及之前的迭代过程中的参考梯度的绝对值的累积值,并计算该累积值的二范数(下文称第一二范数),然后确定第N次迭代过程中的参考梯度的二范数(下文称第二二范数),再计算第一二范数与第二二范数的比值,如果该比值较大,说明在当前梯度方向上的累积程度已经较大,可以通过动量系数减小在这个方向上的累积,如果该比值较小,说明在当前梯度方向上的累积程度还较小,可以通过动量系数增大在当前梯度方向上的累积。并且,动量系数在该调整过程中的调整作用表现为:当训练过程的学习曲线震荡较大时,使用较大的动量系数进行调整,训练过程的学习曲线震荡较小时,使用较小的动量系数进行调整,通过控制震荡实现对训练过程的调整并加速训练进程。

可选的,目标隐含层的的第i次及之前的迭代过程中的参考梯度的绝对值的累积值L1(i)、第i-1次迭代过程中目标隐含层的参考梯度的绝对值的累积值L1(i-1)、第i次迭代过程目标隐含层的参考梯度T(i)和第i次迭代过程中该目标隐含层使用的动量系数M(i)满足:L1(i)=L1(i-1)×M(i)+|T(i)|。其中,i为正整数,|x|表示x的绝对值。

因此,可以在第N次迭代过程中,基于目标隐含层的第一二范数与第二二范数的比值,确定加权系数,然后将使用该加权系数对指定动量系数进行调整后的结果,确定为第N次迭代过程中目标隐含层使用的动量系数。其中,使用该加权系数对指定动量系数进行调整包括:将该加权系数与指定动量系数的乘积确定为调整后的动量系数。

可选地,确定加权系数的实现过程包括:根据指定动量系数和累积程度确定调整系数,然后根据该调整系数,对目标隐含层的第一二范数与第二二范数的比值进行调整,得到加权系数。在一种可实现方式中,根据调整系数对比值进行调整包括:根据调整系数对指定动量系数进行调整,根据调整后的指定动量系数对该比值进行调整。并且,为减小指定动量系数与该比值在数量级上的差别,可以先对指定动量系数进行空间映射,然后使用调整系数对映射后的指定动量系数进行调整,再对调整后的指定动量系数进行空间反映射,得到根据调整系数调整后的指定动量系数。

在一种可实现方式中,对指定动量系数进行空间映射包括:获取指定动量系数的自然对数。对调整后的指定动量系数进行空间反映射包括:获取调整后的指定动量系数的以e为底的指数。根据调整后的指定动量系数对该比值进行调整,包括:将该比值与调整后的指定动量系数的比值确定为加权系数。

通过针对不同隐含层确定动量系数,能够在梯度下降迭代中对神经网络进行逐层适应地动态调整隐含层使用的动量系数,能够便于训练装置寻找对神经网络进行训练的更优的优化路径,从而使得神经网络达到更高的训练精度。

需要说明的是,根据训练样本和输出结果确定第N次迭代过程中使用的动量系数后,可以直接使用该动量系数对神经网络进行训练。或者,在根据训练样本和输出结果确定第N次迭代过程中使用的动量系数后,还可以根据用户的指示对根据训练样本和输出结果确定的动量系数进行更新。下面对根据用户的指示对动量系数进行更新的实现过程进行说明,且为便于区分,在下文中将根据用户的指示调整之前的动量系数称为参考动量系数。

可选地,根据用户的指示对动量系数进行更新的实现过程包括:当参考动量系数位于调整指示指定的动量系数范围内时,将参考动量系数确定为动量系数;当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数。

在一种可实现方式中,当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数,包括:当参考动量系数大于动量系数范围的上限值时,将上限值确定为动量系数;当参考动量系数小于动量系数范围的下限值时,将下限值确定为动量系数。或者,当参考动量系数位于动量系数范围外时,也可以采用其他实现方式对参考动量系数进行更新,例如,当参考动量系数大于动量系数范围的上限值时,将参考动量系数与该上限值的加权和确定为动量系数,本申请实施例对其不做具体限定。

通过基于用户输入的调整指示,对参考动量系数进行更新,能够在确定动量系数的过程中注入人为经验,能够进一步地提高对神经网络进行训练的效率。

例如,该步骤403可以由优化器执行,如图5所示,优化器确定模块获取训练样本和输出结果后,可以根据该训练样本和输出结果确定第N次迭代过程中神经网络中各个隐含层的参考梯度(如图5中g1至gn),并计算各个隐含层在第N-1次及之前的迭代过程中的参考梯度的绝对值的累积值(如图5中v1至vn),再根据各个隐含层对应的累积值和第N次迭代过程中的参考梯度,确定第N次迭代过程中各个隐含层使用的动量系数(如图5中m1至mn)。并且,用户还可以向优化器提供调整指示,使得优化器根据该调整指示对根据累积值和参数梯度确定的动量系数(即参考动量系数)进行调整,得到用于对神经网络进行训练的动量系数。

步骤404、基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新。

可选地,可以基于动量系数,对第N次迭代过程中待训练神经网络的参考梯度进行更新,并基于更新的梯度,对待训练数据网络的参数进行更新。例如,可以采用随机梯度下降法对神经网络进行训练。也即是,在第N次迭代过程中,将第N次迭代过程之前的迭代过程中的使用的梯度进行累积,并将梯度的累积值与该第N次迭代过程的参考梯度结合,作为第N次迭代过程中对神经网络的参数进行迭代的实际更新量,即得到更新的梯度,并使用该更新的梯度对待训练神经网络的参数进行更新。其中,将梯度的累积值与第N次迭代过程的参考梯度结合包括:确定加权后的累积值和该第N次迭代过程的梯度的和。其中,累积值的加权系数为步骤403确定的动量系数。在一种可实现方式中,第N次迭代过程中的实际更新量=第N次迭代过程中根据损失函数得到的参考梯度+动量系数×第N次迭代过程之前的迭代过程中使用的梯度的累积值。

综上所述,在本申请实施例提供的神经网络的训练方法中,通过在对待训练神经网络的迭代训练过程中,基于第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,确定第N次迭代过程中使用的动量系数,然后基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新,能够在每次迭代过程中计算第N次迭过程中使用的动量系数,使得在不同次迭代过程中使根据不同的动量系数对神经网络的参数进行更新,有利于找到对神经网络进行训练的更优优化路径,有助于提高对神经网络进行训练的效率。

需要说明的是,本申请实施例提供的神经网络的训练方法的步骤先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。

本申请实施例还提供了一种神经网络的训练装置。该神经网络的训练装置的结构示意图请参考图1,如图1所示,该神经网络的训练装置70包括:

获取模块101,用于获取训练数据集和待训练神经网络,其中,训练数据集中包括多个训练样本。

获取模块101,还用于利用训练数据集中的多个训练样本对待训练神经网络进行迭代训练,在迭代训练的过程中:获取第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,其中,N为正整数。

确定模块102,用于基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的动量系数。

更新模块103,用于基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新。

可选的,确定模块102,具体用于:基于第N次迭代过程中的训练样本和输出结果,分别确定第N次迭代过程中待训练神经网络的各个隐含层使用的动量系数。

可选的,确定模块102,具体用于:基于第N次迭代过程中的训练样本和输出结果,获取第N次迭代过程中任一隐含层的参考梯度;获取任一隐含层在第N次迭代过程之前的迭代过程中的参考梯度;基于任一隐含层的第N次及之前的迭代过程中的参考梯度,确定第N次迭代过程中任一隐含层使用的动量系数。

可选的,确定模块102,具体用于:基于第N次迭代过程中的训练样本和输出结果,确定第N次迭代过程中使用的参考动量系数;基于用户输入的调整指示和参考动量系数,得到动量系数。

可选的,确定模块102,具体用于:当参考动量系数位于调整指示指定的动量系数范围内时,将参考动量系数确定为动量系数;当参考动量系数位于动量系数范围外时,基于动量系数范围的上限值和下限值更新参考动量系数,得到动量系数。

可选的,确定模块102,具体用于:当参考动量系数大于动量系数范围的上限值时,将上限值确定为动量系数;当参考动量系数小于动量系数范围的下限值时,将下限值确定为动量系数。

可选的,更新模块103,具体用于:基于动量系数,对第N次迭代过程中待训练神经网络的参考梯度进行更新;基于更新的梯度,对待训练神经网络的参数进行更新。

综上所述,在本申请实施例提供的神经网络的训练装置中,通过在对待训练神经网络的迭代训练过程中,确定模块基于第N次迭代过程中向待训练神经网络输入的训练样本,及待训练神经网络在第N次迭代过程中针对训练样本的输出结果,确定第N次迭代过程中使用的动量系数,然后更新模块基于动量系数,在第N次迭代过程中对待训练神经网络的参数进行更新,能够在每次迭代过程中计算第N次迭过程中使用的动量系数,使得在不同次迭代过程中使根据不同的动量系数对神经网络的参数进行更新,有利于找到对神经网络进行训练的更优优化路径,有助于提高对神经网络进行训练的效率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应内容,在此不再赘述。

图7是本申请实施例提供的一种计算机设备的结构示意图。图1或图2所示的训练装置可部署在该计算机设备中。如图7所示,该计算机设备70包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。并且,该计算机设备70可以包括多个处理器702,以便于通过不同的处理器实现上述不同功能模块的功能。

存储器701可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器701可以存储可执行代码序,当存储器701中存储的可执行代码被处理器702执行时,处理器702和通信接口703用于执行本申请实施例提供的神经网络的训练方法。存储器701中还可以包括操作系统等其他运行进程所需的软件模块和数据等。且操作系统可以为LINUX,UNIX,WINDOWSTM等。

处理器702可以采用通用的中央处理器(central processing unit,CPU),微处理器,应用专用集成电路(application specific integrated circuit,ASIC),图形处理器(graphics processing unit,GPU)或者一个或多个集成电路。

处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络的训练方法的部分或全部功能可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例的神经网络的训练方法。

通信接口703使用例如但不限于收发器一类的收发模块,来实现计算机设备70与其他设备或通信网络之间的通信。例如,通信接口703可以是以下器件的任一种或任一种组合:网络接口(如以太网接口)、无线网卡等具有网络接入功能的器件。

总线704可包括在计算机设备70各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。

上述每个计算机设备70间通过通信网络建立通信通路。每个计算机设备70用于实现本申请实施例提供的神经网络的训练方法的部分功能。任一计算机设备70可以为云数据中心中的计算机设备(例如:服务器),或边缘数据中心中的计算机设备等。

上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。提供数据同步云服务的计算机程序产品包括一个或多个计算机指令,在计算机设备上加载和执行这些计算机程序指令时,全部或部分地实现本申请实施例提供的神经网络的训练方法的流程或功能。

计算机设备可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质存储有提供数据同步云服务的计算机程序指令。

本申请实施例还提供了一种存储介质,该存储介质为非易失性计算机可读存储介质,当存储介质中的指令被处理器执行时,实现如本申请实施例提供的神经网络的训练方法。

本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请实施例提供的神经网络的训练方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本申请实施例中,术语“第一”、“第二”和“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”是指一个或多个,术语“多个”指两个或两个以上,除非另有明确的限定。

本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的构思和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120114733729