一种确定学习率的方法和装置与流程

文档序号:18217458发布日期:2019-07-19 22:44阅读:390来源:国知局
一种确定学习率的方法和装置与流程

本申请涉及计算领域,并且更具体地,涉及一种确定学习率的方法、装置、服务器以及计算机可读存储介质。



背景技术:

深度学习模型是一种基于深层次的神经网络算法的学习技术,训练深度学习模型的过程也就是学习参数矩阵的过程,其最终的目的就是寻找一组最优值的过程。通过深度学习模型的输出层输出的预测值与训练数据的先验知识(priorknowledge)之间的误差对深度学习模型的每一层神经元的参数矩阵(每一层神经元的参数矩阵包括该层神经元包括的每个神经元对应的权重)进行修正和更新,使得在经过多次迭代训练之后,深度学习模型的输出层输出的预测值尽可能的接近训练数据的先验知识。

在对每一层神经元的参数矩阵进行修正和更新的过程中,通过控制学习率来控制参数矩阵的更新速度。现有的分层自适应学习率(layer-wiseadaptiveratescaling,lars)算法中,根据每一层神经元上对应的参数矩阵中的权重以及该权重的梯度,分别计算出每一层神经元对应的学习率,并根据每一层神经元对应的学习率分别对每一层神经元上的参数矩阵中的权重进行修正。由于在每一次迭代训练过程中,均需要对每一层神经元计算对应的学习率,导致深度学习模型的训练时间较长。

因此,如何降低深度学习模型的迭代训练时间成为业界亟需要解决的问题。



技术实现要素:

本申请提供一种确定学习率的方法和装置,可以减小计算学习率的迭代次数,使得计算学习率的次数小于深度学习模型的迭代次数,从而可以避免现有技术中每一次迭代训练中均需要计算一次学习率所造成的较长的训练迭代时间。

第一方面,提供了一种确定学习率的方法,所述方法包括:获取用于间隔地计算深度学习模型中的目标层的学习率的间隔次数;在当前迭代次数小于所述间隔次数时,在对所述深度学习模型中的所述目标层进行当前次迭代的学习训练的过程中,继续使用前次迭代过程中的第一学习率进行所述目标层的学习训练。

上述技术方案中,可以减小计算学习率的迭代次数,使得计算学习率的次数小于深度学习模型的迭代次数,从而可以避免现有技术中每一次迭代训练中均需要计算一次学习率所造成的较长的训练迭代时间。

在一种可能的实现方式中,所述方法还包括:在当前迭代次数达到所述间隔次数时,计算所述目标层的新学习率。

上述技术方案中,可以通过计算得到目标层的新学习率,使得目标层根据其计算出的新的学习率进行迭代训练,从而可以提高模型的训练精度。

在另一种可能的实现方式中,使用分层自适应学习率lars算法计算所述目标层的新学习率。

在另一种可能的实现方式中,在所述新学习率大于或等于目标学习率时,更新所述第一学习率为所述目标学习率;

在所述新学习率小于目标学习率时,更新所述第一学习率为所述新学习率。

在另一种可能的实现方式中,所述方法还包括:根据所述新学习率与所述目标学习率的比较结果,调整所述间隔次数。

在另一种可能的实现方式中,在波动曲线上当前的新学习率的导数大于零时,增大所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

应理解,波动曲线的历史的多个新学习率包括当前的新的学习率。

上述技术方案中,可以在保证模型训练精度的同时,增大间隔次数,减小计算目标层的新的学习率,从而提高该模型的迭代训练时间。

在另一种可能的实现方式中,在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值增大所述间隔次数。

在另一种可能的实现方式中,在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值增大所述间隔次数。

在另一种可能的实现方式中,在波动曲线上当前的新学习率的导数小于零时,减小所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

在另一种可能的实现方式中,在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值减小所述间隔次数。

在另一种可能的实现方式中,在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值减小所述间隔次数。

第二方面,本申请提供一种确定学习率的装置,所述装置包括:

获取模块,获取用于间隔地计算深度学习模型中的目标层的学习率的间隔次数;

训练模块,用于在当前迭代次数小于所述间隔次数时,在对所述深度学习模型中的所述目标层进行当前次迭代的学习训练的过程中,继续使用前次迭代过程中的第一学习率进行所述目标层的学习训练。

在一种可能的实现方式中,所述装置还包括:计算模块,用于在当前迭代次数达到所述间隔次数时,计算所述目标层的新学习率。

在另一种可能的实现方式中,所述计算模块具体用于:使用分层自适应学习率lars算法计算所述目标层的新学习率。

在另一种可能的实现方式中,所述装置还包括:更新模块,用于在所述新学习率大于或等于目标学习率时,更新所述第一学习率为所述目标学习率;

所述更新模块,还用于在所述新学习率小于目标学习率时,更新所述第一学习率为所述新学习率。

在另一种可能的实现方式中,所述装置还包括:调整模块,用于根据所述新学习率与所述目标学习率的比较结果,调整所述间隔次数。

在另一种可能的实现方式中,所述调整模块具体用于:在波动曲线上当前的新学习率的导数大于零时,增大所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

在另一种可能的实现方式中,所述调整模块具体用于:在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值增大所述间隔次数。

在另一种可能的实现方式中,所述调整模块具体用于:在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值增大所述间隔次数。

在另一种可能的实现方式中,所述调整模块具体用于:

在波动曲线上当前的新学习率的导数小于零时,减小所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

在另一种可能的实现方式中,所述调整模块具体用于:

在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值减小所述间隔次数。

在另一种可能的实现方式中,所述调整模块具体用于:

在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值减小所述间隔次数。

第三方面,本申请提供一种服务器,服务器包括处理器和存储器。所述存储器中用于存储计算机指令,所述服务器通过所述处理器执行所述存储器存储的计算机指令,以使得所述服务器执行第一方面或第一方面任一种可能实现方式中所述的方法。

第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当其在计算机(例如服务器)上运行时,使得计算机执行第一方面或第一方面任一种可能实现方式中所述的方法。

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

附图说明

图1是本申请实施例提供的一种深度学习模型100的示意性框图。

图2是应用于本申请实施例的一种深度学习模型100的训练系统200的示意性结构图。

图3是根据lars算法得到的深度学习模型100中的某一层神经网络的学习率γ的示意性曲线图。

图4是基于剪枝技术得到的深度学习模型100中的某一层神经网络的学习率γ的示意性曲线图。

图5是本申请实施例提供的一种确定学习率的方法的示意性流程图。

图6是根据本申请实施例提供的确定学习率的方法对某一层神经网络的学习率划分的不同的区域的示意性曲线图。

图7是本申请实施例提供的一种确定波动曲线的底部的示意性曲线图。

图8是本申请实施例提供的另一种确定波动曲线的底部的示意性曲线图。

图9是根据本申请实施例提供的确定学习率的方法确定的深度学习模型100中的某一层神经网络的学习率的计算间隔次数。

图10是本申请实施例提供的一种确定学习率的装置1000的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

在ai领域中,深度学习是一种基于深层次的神经网络算法的学习技术。深度学习模型包括输入层、隐含层、输出层,其使用多重非线性变换对数据进行处理。

应理解,神经网络是一种模仿动物神经网络行为特征,这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。

还应理解,深层次的神经网络(也可称为深度学习模型)可以理解为具有多个隐含层的神经网络,这里的“多个”并没有特别的度量标准。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度学习模型的过程也就是学习参数矩阵的过程,其最终的目的就是寻找一组最优值的过程,通过深度学习模型的输出层输出的预测值与训练数据的先验知识(priorknowledge)之间的误差对深度学习模型的每一层神经元的参数矩阵(每一层神经元的参数矩阵包括该层神经元包括的每个神经元对应的权重)进行修正和更新,使得在经过多次迭代训练之后,深度学习模型的输出层输出的预测值尽可能的接近训练数据的先验知识。

需要说明的是,先验知识也被称为真实值(groundtruth),一般包括由人提供的训练数据对应的预测结果。

下面结合图1,对应用于本申请实施例的一种可能的深度学习模型的训练过程进行详细描述。

图1是本申请实施例提供的一种深度学习模型100的示意性框图。深度学习模型100可以包括输入层110,隐含层120以及输出层130。

本申请实施例中深度学习模型100可以应用于图像识别领域。作为一个示例,可以通过深度学习模型100对输入的图像进行识别,例如,可以对图像中的人或动物进行识别。

应理解,本申请实施例中以隐含层120包括n(n大于1)层神经元作为示例进行说明。

还应理解,输入层110、输出层130以及隐含层120中的每一层包括一个或多个神经元。图1中以输入层110包括两个神经元、隐含层120中的n层中的每一层均包括三个神经元、输出层130包括一个神经元为例进行说明。

图1所示的深度学习模型100可以是全连接的神经网络,也可以是卷积神经网络(convolutionalneuralnetwork,cnn)。在每一层的所有神经元与下一层的所有神经元连接(每一层的每一个神经元的权重w均不为0)的情况下,该深度学习模型100是一个全连接的神经网络模型。在每一层中的部分神经元与下一层的所有神经元连接(每一层的每一个神经元上的权重w部分为0)的情况下,该深度学习模型100是一个cnn模型。

参见图1,在深度学习模型100中可以包括前向传播(forwardpropagation,fp)计算和反向传播(backpropagation,bp)计算。

下面对在一个计算节点中进行fp计算的过程进行详细描述。

在fp计算的过程中,获取训练数据,例如输入图像的像素信息,并将训练数据作为深度学习模型100输入层110的输入(i1,i2)。输入层110的输入可以在经过隐含层120中的多个神经元之后,从输出层130输出一个预测结果。具体的,隐含层120中的每一层神经元都对应有一个参数矩阵。输入层110的输入与第1层神经元的参数矩阵的乘积作为隐含层120的第1层神经元的输入,该隐含层120的第1层神经元的输入经过第1层神经元中的激活函数(例如,可以是sigmoid函数)之后输出一个第1层神经元的输出值。隐含层120的第1层神经元的输出值与第2层神经元的参数矩阵的乘积作为隐含层120的第2层神经元的输入。同理,以此类推,最终从输出层130输出一个预测结果。

这些参数矩阵中的权重在实际应用中需要在大量的训练中得到修正,通过训练得到的权重形成的各个参数矩阵可以从用户输入的待推理图像中提取像素信息,从而帮助深度学习模型100对待推理的图像进行正确的推理。

在fp计算的第j次迭代过程中,第1层中的第一个神经元的输入为:第1层中的第一个神经元的输出为:第1层中的第二个神经元的输入为:第1层中的第二个神经元的输出为:第1层中的第三个神经元的输入为:第1层中的第三个神经元的输出为:其中,的输入为的激活函数。

第j次的迭代过程中,第1层中的神经元的输入为:

因此,可以将第1层中的神经元的输入表示为输出可以表示为

其中,

j用于表示迭代的次数,一般等于输入层110获得输入(i1,i2)的次数。用于表示在第j次的迭代过程中,第1层神经元的参数矩阵。

第1层中的神经元的输出b1与第2层神经元的参数矩阵的乘积可以作为第2层神经元的输入。因此,fp的第j次的迭代过程中,第2层中的神经元的输入可以表示为第2层中的神经元的输出可以表示为

同理,在fp的第j次的迭代过程中,第i层中的神经元的输入可以表示为第i层中的神经元的输出可以表示为其中,1≤i≤n。

下面对在一个计算节点中进行bp计算的过程进行详细描述。

在训练深度学习模型100的过程中,希望深度学习模型100的输出层130输出的预测值o1尽可能的接近训练数据的先验知识(或真实值),一般包括由人提供的训练数据对应的预测结果。所以可以通过比较当前的预测值和先验知识,再根据两者之间的差异情况来更新深度学习模型100中每一层的参数矩阵(当然,在第一次更新之前通常会有初始化的过程,即为初始化深度学习模型100的隐含层120的各层神经元对应的参数矩阵)。并采用误差bp算法在训练深度学习模型100的过程中修正深度学习模型100中参数矩阵的权重大小,使得深度学习模型100的误差损失越来越小。

具体地,fp计算过程中产生的预测值和先验知识间可能会有误差,如果输出的预测值大于先验知识,可以调整参数矩阵中的权重,使得输出的预测值低一些。如果输出的预测值小于先验知识,可以调整参数矩阵中的权重,使得输出的预测值高一些。bp计算是以误差为主导的反向运动,旨在得到最优的各层神经元的参数矩阵。

作为一个示例,深度学习模型100应用于图像识别领域。深度学习模型100输入的训练数据为图像的像素信息,训练数据所对应的先验知识为该图像的标签“dog”。将训练数据输入到输入层110,经过深度学习模型100的fp计算之后,将输出层130输出的预测值与先验知识比较。例如,如果输出层130输出的预测值为“cat”,则可以根据预测值与先验知识“dog”之间的误差来更新深度学习模型100中每一层的参数矩阵。

应理解,用户输入的训练数据中可以包括作为输入的训练数据以及由人提供的训练数据对应的预测结果。

在第j次的迭代过程中,bp计算可以计算输出的预测值o1以及先验知识之间的误差e。具体的,可以是沿着输出层130、隐含层120、输入层110的方向,计算误差e对每一层神经元上对应的参数矩阵中的权重的梯度并可以根据梯度对每一层神经元上的参数矩阵中的权重进行修正,其中,1≤i≤n。

以随机梯度下降(stochasticgradientdescent,sgd)算法为例,可以通过公式计算深度学习模型100在第(j+1)次迭代中每一层神经元上对应参数矩阵中的权重。在第(j+1)次迭代的fp计算中,可以根据修正之后的计算深度学习模型100预测的输出值。具体的有关第(j+1)次迭代的fp计算与第j次迭代的fp计算过程类似,具体的请参考上文中的描述,此处不再赘述。

上述公式中的γ为学习率(learnrate),γ的大小可以用来控制深度学习模型100的训练速度。较大的学习率γ会使得每一次迭代过程中深度学习模型100的参数矩阵中的权重变化较大,较小的学习率γ会使得每一次迭代过程中深度学习模型100的参数矩阵中的权重变化较小。对于神经元上对应的权重较大时,较大的学习率γ可以使得深度学习模型100跳出局部最优,并且实现快速收敛。对于神经元上对应的权重较小时,较小的学习率γ可以使得深度学习模型100能够在最小区域精细地搜索数矩阵中的权重的最优值。

本申请实施例中深度学习模型100的训练系统可以是包括一个计算节点的训练系统,也可以是包括多个计算节点的分布式的训练系统,下面以包括一个计算节点的训练系统为例对深度学习模型100的迭代训练过程进行详细描述。

图2是应用于本申请实施例的一种深度学习模型100的训练系统200的示意性结构图,如图2所示,训练系统200可以包括至少一个模型训练服务器210。模型训练服务器210包括:至少一个处理器(例如,处理器211、处理器212)、输入输出接口213、存储器214、通信接口216。

至少一个处理器(例如,处理器211、处理器212)可以与存储器214连接。该存储器214可以是至少一个处理器内部的存储单元,也可以是与至少一个处理器独立的外部存储单元,还可以是包括与至少一个处理器内部的存储单元和与至少一个处理器独立的外部存储单元的部件。

存储器214可以是固态硬盘(solidstatedrive,ssd),也可以是硬盘驱动器(harddiskdrive,hdd),还可以是只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)等。

可选的,在一些实施例中,训练系统200中还包括云存储器220,其中,云存储器220可以作为外部存储器,与模型训练服务器210连接。

深度学习模型100迭代训练过程中所需的程序代码、训练数据、深度学习模型100可以存储在存储器214中,或者也可以存储在云存储器220中,本申请实施例对此不做具体限定。以程序代码、训练数据、深度学习模型100存储在存储器214为例,在深度学习模型100的迭代训练过程中,至少一个处理器可以从存储器214获取程序代码以及训练数据,并对深度学习模型100进行迭代训练。以程序代码、训练数据、深度学习模型100存储在云存储器220为例,模型训练服务器210中的至少一个处理器在运行过程中,可以先将云存储器220中存储的程序代码和训练数据存储在存储器214中,以便于至少一个处理器可以从存储器214获取程序代码以及训练数据,并可以根据程序代码和训练数据对深度学习模型100进行迭代训练。

本申请实施例对处理器的类型不做具体限定。作为一个示例,该处理器可以是中央处理单元(centralprocessingunit,cpu),作为另一个示例,该处理器还可以是嵌入式神经网络处理器(neural-networkprocessunits,npu),作为另一个示例,该处理器还可以是图像处理器(graphicsprocessingunit,gpu)。

作为示例而非限定,至少一个处理器可以根据程序代码以及训练数据进行迭代计算。例如,在如图1所示的第j次迭代的bp计算中,至少一个处理器可以根据输出的预测值o1以及先验知识之间的误差e计算每一层神经元上对应的参数矩阵中的权重的梯度并将梯度存储至存储器214。并且至少一个处理器还可以根据梯度以及学习率γ对参数矩阵中的权重进行修正,将将根据公式计算出的权重存储在存储器214或者云存储器220中。又如,在如图1所示的第(j+1)次迭代的fp计算中,至少一个处理器从存储器214或者云存储器220中获取存储的每一层神经元上对应参数矩阵中的权重并根据存储的训练数据和权重计算深度学习模型100的预测输出值。

在sgd算法中,深度学习模型100在计算每一层神经元上对应的的学习率γ值均相同。但是,由于每一层神经元上对应的参数矩阵中的权重梯度不同,因此,统一通过相同的学习率γ对每一层神经元上对应的权重进行修正,会使得深度学习模型100的训练结果不准确。

以分层自适应学习率(layer-wiseadaptiveratescaling,lars)算法确定每一层神经元对应的学习率γ为例。lars可以根据每一层神经元上对应的参数矩阵中的权重以及bp算法计算出的梯度分别计算出每一层神经元对应的学习率γ,并根据每一层神经元对应的学习率γ分别对每一层神经元上的参数矩阵中的权重进行修正。一种可能的lars算法计算第i层神经元上对应的学习率γ的公式如下所示:

在lars算法中,深度学习模型100需要对每一层神经元计算出对应的学习率γ。在每一次迭代过程中,训练系统200中的至少一个处理器需要根据公式(2)计算每一层神经元对应的学习率γ。并将该学习率γ存储至存储器214或者云存储器220中,以便于训练系统200中的至少一个处理器从存储器214或者云存储器220中获取根据lars算法计算出的每一层神经元对应的学习率γ以及梯度并根据公式计算但是,由于在每一次迭代过程中,均需要通过lars算法计算每一层神经元对应的学习率γ,深度学习模型100的层数越多,训练的迭代时间越久。

本申请实施例提供的技术方案,可以基于剪枝算法获取间隔地计算每一层神经元上对应的学习率γ的间隔次数,使得当前迭代次数达到一定的间隔次数时,根据lars算法计算一次学习率γ,避免现有技术中每一次迭代过程均需要根据lars算法计算每一层神经元上对应的学习率γ所造成的较长的训练迭代时间。

下面以深度学习模型100为resnet50(该模型对应的迭代训练过程中输入的样本数(也可以称为批量大小(batchsize))为256)为例,对应用于本申请实施例中的剪枝算法进行详细描述。

图3是深度学习模型100中的某一层神经网络根据lars算法得到的一种可能的学习率γ的示意性曲线图。如图3所示,横坐标为迭代次数序列号,纵坐标为学习率γ。

需要说明的是,在根据lars算法计算得到学习率γ的过程中,需要在每一次迭代过程中,对深度学习模型100中的每一层神经元计算出一个对应的学习率γ。为了便于描述,图3中以深度学习模型100中的某一层神经元为例进行说明。

在深度学习模型100中的某一层神经网络中,根据上述lars算法计算出每一次迭代过程中的学习率γ,并根据计算出的学习率γ对该层神经元上对应的参数矩阵中的权重进行修正。在下一次迭代的fp计算中,可以根据修正之后的权重计算深度学习模型100预测的输出值。在经过多次迭代并对每一层的神经元上对应的参数矩阵中的权重进行不断的修正之后,使得深度学习模型100预测的输出值尽可能的接近先验知识。

经过多次迭代,通过lars算法计算出的某一层神经网络中对应的学习率γ如图3所示,其中,曲线2可以用于表示通过多个lars算法计算出的某一层神经网络的学习率γ按照时间顺序组成的波动曲线。曲线1可以用于表示曲线2所示的某一层神经网络的学习率γ组成的波动曲线的基准曲线。曲线2在其基准曲线(曲线1)上进行上下波动。

通过研究,得出一种深度学习模型100的训练效果较好的学习率计算公式,如下所示:

其中,kn为一个计算节点内深度学习模型100的一次迭代训练中的迭代样本数。

以一个计算节点内包括8个处理器为例,每一个处理器在运行深度学习模型100时输入的batchsize为256,那么一个计算节点中深度学习模型100的一次迭代训练中的迭代样本数kn=2048,通过上述公式(3)计算得到的学习率γ1=0.8。

需要说明的是,训练效果较好可以理解为深度学习模型100的精度较高,或者深度学习模型100较容易收敛等。

图3中的目标学习率可以是通过公式(3)计算出的学习率γ1。

对比通过公式(2)计算出的深度学习模型100的中的某一层神经网络在每一次迭代过程中的学习率γ和通过公式(3)计算出的目标学习率,可以看出,某一层神经网络在很多次迭代过程中通过(2)计算出的学习率γ均大于通过公式(3)计算出的目标学习率。因此,为了使得深度学习模型100的训练效果较好,可以裁减通过lars计算得到的学习率γ中高于通过公式(3)计算出的目标学习率的部分。一种可能的剪枝公式如下所示:

γ2=min(γ,γ1)(4)

通过公式(4)裁剪得到的深度学习模型100中的某一层神经网络在多次迭代过程中的学习率γ2如图4所示。具体的,在通过lars公式(2)计算出的学习率γ小于通过公式(3)计算出的目标学习率的情况下,可以使用通过lars公式(2)计算出的学习率γ修深度学习模型100的参数矩阵中的权重进行修正。在通过lars公式(2)计算出的学习率γ大于或等于通过公式(3)计算出的目标学习率的情况下,可以通过目标学习率对深度学习模型100的参数矩阵中的权重进行修正。

在一些迭代过程中,如图4所示,通过lars公式(2)计算出的学习率γ,经过裁剪之后最终被目标学习率代替,并通过目标学习率对深度学习模型100目标层的参数矩阵中的权重进行修正。因此,如果深度学习模型100的每一层神经元上均需要通过lars公式(2)计算学习率γ则会造成较大的计算资源的浪费,同时也会增加深度学习模型100的迭代训练时间。

本申请实施例提供了一种基于剪枝技术确定深度学习模型100中每一层神经元的学习率的方法,可以获取间隔地通过lars算法计算深度学习模型中的每一层神经元对应的学习率γ的间隔次数。当迭代次数等于此间隔次数的情况下,通过lars算法计算获得当前迭代过程中该层神经元对应的学习率γ。在迭代次数小于该间隔次数的情况下,不通过lars算法计算当前迭代过程中该层神经元对应的学习率γ,而是使用上一次迭代过程中存储的学习率γ作为当前迭代过程中该层神经元对应的学习率γ。本申请实施例提供的技术方案可以避免现有技术中在每一次迭代过程中计算每一层神经元上相对应的学习率γ所造成的较长的迭代时间。

图5是本申请实施例提供的一种确定学习率的方法的示意性流程图。图5所示的方法可以包括步骤510-520,下面对步骤510-520的过程进行详细描述。

步骤510:获取用于间隔地计算深度学习模型100中目标层的学习率的间隔次数。

应理解,目标层可以是深度学习模型100中的任意一层神经元。本申请实施例可以为深度学习模型100中的每一层神经元分别获取不同的间隔次数。

本申请实施例中对获取间隔地计算目标层的学习率的间隔次数的具体实现方式不做具体限定。作为一个示例,可以根据曲线1对应的学习率与目标学习率之间的差值确定间隔次数。作为另一个示例,还可以根据曲线1对应的学习率的导数确定间隔次数。下面对本申请实施例中可能的几种确定间隔次数的方法进行详细描述。

可选的,在一些实施例中,可以在曲线1对应的学习率的导数大于0的情况下,增大间隔地计算目标层的学习率的间隔次数,从而可以减小深度学习模型100在训练过程中目标层计算学习率的次数,降低训练过程的迭代时间。

进一步的,在确定增大间隔次数的同时,还可以根据曲线1对应的学习率与目标学习率之间的比较结果,确定如何增大间隔次数。

作为一个示例,在曲线1对应的学习率的导数大于0,且曲线1对应的学习率小于目标学习率的情况下,由于在对所述深度学习模型100中的所述目标层进行当前次迭代的学习训练的过程中,需要使用通过lars算法计算出的学习率对该目标层的矩阵参数中的权重进行修正。因此,可以以小于迭代阈值的值增大所述间隔次数,以保证深度学习模型100的训练精度。例如,迭代阈值等于3,上一次确定的间隔次数为1次,因此,可以将间隔次数从1缓慢增大到3。

作为另一个示例,曲线1对应的学习率的导数大于0,且曲线1对应的学习率大于或等于目标学习率的情况下,由于在对所述深度学习模型中的目标层进行当前次迭代的学习训练的过程中,需要使用目标学习率对该目标层的矩阵参数中的权重进行修正。因此,可以以大于迭代阈值的值增大所述间隔次数,从而减少由于在当前迭代过程中由于通过lars算法计算目标层对应的学习率所造成的较长的迭代时间。例如,迭代阈值等于8,上一次确定的间隔次数为3次,因此,可以将间隔次数从3增大到8。

可选的,在一些实施例中,可以在曲线1对应的学习率的导数小于0的情况下,减小间隔地计算目标层的学习率的间隔次数,从而可以保证深度学习模型100在训练过程中的训练精度。

进一步的,在确定减小间隔次数的同时,还可以根据曲线1对应的学习率与目标学习率之间的比较结果,确定如何减小间隔次数。

作为一个示例,曲线1对应的学习率的导数小于0,且曲线1对应的学习率大于或等于目标学习率的情况下,由于在对所述深度学习模型中的目标层进行当前次迭代的学习训练的过程中,需要使用目标学习率对该目标层的矩阵参数中的权重进行修正。因此,可以以大于迭代阈值的值减小所述间隔次数,从而减少在当前迭代过程中由于通过lars算法计算目标层对应的学习率所造成的较长的迭代时间。例如,迭代阈值等于4,上一次确定的间隔次数为8次,因此,可以将间隔次数从8减小到4。

作为另一个示例,在曲线1对应的学习率的导数小于0,且曲线1对应的学习率小于目标学习率的情况下,由于在对所述深度学习模型100中的所述目标层进行当前次迭代的学习训练的过程中,需要使用通过lars算法计算出的学习率对该目标层的矩阵参数中的权重进行修正。因此,可以以小于迭代阈值的值减小所述间隔次数,以保证深度学习模型100的训练精度。例如,迭代阈值等于2,上一次确定的间隔次数为8次,因此,可以将间隔次数从4减小到2。

可选的,在一些实施例中,还可以在曲线1对应的学习率的导数等于0,且曲线1对应的学习率大于目标学习率的情况下,不改变上一次确定的间隔次数。也就是说,在这种情况下,不减小间隔次数,从而保证深度学习模型100在训练过程中的训练精度。

步骤520:在当前迭代次数小于所述间隔次数时,在对所述深度学习模型中的所述目标层进行当前次迭代的学习训练的过程中,继续使用前次迭代过程中的第一学习率进行所述目标层的学习训练。

本申请实施例中可以基于上述确定间隔次数的一种或多种实现方式,确定计算学习率的间隔次数。由于在曲线1的不同的区域,根据上述方法确定的间隔次数可能不同,因此,可以基于上述方法,将图3划分成不同的区域。参见图6,可以将图6划分为a0-a3四个区域。

在区域a0中:曲线1对应的学习率的导数大于0,且曲线1对应的学习率小于目标学习率。根据步骤510中获取学习率的间隔次数的方法,在此区域可以以小于迭代阈值的值增大所述间隔次数。

应理解,区域a0中曲线1与目标学习率之间的差值由负数增大为0。

在区域a1中:曲线1对应的学习率的导数大于0,且曲线1对应的学习率大于或等于目标学习率。根据步骤510中获取学习率的间隔次数的方法,在此区域可以以大于迭代阈值的值增大所述间隔次数。

应理解,区域a0中曲线1与目标学习率之间的差值由0增大为某正数。

在区域a2中:曲线1对应的学习率的导数小于0,且曲线1对应的学习率大于或等于目标学习率。根据步骤510中获取学习率的间隔次数的方法,在此区域可以以大于迭代阈值的值减小所述间隔次数。

应理解,区域a0中曲线1与目标学习率之间的差值由某正数减小为0。

在区域a3中:曲线1对应的学习率的导数小于0,且曲线1对应的学习率小于目标学习率。根据步骤510中获取学习率的间隔次数的方法,在此区域可以以小于迭代阈值的值减小所述间隔次数。

应理解,区域a0中曲线1与目标学习率之间的差值由0减小为负值。

为了划分出上述不同的区域,并根据不同的区域确定间隔次数的变化规律,下面将结合图6-图10,对通过上述方案确定间隔次数的具体实现过程进行详细描述。

在实际的应用场景中,不会存在如图4中的曲线1,因此,需要描述曲线1。本申请实施例对描述曲线1的实现方式不做具体限定。作为示例而非限定,可以根据指数加权滑动平均来描述曲线1。

指数加权滑动平均的计算公式如下所示:

vt=βvt-1+(1-β)θt(5)

其中,β为权重,vt用于表示当前测量值,vt-1用于表示上一次的测量值,θt用于表示当前的实际值。

在此,权重β越低,就说明对上一次的测量值的权重越低,也就是对当前测量值的权重越高。

通过选择上述对当前测量值和上一次测量值的权重,描述出图4中的曲线2所对应的基准曲线,也相当于描述出了图4中的曲线1。

基于上述确定间隔次数的方法,本申请实施例提供了一种可能的调整间隔次数的算法,如公式(6)所示:

其中,v用于表示间隔次数;

μ用于表示扩展系数;

l用于表示曲线1对应的学习率与目标学习率之间的差值;

ε用于表示曲线1的波动幅度,该波动幅度可以与几个相邻的学习率得出;

min用于为间隔次数设定一定的区间[min,max],min为最小的间隔次数,max为最大的间隔次数;

β用于表示偏移系数,取值范围为(0,1]。

为了确定曲线1的学习率与目标学习率之间的差值,可以近似的确定曲线2的学习率与目标学习率之间的差值。本申请实施例中可以通过公式(6)中e的指数部分中的l-βε来描述曲线2的底部。在准确地描述出曲线2的底部情况下,可以准确地描述出曲线2与目标学习率之间的差值,从而可以确定曲线1的学习率与目标学习率之间的差值。l-βε中不同的β取值所描述的曲线2的底部均不同。

图7中带箭头的3个曲线分别用于表示在β=0.16、β=0.4,β=0.7的情况下,描述出的不同的曲线2的底部曲线。由此可见,当β的取值越大,通过l-βε描述的曲线2的底部越偏离曲线2,不能准确的描述曲线2的底部,从而不能准确的描述出曲线2与目标学习率之间的距离。当β的取值越小,通过l-βε描述的曲线2的底部越接近曲线2,可以准确的描述曲线2的底部,从而可准确的描述出曲线2与目标学习率之间的距离。因此,可以通过选取合适的β取值,准确的描述曲线2与目标学习率之间的距离。

可选地,在一些实施例中,通过l-βε描述的曲线2的底部时,β的取值也不能过小,过小的β的取值可能会导致通过l-βε描述的曲线2的底部会渗透至曲线2的内部,此时不能更精准的表示曲线2的底部,也就不能更精确的表示曲线2的底部与目标学习率之间的距离。

例如,参见图8,在β=0.05的情况下,通过l-βε描述的曲线2的底部会渗透至曲线2的内部。

可选的,在一些实施例中,在仅通过l-βε描述的曲线2的底部来表示表示曲线2的底部与目标学习率之间的差值,确定出当前迭代处于上述哪个区域内,并确定间隔次数的情况下,如果曲线2有急剧波动的情况,也就是说曲线2的波动幅度较大,因此,仅通过l-βε描述的曲线2的底部最终确定的间隔次数不是很准确。

本申请实施例中可以通过l-βε与曲线2的波动幅度的倍数确定曲线2的底部与目标学习率之间的差值。倍数越大,可以理解为曲线2的底部与目标学习率之间的差值越大。倍数越小,说明曲线2的底部与目标学习率之间的差值越小。

对于指数函数y=ex而言,在自变量x增大时,指数函数y是单调递增的,并与y轴相交于坐标点(0,1)。在自变量x增减小时,指数函数y是单调递减的,并与y轴相交于坐标点(0,1)。因此,本申请实施例可以通过公式(6)中的自变量确定当前迭代处于上述哪个区域内,从而根据上述确定间隔次数的方法,确定出对应区域的间隔地计算深度学习模型中的目标层的学习率的学习率的间隔次数。下面结合指数函数y=ex的特点,对不同的自变量的取值确定对应于图6中的哪个区域的具体实现过程进行详细描述。

大于0,且越来越大的情况下,公式(6)所表示的间隔次数v以大于迭代阈值的值进行增大,因此,可以对应于图5中的区域a1。具体的,大于0可以理解为曲线2的底部与目标学习率的取值之间的差值大于0(曲线2的底部对应的学习率大于目标学习率)。越来越大可以理解为曲线2的底部与目标学习率之间的差值由0增大为某正数,在公式(6)所示的指数函数中,自变量大于0且增大时,间隔次数v是单调递增的。

需要说明的是,曲线2的底部对应的学习率与目标学习率的取值之间的差值也可以近似描述曲线1对应的学习率与目标学习率之间的差值的变化趋势。

大于0,且越来越小的情况下,公式(6)所表示的间隔次数v以大于迭代阈值的值进行减小,因此,可以对应于图5中的区域a2。具体的,大于0可以理解为曲线2的底部对应的学习率与目标学习率的取值之间的差值大于0(曲线2的底部对应的学习率大于目标学习率)。越来越小可以理解为曲线2的底部对应的学习率与目标学习率之间的差值由某正数减小为0,在公式(6)所示的指数函数中,自变量大于0且减小时,间隔次数v是单调递减的。

小于0,且越来越大的情况下,公式(6)所表示的间隔次数v以小于迭代阈值的值进行减小,因此,可以对应于图5中的区域a3。具体的,小于0可以理解为曲线2的底部对应的学习率与目标学习率的取值之间的差值小于0(曲线2的底部对应的学习率小于目标学习率)。越来越大可以理解为曲线2的底部与目标学习率之间的差值由0减小为负值,在公式(6)所示的指数函数中,自变量小于0且减小时,间隔次数v是单调递减的。

小于0,且越来越小的情况下,公式(6)所表示的间隔次数v以小于迭代阈值的值进行增大,因此,可以对应于图5中的区域a0。具体的,小于0可以理解为曲线2的底部对应的学习率与目标学习率的取值之间的差值小于0(曲线2的底部对应的学习率小于目标学习率)。越来越小可以理解为曲线2的底部与目标学习率之间的差值由负数增大为0,在公式(6)所示的指数函数中,自变量小于0且增大时,间隔次数v是单调递增的。

下面结合图9中具体的例子,对确定间隔次数的一种可能的实现过程进行描述。应理解,图9所示的例子仅仅是为了帮助本领域技术人员理解本申请实施例,而非要将本申请实施例限于所例示的具体数值或具体场景。本领域技术人员根据所给出的图9的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。

在μ=3,β=0.16,min=1,max=4时,由公式确定的曲线如图9所示的曲线4所示。

图9中的曲线4用于表示确定的曲线2的各个区域对应的不同的间隔次数v。假设间隔次数v的最大间隔次数为4次,最小间隔次数为1次。深度学习模型100在迭代训练中,比较当前迭代次数与间隔次数v的大小关系。在当前迭代次数达到间隔次数v的情况下,根据lars算法计算学习率γ,并通过计算出的该学习率γ对目标层上的参数矩阵中的权重进行修正。在当前迭代次数小于间隔次数v的情况下,继续使用前次迭代过程中的学习率,并通过前次迭代过程中的学习率对目标层上的参数矩阵中的权重进行修正。

本申请实施例提供的技术方案,通过挖掘lars算法的规律而使用了一种动态间隔的方法,考虑到了所有数据的变化趋势,变化幅度,以及与阈值之间的关系,从而得到一个合理的间隔次数。通过这种间隔次数的计算,最终在不影响精度的前提下,大大减小了lars耗时在整个训练过程中的占比,当间隔次数区间为[1,20],bs=128时,resnet50,占比下降至2%,减小10倍。

需要说明的是,通过本申请实施例提供的确定学习率的方法还可以保持深度学习模型的训练精度。一方面,通过lars算法获得的学习率具有比较稳定的趋势线,以及其幅度变化也较为缓慢。所以在相邻几次迭代过程中,通过lars获得的学习率也是在某个范围内进行波动。而通过滑动平均后,学习率取较为平均的一个值,较lars获得的值差距并不大,所以精度不影响。另一方面,随机失活(dropout)算法,梯度压缩(depthgradientcompression,dgc)算法为当前在深度学习中常用的两种方法,其中dropout为对于神经网络单元,按照一定的概率将其暂时从网络中丢弃,也可理解为某些参数不进行更新。dgc算法为只传输较大的梯度,小的梯度值暂时不进行传输,在本地进行积累,达到排序列表前列时再进行传输。这两种方法被证明对精度无影响。通过以上两种方法的表述可知,参数更新具有一定的灵活性,并不一定需要对当前迭代过程中的学习率进行更新才可获得较好的精度,在一定程度上可自行调节。

上文结合图1至图9,详细描述了本申请实施例提供的确定学习率的方法,下面将结合图10,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。

图10是本申请实施例提供的一种的确定学习率的装置1000的结构性示意性图。该数据处理的确定学习率的装置1000包括:

获取模块1010,获取用于间隔地计算深度学习模型中的目标层的学习率的间隔次数;

训练模块1020,用于在当前迭代次数小于所述间隔次数时,在对所述深度学习模型中的所述目标层进行当前次迭代的学习训练的过程中,继续使用前次迭代过程中的第一学习率进行所述目标层的学习训练。

可选的,在一些实施例中,所述装置1000还包括:

计算模块1030,用于在当前迭代次数达到所述间隔次数时,计算所述目标层的新学习率。

可选的,在一些实施例中,所述计算模块1030具体用于:使用分层自适应学习率lars算法计算所述目标层的新学习率。

可选的,在一些实施例中,所述装置1000还包括:

更新模块1040,用于在所述新学习率大于或等于目标学习率时,更新所述第一学习率为所述目标学习率;

所述更新模块1040,还用于在所述新学习率小于目标学习率时,更新所述第一学习率为所述新学习率。

可选的,在一些实施例中,所述装置1000还包括:

调整模块1050,用于根据所述新学习率与所述目标学习率的比较结果,调整所述间隔次数。

可选的,在一些实施例中,所述调整模块1050具体用于:

在波动曲线上当前的新学习率的导数大于零时,增大所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

可选的,在一些实施例中,所述调整模块1050具体用于:

在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值增大所述间隔次数。

可选的,在一些实施例中,所述调整模块1050具体用于:

在所述波动曲线上当前的新学习率的导数大于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值增大所述间隔次数。

可选的,在一些实施例中,所述调整模块1050具体用于:

在波动曲线上当前的新学习率的导数小于零时,减小所述间隔次数,所述波动曲线为历史的多个所述新学习率按照时间顺序组成的曲线。

可选的,在一些实施例中,所述调整模块1050具体用于:

在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率小于所述目标学习率时,以小于迭代阈值的值减小所述间隔次数。

可选的,在一些实施例中,所述调整模块1050具体用于:

在所述波动曲线上当前的新学习率的导数小于零、并且所述新学习率大于所述目标学习率时,以大于迭代阈值的值减小所述间隔次数。

本申请实施例提供的确定学习率的装置1000可以减小计算学习率的迭代次数,使得计算学习率的次数小于深度学习模型的迭代次数,从而可以避免现有技术中每一次迭代训练中均需要计算一次学习率所造成的较长的训练迭代时间。

可选的,本申请实施例提供的至少一个模型训练服务器210中,存储器214或者与模型训练服务器210连接的云存储器220中存储有用于执行上述确定学习率的方法的计算机指令,或者存储有图10所示的确定学习率的装置1000中的获取模块1010,训练模块1020。与存储器214连接的至少一个处理器可以从存储器214或者云存储器220中获取存储的深度学习模型100迭代训练过程中所需的程序代码、训练数据、确定学习率的方法的计算机指令、深度学习模型100,以便于执行上述确定学习率的方法。

可选的,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当其在计算机(例如服务器)上运行时,使得计算机执行上述方法。

可选的,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法。

上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘(solidstatedrive,ssd)。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。

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

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

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