一种更新参数的方法、装置及存储介质

文档序号:1905617 发布日期:2021-11-30 浏览:12次 >En<

阅读说明:本技术 一种更新参数的方法、装置及存储介质 (Method, device and storage medium for updating parameters ) 是由 王紫东 陈梦云 于璠 陈雷 于 2020-05-26 设计创作,主要内容包括:本申请公开了一种更新参数的方法,该方法应用于人工智能领域。该方法通过多次迭代来多次更新神经网络模型的参数,多次迭代包括第一迭代范围和第二迭代范围,该方法包括:在第一迭代范围内,每第一更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,在第二迭代范围内,每第二更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,在迭代顺序上,第二迭代范围的第一次迭代在第一迭代范围的最后一次迭代之后,第二更新步长大于第一更新步长。这样,随着迭代次数的增多,更新步长越来越大,可以减少逆矩阵更新的次数,减少了神经网络模型训练的时间,提高了神经网络模型训练的速度。(The application discloses a method for updating parameters, which is applied to the field of artificial intelligence. The method updates parameters of the neural network model a plurality of times through a plurality of iterations, the plurality of iterations including a first iteration range and a second iteration range, the method comprising: and updating the inverse matrix of the additional matrix of the neural network model once every iteration number indicated by the first updating step length in a first iteration range, updating the inverse matrix of the additional matrix of the neural network model once every iteration number indicated by the second updating step length in a second iteration range, and enabling the second updating step length to be larger than the first updating step length after the last iteration of the first iteration range in the iteration sequence of the first iteration range. Therefore, with the increase of the iteration times, the updating step length is larger and larger, the updating times of the inverse matrix can be reduced, the training time of the neural network model is reduced, and the training speed of the neural network model is improved.)

一种更新参数的方法、装置及存储介质

技术领域

本申请涉及人工智能(artificial intelligence,AI)领域,具体涉及一种更新参数的方法、装置及存储介质。

背景技术

机器学习在许多应用领域都表现出了优异的性能,例如:在图像识别、目标检测和自然语言处理等应用领域都被广泛使用。无论是在哪个应用领域,都会通过相应应用领域的样本数据训练神经网络模型,然后再将训练好的神经网络模型应用在各应用领域。

神经网络模型在训练时会进行多次迭代,每次迭代通常都会采样一阶优化算法和二阶优化算法更新一次神经网络模型的参数。一阶优化时通常采用随机梯度下降算法(stochastic gradient descent,SGD)对神经网络模型的损失函数进行一阶求导得到参数的一阶梯度。然后在一阶梯度的基础上采用二阶优化算法进行二阶优化,得到参数的二阶梯度。

二阶优化时会涉及到对神经网络模型的附加矩阵的逆矩阵的计算,该逆矩阵的计算复杂度非常大,影响了神经网络模型训练的速度。

发明内容

本申请实施例提供一种更新参数的方法,用于减少神经网络模型训练的时间。本申请实施例还提供了相应的装置及存储介质。

本申请第一方面提供一种更新参数的方法,该更新参数的方法用于通过多次迭代来多次更新神经网络模型的参数,多次迭代包括第一迭代范围和第二迭代范围,该方法包括:在第一迭代范围内,每第一更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第一迭代范围包括至少两次迭代;在第二迭代范围内,每第二更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第二迭代范围包括至少两次迭代,在迭代顺序上,第二迭代范围的第一次迭代在第一迭代范围的最后一次迭代之后,第二更新步长大于第一更新步长。

上述第一方面中,提出了一种分时更新的思想,将整个神经网络模型的训练过程划分为多个迭代范围,在一个迭代范围内,每更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵。神经网络模型包括深度神经网络(deep neural networks,DNN) 模型或卷积神经网络(convolutional neuron network,CNN)模型。在模型训练过程中,神经网络模型中的参数可以是神经网络模型中各神经元的权重。使用样本数据训练神经网络模型的过程通常需要迭代很多次才能得到目标神经网络模型,每次迭代可以称为一个步 (step)。在训练神经网络模型的过程中,输入的数据是样本数据,输出的数据是神经网络模型中各神经元的权重。该样本数据可以是图像数据、语音数据或文本数据,该样本数据的类型依据该神经网络模型所适用的领域来确定。例如:该神经网络模型用于自动驾驶领域时,该样本数据可以为交通场景中的各种图像数据,如:自动驾驶车辆周围建筑物的图像、行人的图像、周围车辆的图像、地面标识的图像和交通灯的图像等。该神经网络模型用于智能安防或平安城市时,该样本数据可以为城市的各种图像数据,如:城市各街区的图像。该神经网络模型用于其他业务场景时,该样本数据则为相应业务场景的图像、音频或文本等类型的数据。整个训练过程会从第一次迭代开始,直到训练得到目标神经网络模型的整个过程中的所有step可以划分为至少两个迭代范围(period),例如:训练完成神经网络模型需要迭代一万次,可以将一万次划分为10个迭代范围,这10个迭代范围按照迭代过程中被使用的先后顺序排列,从period1到period10。迭代范围的长度可以是相同的,如:每个迭代范围都是1000个step,迭代范围的长度也可以是不相同的,如:有的包括几百个 step,有的包括上千个step。若训练神经网络模型的收敛条件不是预设一定迭代次数的情况,可以设置较多的迭代范围,可以确保在神经网络模型收敛时,所设置的迭代范围还没被使用完,一个迭代范围也可以是一个epoch。第一迭代范围和第二迭代范围可以是所有迭代范围中的任意两个,只要在执行顺序上,第二迭代范围在第一迭代范围之后即可。每个迭代范围会对应一个更新步长(update stride),更新步长表示更新的间距,表示每个更新步长次更新一次神经网络模型的附加矩阵的逆矩阵,也可以描述为每隔(更新步长-1)更新一次,该更新步长也可以称为更新间隔(update interval)。更新步长可以是一个大于或等于1的整数值。更新步长的变化趋势可以是随着迭代次数的增多,相应迭代范围的更新步长越来越大,也可以是有的迭代范围的更新步长相等,有的迭代范围的更新步长大于在前的迭代范围的更新步长。更新步长的设定方式可以为迭代范围的序号的平方、余弦曲线、指数曲线、倍数增长或分段常数等。附加矩阵是对一阶梯度进行预处理的矩阵,该附加矩阵可以是二阶优化算法中的二阶信息矩阵,如:自然梯度法中的Fisher矩阵(fisher informationmatrix,FIM)。附加矩阵也可以是其他附加矩阵,如梯度的二阶矩,二阶矩是一阶梯度与一阶梯度的转置的乘积。由该第一方面可知,采用分时更新的方式,每更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,不需要每次迭代都更新逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

在第一方面一种可能实现方式中,上述多次迭代包括第三迭代范围,第三迭代范围为多次迭代中的任意一个迭代范围,该方法还包括:若多次迭代中的第N次迭代位于第三迭代范围,且为第三更新步长所指示的需要更新逆矩阵的迭代,则更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,第三更新步长为第三迭代范围的更新步长,N为整数,且N>1。

该种可能的实现方式中,第三迭代范围可以是第一迭代范围,也可以是第二迭代范围,也可以是其他的任意一次迭代范围。第N次迭代可以是神经网络模型从训练的第二次迭代到训练结束中的任意一次迭代,实际上第一次迭代,也就是N=1时也可以进行逆矩阵的更新,只是该第一次迭代的更新不需要第三更新步长来指示,可以通过预设更新起始位置的方式来指示第一次迭代要更新逆矩阵。该种可能的实现方式,针对需要更新的step,则进行逆矩阵的更新,并使用更新后的逆矩阵更新参数,从而使神经网络模型得到收敛。

在第一方面一种可能实现方式中,上述步骤:更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,包括:更新P个块的附加矩阵的逆矩阵,P个块为神经网络模型的Q个块中的部分块或全部块, P和Q为整数,且Q≥P,且Q≥2,P≥1;采用P个块更新后的附加矩阵的逆矩阵,以及P个块第N次迭代的一阶梯度更新P个块中对应块的参数;若Q>P,则除P个块之外的(Q-P)个块,采用第(N-1)次迭代时(Q-P)个块所使用的附加矩阵的逆矩阵,以及(Q-P)个块第N次迭代的一阶梯度更新(Q-P)个块中对应块的参数。

该种可能的实现方式中,提出了一种分块更新的思想,可以将神经网络模型中的神经元划分为至少两个块,然后按照块来更新相应块的附加矩阵的逆矩阵。关于“块(block)”的概念可以是神经网络模型中相邻两个层之间的神经元的向量关系的集合,该集合也可以称为“层(layer)”。块的划分方式不限于按照层的形式进行划分,也可以是按照神经网络模型中神经元的方式进行划分,这种划分方式下,可以将1.5个层、两个层或者更多个层划分为一个块。按照块进行逆矩阵更新时,可以是更新全部块,也可以是更新部分块。通常,模型训练刚开始时,会对全部块进行更新,随着迭代次数的增多,会减少需要更新逆矩阵的块的数量。若Q=8,P=3,则对其中三个块的附加矩阵的逆矩阵进行更新,并使用更新后的逆矩阵更新这三个块的参数,其他五个块的逆矩阵不做更新,使用上一次迭代时所使用的逆矩阵更新本次的参数即可。由该种可能的实现方式可知,采用分块更新的方式,可以根据需求对全部块或部分块的附加矩阵的逆矩阵进行更新,这样可以减少更新逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

在第一方面一种可能实现方式中,该方法还包括:基于神经网络模型中M个块的附加矩阵的信息,从M个块中得到P个块,附加矩阵的信息包括附加矩阵的迹或附加矩阵的二范数, M个块是第N次迭代的Q个块中需要更新附加矩阵的块,M为整数,Q≥M≥P。

该种可能的实现方式中,附加矩阵的迹(trace)为附加矩阵对角线上的值之和,附加矩阵的二范数是附加矩阵的转置与附加矩阵相乘后的最大特征值的开平方。附加矩阵为等行等列的矩阵,也可以称为正定矩阵。若该附加矩阵是一个8行*8列的矩阵,该附加矩阵包含64个值。则该矩阵的对角线上的8个值的和就可以称为该附加矩阵的迹。Q个块中的M个块还需要做附加矩阵的更新,除M个块之外的(Q-M)个块是在第N次迭代时已经基本不再变化的块,这些块不光逆矩阵不需要更新,附加矩阵也不需要再做更新,所以在选择要做逆矩阵更新的P个块时可以直接排除掉这(Q-M)附加矩阵基本不再变化的块,直接从还需要做附加矩阵更新的M个块中做选择,还可以进一步节省神经网络模型训练的时间。

在第一方面一种可能实现方式中,上述步骤:基于所述神经网络模型中M个块的附加矩阵的信息,从所述M个块中得到所述P个块,包括:根据所述第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的所述M个块的附加矩阵的迹,从所述M个块中得到所述P个块。

该种可能的实现方式中,通过前后两次迭代的M个块的附加矩阵的迹来得到需要更新逆矩阵的P个块,可以提高块选择的准确度。

在第一方面一种可能实现方式中,上述步骤:根据第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的M个块的附加矩阵的迹,从M个块中得到P个块,包括:从M个块中得到第一比值大于第一阈值的P个块,第一比值为第一差值与第(N-1)次迭代的附加矩阵的迹的比值,第一差值为第N次迭代的附加矩阵的迹与第(N-1)次迭的附加矩阵的迹的差值。

该种可能的实现方式中,第一比值与第一阈值的关系可以通过关系式>T1来表示,其中,FN表示第N次迭代的附加矩阵,F(N-1)表示第(N-1)次迭代的附加矩阵,tr(FN)表示矩阵FN的迹,tr(F(N-1))表示矩阵F(N-1)的迹,tr(FN)-tr(F(N-1))表示第一差值,表示第一比值,T1表示第一阈值。上述T1的取值可以设置为0.01,若一个块的附加矩阵的上述第一比值大于0.01,则表示该块的逆矩阵需要更新。若一个块块的附加矩阵的上述第一比值小于0.01,则表示该块的逆矩阵不需要更新。由该种可能的实现方式可知,可以根据迭代过程中的各块的附加矩阵的迹来确定相应的块是否需要更新逆矩阵,可以提高需要更新逆矩阵的块的选择准确度。

在第一方面一种可能实现方式中,该方法还包括:基于神经网络模型中多个块的采样概率,从多个块中得到P个块,其中,一个块的采样概率用于指示一个块在第N次迭代时被更新附加矩阵的逆矩阵的概率。

该种可能的实现方式中,根据块的采样概率来选择需要更新逆矩阵的块,可以提高块选择的速度。

在第一方面一种可能实现方式中,多个块中一个块的采样概率与该块中的参数量,以及神经网络模型中的总参数量有关,或者,多个块的采样概率为预先配置的。

该种可能的实现方式中,每个块对训练过程的影响不同,因此每个块的采样概率也不同,参数数量越多的块,对训练过程的影响越大。可以按照来确定每个块的采样概率。其中wi表示第i块的参数量,∑jwj表示神经网络模型的参数总量。由该种可能的实现方式可知,通过块中参数量来确定采样概率更有利于提高对神经网络模型影响大的块的选择机率。

在第一方面一种可能实现方式中,该方法还包括:在所述第N次迭代的第二差值等于更新起始值的情况下更新所述逆矩阵,其中,所述第二差值为所述N与在前迭代范围的总长度的差值,所述在前迭代范围在执行顺序上位于所述第三迭代范围之前,所述更新起始值用于指示所述第三迭代范围内首次更新所述逆矩阵的迭代。

该种可能的实现方式中,针对每个迭代范围都可以设定一个逆矩阵的起始更新迭代,如:每个迭代范围内的第一次迭代都执行逆矩阵的更新,然后再按照该迭代范围的更新步长,每更新步长所指示的迭代次数更新一次逆矩阵。若第三迭代范围是所有迭代范围中的第一个迭代范围,则只要N=更新起始值,就需要进行逆矩阵的更新。若第三迭代范围是第二个迭代范围,则在前的迭代范围有一个,例如:period1是从step1到step200,period2是从step201到step500,若N=201,更新起始值=1,则第二差值=201-200=1,刚好第二差值等于更新起始值,则可以确定第201次迭代是该period2内首次需要更新逆矩阵的迭代。当然,该更新起始值不限于等于1,也可以等于2或者其他数值,通常更新起始值小于或等于所以更新步长中的最小更新步长。由该种可能的实现方式可知,通过具体的数学关系式可以快速的确定出第N次迭代是否是第三迭代范围的起始更新迭代,有利于提高神经网络模型训练的速度。

在第一方面一种可能实现方式中,该方法还包括:在第N次迭代的第一余数为0的情况下更新逆矩阵;其中,第一余数为第三差值与第三更新步长的余数,第三差值为(N-更新起始值)与在前迭代范围的总长度的差值,在前迭代范围在执行顺序上位于第三迭代范围之前,更新起始值用于指示第三迭代范围内首次更新逆矩阵的迭代。

该种可能的实现方式中,在执行第N次迭代时,可以通过N、迭代范围的信息和更新步长来确定第N次迭代是否需要更新逆矩阵。若第三迭代范围就是所有迭代范围中的第一个迭代范围时,可以通过关系式(N-更新起始值)%第三更新步长的取值来确定第N次迭代是否更新逆矩阵,其中,“%”表示取余。例如:period1:从step1到step200,N=5,更新起始值=1,第三更新步长=1,则(5-1)%1=0,表示第5次迭代需要更新逆矩阵。若更新起始值=1,第三更新步长=2,N=6,则(6-1)%2=1,表示第6次迭代不需要更新逆矩阵。若第三迭代范围之前还有其他迭代范围时,则所有在第三迭代范围之前执行的迭代范围都称为在前迭代范围。例如:period1:从step1到step200,period2:从step201到step500,若N=205,则表示第三迭代范围为period2,period1为在前迭代范围。该在前迭代范围的总长度为200。针对第N次迭代位于非第一个迭代范围的情况,可以通过关系式(N-X-第三差值)%第三更新步长的取值来确定第N次迭代是否更新逆矩阵,其中,“%”表示取余,第三差值=(N-在前迭代范围的总长度)。若更新起始值=1,period2的更新步长等于2,N=205,则 (205-1-200)%2=0,则表示第一余数等于0,该第205次迭代需要更新逆矩阵。由该种可能的实现方式可知,通过具体的数学关系式可以快速的确定出是否需要更新附加矩阵的逆矩阵,有利于提高神经网络模型训练的速度。

本申请第二方面提供一种更新参数的方法,该更新参数的方法用于通过多次迭代来多次更新神经网络模型的参数,针对多次迭代中的第N次迭代,N为大于1的整数,该包括:更新P个块的附加矩阵的逆矩阵,P个块为神经网络模型的Q个块中的部分块或全部块,P和Q为整数,且Q≥P,且Q≥2,P≥1;采用P个块更新后的附加矩阵的逆矩阵,以及P个块第N 次迭代的一阶梯度更新P个块中对应块的参数;若Q>P,则除P个块之外的(Q-P)个块,采用第(N-1)次迭代时(Q-P)个块所使用的附加矩阵的逆矩阵,以及(Q-P)个块第N次迭代的一阶梯度更新(Q-P)个块中对应块的参数。

上述第二方面中,提出了一种分块更新的思想,可以将神经网络模型中的神经元划分为至少两个块,然后按照块来更新相应块的附加矩阵的逆矩阵。关于“块”的概念可以是神经网络模型中相邻两个层之间的神经元的向量关系的集合,该集合也可以称为“层”。块的划分方式不限于按照层的形式进行划分,也可以是按照神经网络模型中神经元的方式进行划分,这种划分方式下,可以将1.5个层、两个层或者更多个层划分为一个块。按照块进行逆矩阵更新时,可以是更新全部块,也可以是更新部分块。通常,模型训练刚开始时,会对全部块进行更新,随着迭代次数的增多,会减少需要更新逆矩阵的块的数量。若Q=8, P=3,则对其中三个块的附加矩阵的逆矩阵进行更新,并使用更新后的逆矩阵更新这三个块的参数,其他五个块的逆矩阵不做更新,使用上一次迭代时所使用的逆矩阵更新本次的参数即可。由该种可能的实现方式可知,采用分块更新的方式,只更新部分块的附加矩阵的逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

在第二方面一种可能实现方式中,该方法还包括:基于神经网络模型中M个块的附加矩阵的信息,从M个块中得到P个块,附加矩阵的信息包括附加矩阵的迹或附加矩阵的二范数, M个块是第N次迭代的Q个块中需要更新附加矩阵的块,M为整数,Q≥M≥P。

该种可能的实现方式中,附加矩阵的迹为附加矩阵对角线上的值之和,附加矩阵的二范数是附加矩阵的转置与附加矩阵相乘后的最大特征值的开平方。附加矩阵为等行等列的矩阵,也可以称为正定矩阵。若该附加矩阵是一个8行*8列的矩阵,该附加矩阵包含64个值。则该矩阵的对角线上的8个值的和就可以称为该附加矩阵的迹。Q个块中的M个块还需要做附加矩阵的更新,除M个块之外的(Q-M)个块是在第N次迭代时已经基本不再变化的块,这些块不光逆矩阵不需要更新,附加矩阵也不需要再做更新,所以在选择要做逆矩阵更新的P 个块时可以直接排除掉这(Q-M)附加矩阵基本不再变化的块,直接从还需要做附加矩阵更新的M个块中做选择,还可以进一步节省神经网络模型训练的时间。

在第二方面一种可能实现方式中,上述步骤:基于所述神经网络模型中M个块的附加矩阵的信息,从所述M个块中得到所述P个块,包括:根据所述第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的所述M个块的附加矩阵的迹,从所述M个块中得到所述P个块。

该种可能的实现方式中,通过前后两次迭代的M个块的附加矩阵的迹来得到需要更新逆矩阵的P个块,可以提高块选择的准确度。

在第二方面一种可能实现方式中,上述步骤:根据第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的M个块的附加矩阵的迹,从M个块中得到P个块,包括:从M个块中得到第一比值大于第一阈值的P个块,第一比值为第一差值与第(N-1)次迭代的附加矩阵的迹的比值,第一差值为第N次迭代的附加矩阵的迹与第(N-1)次迭的附加矩阵的迹的差值。

该种可能的实现方式中,第一比值与第一阈值的关系可以通过关系式>T1来表示,其中,FN表示第N次迭代的附加矩阵,F(N-1)表示第(N-1)次迭代的附加矩阵,tr(FN)表示矩阵FN的迹,tr(F(N-1))表示矩阵F(N-1)的迹,tr(FN)-tr(F(N-1))表示第一差值,表示第一比值,T1表示第一阈值。上述T1的取值可以设置为0.01,若一个块的附加矩阵的上述第一比值大于0.01,则表示该块的逆矩阵需要更新。若一个块块的附加矩阵的上述比值小于0.01,则表示该块的逆矩阵不需要更新。由该种可能的实现方式可知,可以根据迭代过程中的各块的附加矩阵的迹来确定相应的块是否需要更新逆矩阵,可以提高需要更新逆矩阵的块的选择准确度。

在第二方面一种可能实现方式中,该方法还包括:基于神经网络模型中多个块的采样概率,从多个块中得到P个块,其中,一个块的采样概率用于指示一个块在第N次迭代时被更新附加矩阵的逆矩阵的概率。

该种可能的实现方式中,根据块的采样概率来选择需要更新逆矩阵的块,可以提高块选择的速度。

在第二方面一种可能实现方式中,多个块中一个块的采样概率与该块中的参数量,以及神经网络模型中的总参数量有关,或者,多个块的采样概率为预先配置的。

该种可能的实现方式中,每个块对训练过程的影响不同,因此每个块的采样概率也不同,参数数量越多的块,对训练过程的影响越大。可以按照来确定每个块的采样概率。其中wi表示第i块的参数量,∑jwj表示神经网络模型的参数总量。由该种可能的实现方式可知,通过块中参数量来确定采样概率更有利于提高对神经网络模型影响大的块的选择机率。

本申请第三方面提供一种更新参数的装置,该更新参数的装置具有实现上述第一方面或第一方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:第一处理单元、第二处理单元和第三处理单元,这三个处理单元的功能可以通过一个处理单元来实现,也可以通过两个或三个处理单元来实现。

本申请第四方面提供一种更新参数的装置,该更新参数的装置具有实现上述第二方面或第二方面任意一种可能实现方式的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块,例如:第一处理单元、第二处理单元和第三处理单元,这三个处理单元的功能可以通过一个处理单元来实现,也可以通过两个或三个处理单元来实现。

本申请第五方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,所述处理器执行如上述第一方面或第一方面任意一种可能的实现方式所述的方法。

本申请第六方面提供一种计算机设备,该计算机设备包括至少一个处理器、存储器、输入/输出(input/output,I/O)接口以及存储在存储器中并可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,所述处理器执行如上述第二方面或第二方面任意一种可能的实现方式所述的方法。

本申请第七方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当所述计算机执行指令被处理器执行时,所述处理器执行如上述第一方面或第一方面任意一种可能的实现方式所述的方法。

本申请第八方面提供一种存储一个或多个计算机执行指令的计算机可读存储介质,当所述计算机执行指令被处理器执行时,所述处理器执行如上述第二方面或第二方面任意一种可能的实现方式所述的方法。

本申请第九方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当所述计算机执行指令被所述处理器执行时,所述处理器执行上述第一方面或第一方面任意一种可能实现方式的方法。

本申请第十方面提供一种存储一个或多个计算机执行指令的计算机程序产品,当所述计算机执行指令被所述处理器执行时,所述处理器执行上述第二方面或第二方面任意一种可能实现方式的方法。

本申请第十一方面提供了一种芯片系统,该芯片系统包括处理器,用于支持更新参数的装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存更新参数的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

本申请第十二方面提供了一种芯片系统,该芯片系统包括处理器,用于支持更新参数的装置实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存更新参数的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

其中,第三方面、第五方面、第七方面、第九方面和第十一方面或者其中任一种可能实现方式所带来的技术效果可参见第一方面或第一方面不同可能实现方式所带来的技术效果,此处不再赘述。

其中,第四方面、第六方面、第八方面、第十方面和第十二方面或者其中任一种可能实现方式所带来的技术效果可参见第二方面或第二方面不同可能实现方式所带来的技术效果,此处不再赘述。

本申请实施例采用分时更新的方式,采用分时更新的方式,每更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,不需要每次迭代都更新逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

另外,本申请实施例采用分块更新的方式,可以根据需求对全部块或部分块的附加矩阵的逆矩阵进行更新,这样可以减少更新逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

附图说明

图1是一种人工智能主体框架示意图;

图2是本申请实施例提供的系统架构的一示意图;

图3是卷积神经网络的一结构示意图;

图4是卷积神经网络的另一结构示意图;

图5A是本申请实施例提供的一分块示例示意图;

图5B是本申请实施例提供的另一分块示例示意图;

图6是本申请实施例提供的用于训练神经网络模型的一系统架构示意图;

图7A是本申请实施例提供的更新参数的方法的一示例示意图;

图7B是本申请实施例提供的更新参数的方法的另一示例示意图;

图8A是本申请实施例提供的更新参数的方法的一实施例示意图;

图8B是本申请实施例提供的更新步长的变化曲线的一示例示意图;

图9A是本申请实施例提供的更新参数的方法的另一实施例示意图;

图9B是本申请实施例提供的表示附加矩阵的迹的一示例图;

图9C是本申请实施例提供的块采样的一示例示意图;

图10是本申请实施例提供的更新参数的方法的另一实施例示意图;

图11是本申请实施例提供的更新参数的装置的一实施例示意图;

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

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

具体实施方式

下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

本申请实施例提供一种更新参数的方法,用于缩短更新神经网络模型中参数的时间。本申请实施例还提供了相应的装置及存储介质。以下分别进行详细说明。

人工智能(artificial intelligence,AI)是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。

图1是一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。

下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。

“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。

“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。

(1)基础设施:

基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(中央处理器(centralprocessing unit,CPU)、神经网络处理器(network processing unit,NPU)、图形处理器(graphic processing unit GPU)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。

(2)数据

基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。

(3)数据处理

数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。

其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。

推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。

决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。

(4)通用能力

对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。

(5)智能产品及行业应用

智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶、平安城市、智能终端、智能营销、平安城市以及智能客服等。

无论是在人工智能的哪种应用中,都会涉及到神经网络模型,例如:深度神经网络(deep neural networks,DNN)模型或卷积神经网络(convolutional neuron network,CNN)模型。使用不同领域或业务场景的样本数据对初始神经网络模型进行训练,就可得到适用于该业务场景的目标神经网络模型。该样本数据可以是图像数据、语音数据或文本数据等,该样本数据的类型依据该神经网络模型所适用的领域来确定。例如:该神经网络模型用于自动驾驶领域时,该样本数据可以为交通场景中的各种图像数据,如:自动驾驶车辆周围建筑物的图像、行人的图像、周围车辆的图像、地面标识的图像和交通灯的图像等。该神经网络模型用于智能安防或平安城市时,该样本数据可以为城市的各种图像数据,如:城市各街区的图像。该神经网络模型用于其他业务场景时,该样本数据则为相应业务场景的图像、音频或文本等类型的数据。该神经网络模型的训练过程可以在图2所示的系统架构200中进行。

参阅图2,本申请实施例提供了一种系统架构200。数据采集设备260用于采集用于神经网络模型训练的样本数据并存入数据库230,该样本数据可以参阅上一段对样本数据的介绍进行理解,此处不再重复描述。训练设备220基于数据库230中维护的样本数据生成目标神经网络模型/规则201。下面将更详细地描述训练设备220如何基于样本数据得到目标神经网络模型/规则201,目标神经网络模型/规则201例如能够指导自动驾驶车辆自动行驶或自动识别不安全因素等。

深度神经网络模型中的每一层的工作可以用数学表达式y=a(W.x+b)来描述。其中, W是权重向量,该向量中的每一个值表示该层神经网络中的一个神经元的权重值。该向量决定着上文所述的输入空间到输出空间的空间变换,即每一层的权重W控制着如何变换空间。训练深度神经网络模型的目的,也就是最终得到训练好的神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。因此,神经网络模型的训练过程本质上就是学习控制空间变换的方式,更具体的就是学习权重矩阵。

“神经网络模型的预测值和目标值之间的差异”,这便是损失函数(lossfunction) 或目标函数(objective function)。

训练设备220得到的目标神经网络模型/规则可以应用不同的系统或设备中。在图2中,执行设备210配置有I/O接口212,与外部设备进行数据交互,“用户”可以通过客户设备240向I/O接口212输入数据。

执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。

计算模块211使用目标神经网络模型/规则201对输入的数据进行处理,例如:在自动驾驶领域,该目标神经网络模型/规则201从交通场景的图像数据中识别出自动行驶过程中的障碍物等。

最后,I/O接口212将处理结果返回给客户设备240,提供给用户。

更深层地,训练设备220可以针对不同的目标,基于不同业务场景的样本数据生成相应的目标神经网络模型/规则201,以给用户提供更佳的结果。

值得注意的,图2仅是本申请实施例提供的一种系统架构的示意图,图2中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210 中。

卷积神经网络模型也可以简称为卷积神经网络,是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward) 人工神经网络,该前馈人工神经网络中的各个神经元对输入其中的图像中的重叠区域作出响应。

如图3所示,卷积神经网络(CNN)100可以包括输入层110,卷积层/池化层120,其中池化层为可选的,以及神经网络层130。

卷积层/池化层120:

卷积层:

如图3所示卷积层/池化层120可以包括如示例121-126层,在一种实现中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126 为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。

以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。

这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络模型100进行正确的预测。

池化层:

由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图3中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。

神经网络层130:

在经过卷积层/池化层120的处理后,卷积神经网络模型100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络模型100 需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图3所示的131、132至13n)以及输出层140,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等。

在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络模型100的最后层为输出层140。该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络模型100的前向传播(如图3由110至140的传播为前向传播)完成,反向传播(如图3由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络模型100的损失及卷积神经网络模型100通过输出层输出的结果和理想结果之间的误差。

需要说明的是,如图3所示的卷积神经网络模型100仅作为一种卷积神经网络模型的示例,在具体的应用中,卷积神经网络模型还可以以其他网络模型的形式存在,例如,如图4所示的多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。

上述图3和图4所示的基于卷积神经网络模型的算法可以在NPU芯片中实现。

由上述介绍可知,无论是深度神经网络模型还是卷积神经网络模型都包括权重。实际上,神经网络模型的训练过程就是通过多次迭代不断更新神经网络模型中权重的过程,在神经网络模型的训练阶段,权重就是需要更新的参数。在模型训练过程中,每次迭代都会使用样本数据计算本次迭代的损失函数,然后对损失函数进行一阶优化得到一阶梯度,然后在一阶梯度的基础上再进行进一步的附加优化,例如:在一阶梯度的基础上再进一步进行二阶优化,从而得到本次迭代的更新权重,然后使用本次迭代的更新权重进行模型更新,再在本次迭代更新了权重之后的模型基础上进行下一次迭代,直到完成神经网络模型的整个训练过程。

一阶优化采用一阶优化算法,附加优化采用附加优化算法。

一阶优化算法对参数的更新通常采用如下规则:附加优化算法则是先将与一个附加矩阵G的逆矩阵G-1相乘,产生如下的更新规则:其中θ1是更新前的参数(也就是更新前的权重),θ2是更新后的参数(也就是更新后的权重),η是学习率,该学习率可以预先配置,是对损失函数进行一阶求导得到的参数的一阶梯度。附加矩阵是对一阶梯度进行预处理的矩阵,该附加矩阵可以是二阶优化算法中的二阶信息矩阵,如:自然梯度法中的Fisher矩阵(fisher informationmatrix,FIM)。附加矩阵也可以是其他附加矩阵,如梯度的二阶矩,二阶矩是一阶梯度与一阶梯度的转置的乘积。需要说明的是,该处所列举的示例中G-1为附加矩阵的逆矩阵,实际上也不限于这一种表现形式,只要是基于本申请的思想的其他变形公式都适应,例如:其中,相当于

考虑到在每次迭代时附加矩阵的逆矩阵的复杂度大,计算时间长,为了节省神经网络模型训练的时间,本申请实施例提出了“分时更新”的思想,分时更新指的是:在通过多次迭代来训练神经网络模型的过程中,只有被采样到的迭代过程才需要更新附加矩阵的逆矩阵,没被采样到的迭代过程不需要更新附加矩阵的逆矩阵。

另外,结合上述图3和图4的介绍可知,神经网络模型通常会包括输入层、隐含层和输出层,而且,例如隐含层的数量通常还会有很多个,为了节省在神经网络模型训练过程中更新参数的时间,本申请实施例还提出了“分块更新”的思想,分块更新指的是被采样到的块才需要更新附加矩阵的逆矩阵,没被采样到的块不需要更新附加矩阵的逆矩阵。

为了便于理解下文,先结合图5A和图5B对分块更新中“块”的概念进行介绍。

如图5A所示,针对比较复杂的神经网络模型,“块”的概念指的是两个层之间的各神经元之间的向量关系,如图5A中,在隐含层1和隐含层2之间用箭头表示的向量关系的集合可以称为一个“块”,在一些描述中,也会将这个向量关系的集合称为一个“层”。在隐含层2 和隐含层3之间用箭头表示的向量关系的集合可以称为一个“块”,在一些描述中,也会将这个向量关系的集合称为一个“层”。当然,图5A中只是以隐含层1、隐含层2和隐含层3为例进行说明的,实际上,还可以包括更多的隐含层以及输入层和输出层,无论是隐含层,输入层还是输出层,包含神经元的每相邻的两个层之间的向量关系的集合都可以称为一个“块”或一个“层”。

块的划分方式不限于上述按照层的形式进行划分,也可以是按照神经网络模型中神经元的方式进行划分,这种划分方式下,可以将图5A中的例如:1.5个层、两个层或者更多个层划分到一个块中。具体多少个层的神经元划分到一个块中,本申请中不做限定。如图5B所示,这种情况下的“块”指的是按照神经网络模型中神经元的组合的方式划分的矩阵块,如图5B中,包含4个3*3大小的矩阵块601和2个4*4大小的矩阵块602。

基于上述“分时更新”和“分块更新”的思想,本申请实施例提供一种用于训练神经网络模型的系统架构。

图6是本申请实施例提供的用于训练神经网络模型的系统架构示意图。

如图6所示,本申请实施例提供的用于训练神经网络模型的系统架构700包括硬件层710、操作系统(operating system,OS)720和训练架构层730,该训练架构层730用于使用训练数据更新神经网络模型中的权重。该训练架构层730包括样本数据获取模块731、损失函数计算模块732、一阶梯度计算模块733、分时/分块更新决策模块734、预处理计算模块735 和权重更新模块736,这里的样本数据获取模块731至权重更新模块736都可以为通过软件实现的功能模块。

其中,样本数据获取模块731用于获取样本数据。

损失函数计算模块732用于使用样本数据计算损失函数。损失函数在上述图2部分介绍深度神经网络模型时已定义过,此处不再重复说明。

一阶梯度计算模块733用于对损失函数进行一阶求导,从而计算出一阶梯度

分时/分块更新决策模块734具有分时更新决策、分块更新决策,以及先分时更新决策再分块更新决策的功能。

分时更新决策指的是被决策更新的迭代过程才需要更新附加矩阵的逆矩阵,没被决策更新的迭代过程不需要更新附加矩阵的逆矩阵。

分块更新决策指的是被决策更新的块才更新附加矩阵的逆矩阵,没被决策更新的块不需要更新附加矩阵的逆矩阵。

先分时更新决策再分块更新决策指的是被决策更新的迭代过程中的块才有机会被做分块决策更新。

该处的分块中的“块”可以参阅上述图5A和图5B部分的相应介绍进行理解,此处不再重复赘述。

预处理计算模块735在分时/分块更新决策模块734决策更新的迭代过程或者决策更新的块才更新相应块的附加矩阵的逆矩阵,然后使用该块更新后的附加矩阵的逆矩阵G-1与一阶梯度相乘,从而计算得到该块的预处理结果在决策更新的迭代过程中,没被选中做更新的块直接使用上一次迭代过程中的相应块的附加矩阵的逆矩阵计算预处理结果。在决策不更新的迭代过程,所以块的附加矩阵的逆矩阵都不做更新,直接使用上一次迭代过程中的各块的附加矩阵的逆矩阵计算预处理结果。

更新G的逆矩阵G-1的过程可以是基于乔里斯基(cholesky)分解得的。关于cholesky 分解的具体过程本申请不做过多介绍。

权重更新模块736用于使用二阶优化算法的更新规则:更新权重,使得权重由θ2更新为θ2。需要说明的是,该处所列举的示例中G-1为附加矩阵的逆矩阵,实际上也不限于这一种表现形式,只要是基于本申请的思想的其他变形公式都适应,例如:其中,相当于

需要说明的是,本申请实施例中,每个块对应一个附加矩阵,每个块对应有一个权重,权重可以是矩阵的形式。对于附加矩阵的逆矩阵发生更新的块的权重也会更新,这种情况下,θ2≠θ1。对于附加矩阵的逆矩阵未发生更新的块的权重也没有更新,这种情况下,θ2=θ1。

权重更新结束后,使用本次迭代的更新权重进行模型更新,再在本次迭代更新了权重之后的模型的基础上进行下一次的迭代,每一次的迭代过程都可以参阅上述几个功能模块的工作过程进行理解。

该系统架构700可以部署在服务器、虚拟机以及终端设备等计算机设备上。例如,终端设备可以是手机(mobile phone)、平板电脑(pad)、带无线收发功能的电脑、虚拟现实(virtual reality,VR)终端、增强现实(augmented reality,AR)终端、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等。

基于对上述系统架构700中各功能模块的介绍可知,本申请实施例提供的更新参数的方法包括:方案一:分时更新;方案二:分块更新;方案三:分时更新+分块更新。下面对三种方案分别进行介绍。

方案一:分时更新。

该分时更新方案,从神经网络模型训练的整个过程来看,该更新参数的方法用于通过多次迭代来多次更新神经网络模型的参数,多次迭代包括第一迭代范围和第二迭代范围,该更新参数的方法的一实施例包括:在第一迭代范围内,每第一更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第一迭代范围包括至少两次迭代;在第二迭代范围内,每第二更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第二迭代范围包括至少两次迭代,在迭代顺序上,第二迭代范围的第一次迭代在第一迭代范围的最后一次迭代之后,第二更新步长大于第一更新步长。

使用样本数据训练神经网络模型的过程通常需要迭代很多次才能得到目标神经网络模型,每次迭代可以称为一个步(step)。整个训练过程会从第一次迭代开始,直到训练得到目标神经网络模型的整个过程中的所有step可以划分为至少两个迭代范围(period),例如:训练完成神经网络模型需要迭代一万次,可以将一万次划分为10个迭代范围,这10个迭代范围按照迭代过程中被使用的先后顺序排列,从period1到period10,其中,每个迭代范围包括1000次迭代。当然,这种划分方式只是举例,迭代范围的长度可以是不相同的,例如: period1是从step1到step200,period2是从step201到step500,period3是从step501到 step1000,period4是从step1001到step1700,period5是从step1701到step2600,period6 是从step2601到step3600,period7是从step3601到step4800,period8是从step4801到 step6000,period9是从step6001到step7500,period10是从step7500到step10000。若训练神经网络模型的收敛条件不是预设一定迭代次数的情况,可以设置较多的迭代范围,可以确保在神经网络模型收敛时,所设置的迭代范围还没被使用完。一个迭代范围也可以是一个epoch。

第一迭代范围和第二迭代范围可以是所有迭代范围中的任意两个,只要在执行顺序上,第二迭代范围在第一迭代范围之后即可。每个迭代范围会对应一个更新步长(updatestride),更新步长表示更新的间距,表示每个更新步长次更新一次神经网络模型的附加矩阵的逆矩阵,也可以描述为每隔(更新步长-1)更新一次。该更新步长也可以称为更新间隔(update interval)。更新步长可以是一个大于或等于1的整数值。更新步长的变化趋势可以是随着迭代次数的增多,相应迭代范围的更新步长越来越大,也可以是执行顺序在后面的迭代范围的更新步长只大于执行顺序在前面的某个或某几个的迭代范围的更新步长,有的迭代范围的更新步长可以相等。例如:第一个迭代范围的更新步长为1,第二个迭代范围的更新步长为2,第三个迭代范围的更新步长为2,第四个迭代范围的更新步长为3这种某些更新步长相等的情况也可以适用于本申请的分时更新的方案的。

关于第一迭代范围、第二迭代范围、第一更新步长和第二更新步长可以参阅图7A和图 7B进行理解。

图7A和图7B是更新参数的方法的两个示例示意图。

图7A中,第一迭代范围和第二迭代范围在执行顺序上是相邻的两个迭代范围,图7B中,第一迭代范围和第二迭代范围是不相邻的两个迭代范围。无论第一迭代范围和第二迭代范围是否相邻,只要在执行顺序上第二迭代范围位于第一迭代范围之后即可。

图7A中第一更新步长为2,即每2次迭代更新一次神经网络模型的附加矩阵的逆矩阵,第二更新步长为3,即每3次迭代更新一次神经网络模型的附加矩阵的逆矩阵。图7B中,第一更新步长为2,第二更新步长的取值可以为等于3或大于3的整数。实际上,该图7A和图7B 中第一更新步长和第二更新步长的取值只是个示例,只要第二更新步长大于第一更新步长即可,具体取值本申请实施例中不做限定。

以上是从神经网络模型训练的整体过程进行描述的,针对其中第N次迭代,可以是:若多次迭代中的第N次迭代位于第三迭代范围,且为第三更新步长所指示的需要更新逆矩阵的迭代,则更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,第三更新步长为第三迭代范围的更新步长,N为整数,且N>1。

第三迭代范围可以是第一迭代范围,也可以是第二迭代范围,也可以是其他的任意一次迭代范围。第N次迭代可以是神经网络模型从训练的第二次迭代到训练结束中的任意一次迭代,实际上第一次迭代,也就是N=1时也可以进行逆矩阵的更新,只是该第一次迭代的更新不需要第三更新步长来指示,可以通过预设更新起始位置的方式来指示第一次迭代要更新逆矩阵。该种可能的实现方式,针对需要更新的step,则进行逆矩阵的更新,并使用更新后的逆矩阵更新参数,从而使神经网络模型得到收敛。

可选地,针对神经网络模型多次迭代中的任意一次迭代过程,本申请实施例提供的更新参数的过程可以参阅如下实施例进行理解。

图8A是本申请实施例提供的更新参数的方法的一实施例示意图。

如图8A所示,本申请实施例提供的更新参数的方法的一实施例包括:

801、获取对神经网络模型进行到第N次迭代时所涉及到的迭代范围的信息。

所涉及到的迭代范围的信息包括第N次迭代所位于的第三迭代范围的信息。若第三迭代范围不是在执行顺序上的第一个迭代范围,则该所涉及到的迭代范围还包括执行顺序在第三迭代范围之前的在前迭代范围的信息。

所涉及到的迭代范围指的是从第一次迭代开始到第N次迭代所经历的迭代范围。在训练神经网络模型的过程中,从第一次迭代开始,迭代到第N次时,若第N次迭代位于第二个迭代范围内,则所涉及到的迭代范围包括第一个迭代范围和第二个迭代范围。若第N次迭代位于第一个迭代范围内,则所涉及到的迭代范围只包括第一个迭代范围。迭代范围的信息可以包括所涉及到的迭代范围的数值范围,如:period1从step1到step200,period2从step201 到step500。

每个迭代范围会对应一个更新步长,随着迭代次数的增加,神经网络模型的附加矩阵,以及对应的逆矩阵也会越来越趋于稳定,不再随着迭代变化或者变化越来越小,因此,在整个迭代过程中,越靠后被使用到的迭代范围对应的更新步长就可以设置的越大。

更新步长的设定方式可以为迭代范围的序号的平方、余弦曲线、指数曲线、倍数增长或分段常数等。

采用迭代范围的序号的平方来确定更新步长实现方式举例如下:

F(x)=x2,x=1,2,3,...

其中,F(x)即为在第x个迭代范围的更新步长。

针对大型神经网络,例如:ResNet50,有256个period,一个period例如包括5004个step,也即period=5004,更新步长的变换曲线可以参阅图8B所使出的指数曲线的一部分进行理解。

更新步长还可以按照倍数增长。还是以period1到period10为例,从period1到period10, 10个迭代范围对应的更新步长逐渐变大,变大的幅度例如按照2倍增长,第一个迭代范围的更新步长等于1,也就是period1的更新步长设为1,则按照2倍增长,period2的更新步长为 2,period3的更新步长为4,那么从period1到period10的对应关系可以参阅下表1进行理解。

表1:迭代范围与更新步长的对应关系表

当然,上述表1中的更新步长的取值只是举例说明,该更新步长的取值可以根据需求设置,例如:更新步长按照一个比一个大的趋势进行设置。

802、根据N和所涉及的迭代范围的信息之间的第一关系确定第N次迭代是否是第三迭代范围内的第X次迭代,若是,则执行步骤803,若否,则执行步骤804。

本申请实施例中,X用于表示第三迭代范围内的更新起始值,更新起始值用于指示所述第三迭代范围内首次更新所述逆矩阵的迭代。第三迭代范围内的第X次迭代是第三迭代范围内第一次更新逆矩阵的迭代。

若第N次迭代位于第一个迭代范围内,则在N=X时表示该第N次迭代是第一个迭代范围内首次更新逆矩阵的迭代。

若所涉及的迭代范围的信息包括第三迭代范围和执行顺序在第三迭代范围之前的在前迭代范围,则第一关系可以表示为:(N-在前迭代范围的总长度)=第二差值。

若第二差值=X,则可以确定第N次迭代是第三迭代范围内首次更新所述逆矩阵的迭代。

X的取值通常等于1,但也不限于等于1,通常X小于或等于最小的更新步长即可。例如:若最小的更新步长是3,那么该X可以等于1,也可以等于2,当然,也可以等于3,当然,这里只是举例,该X的取值可以根据需求设置。

例如:若period1从step1到step200,period2是从step201到step500,N=201,X=1。通过N=201可以确定N=201第三迭代范围为period2,在前迭代范围为period1。通过上述第一关系可以得到第二差值=201-200=1=X,则可以确定第N次迭代是period2内首次更新逆矩阵的迭代。

若period1是从step1到step200,period2是从step201到step500,period3是从step501 到step1000,N=503,X=1。通过N=503可以确定第三迭代范围为period3,在前迭代范围为 period1和period2。通过上述第一关系可以得到第二差值=503-500=3≠1,即第503次迭代不是period3内首次更新逆矩阵的迭代。

803、若第二差值指示第N次迭代是第三迭代范围内的第X次迭代,则更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,更新神经网络模型中的参数。

804、若第二差值指示第N次迭代不是第三迭代范围内的第X次迭代,则获取第三迭代范围的第三更新步长。

若N=503,则N所使用的迭代范围为period3,参阅上述表1可以获知period3的更新步长等于4。

805、根据N、所涉及的迭代范围的信息和第三更新步长的第二关系,确定是否需要更新神经网络模型的附加矩阵的逆矩阵,若是,则执行步骤806,若否,则执行步骤807。

可选的,若第三迭代范围就是所有迭代范围中的第一个迭代范围,该第二关系可以表示为:(N-X)%第三更新步长=第一余数,其中,“%”表示取余。

X同步骤802,表示更新起始值,关于X的取值和物理含义可以参阅上述步骤802中的相应解释进行理解。

例如:period1:从step1到step200,若X=1,period1的更新步长等于1,N=5,则(5-1)%1=0,则表示第一余数等于0,表示第5次迭代需要更新逆矩阵。若X=1,更新步长等于2,N=6,则 (6-1)%2=1,则表示第一余数不等于0,表示第6次迭代不需要更新逆矩阵。

若第三迭代范围之前还有在前迭代范围,该第二关系可以表示为:(N-X-第三差值)%第三更新步长=第一余数,其中,第三差值=(N-在前迭代范围的总长度)。

例如:period1:从step1到step200,period2:从step201到step500,若N=205,则表示第三迭代范围为period2,period1为在前迭代范围。该在前迭代范围的总长度为200。若 X=1,period2的更新步长等于2,则第一余数=(205-1-200)%2=0,则表示第一余数等于0,该第205次迭代需要更新逆矩阵。

若period1:从step1到step200,period2:从step201到step500,period3:从step501 到step1000,N=506,则表示第三迭代范围为period3,period1和period2为在前迭代范围,该在前迭代范围的总长度为500,若X=1,period3的更新步长等于4,则第一余数= (506-1-500)%4=1,则表示第一余数不等于0,该第506次迭代不需要更新逆矩阵。

806、若第一余数指示需要更新神经网络模型的附加矩阵的逆矩阵,则更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,更新神经网络模型中的参数。

807、若第一余数指示不需要更新神经网络模型的附加矩阵的逆矩阵,则使用第(N-1) 次迭代所使用的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,更新神经网络模型中的参数。

由以上方案一的相关描述可知,采用分时更新的方式不需要每次迭代都更新神经网络模型的附加矩阵的逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

方案二:分块更新。

图9A是本申请实施例提供的更新参数的方法的另一实施例示意图。

如图9A所示,本申请实施例提供的更新参数的方法的另一实施例包括:

901、更新P个块的附加矩阵的逆矩阵,P个块为神经网络模型的Q个块中的部分块或全部块。

按照块进行逆矩阵更新时,可以是更新全部块,也可以是更新部分块。通常,模型训练刚开始时,会对全部块进行更新,随着迭代次数的增多,会减少需要更新逆矩阵的块的数量。

P和Q为整数,且Q≥P,且Q≥2,P≥1。

关于块的概念可以参阅上述图5A和图5B部分对块的解释进行理解,此处不再重复赘述。

每个块都有一个附加矩阵G,通过G就可以计算出对应的逆矩阵G-1。在第N次迭代还没有更新附加矩阵的逆矩阵之前,该深度神经网络中块1、块2、…块Q这Q个块各自的附加矩阵G,以及逆矩阵G-1可以参阅表2进行理解。

表2:第(N-1)次所使用的块的附加矩阵G与逆矩阵G-1的对应关系表

若Q=8,P=3,例如,若第N次迭代时确定的3个块是块1、块4和块7,那么需要更新这3 个块的逆矩阵,更新后的块1的逆矩阵为块4的逆矩阵为块7的逆矩阵为除这三个块之外的其他7个块的逆矩阵不变,与第(N-1)次迭代时所使用的逆矩阵相同。第N次更新后的各块的附加矩阵G以及逆矩阵G-1的结果可以参阅表3进行理解。

表3:第N次迭代更新后的块的附加矩阵G与逆矩阵G-1的对应关系表

由表3可以看出,在第N次迭代时,每个块的附加矩阵G可以都更新,但只更新被确定的 P个块的逆矩阵,实际上,附加矩阵G也可以不全部更新,但要更新逆矩阵的块的附加矩阵是需要更新的。

902、采用P个块更新后的附加矩阵的逆矩阵,以及P个块第N次迭代的一阶梯度更新P 个块中对应块的参数,若Q>P,则除P个块之外的(Q-P)个块,采用第(N-1)次迭代时(Q-P) 个块所使用的附加矩阵的逆矩阵,以及(Q-P)个块第N次迭代的一阶梯度更新(Q-P)个块中对应块的参数。

在更新块的参数时,可以采用更新规则进行更新,为了便于区分每个step中的参数,该更新规则可以改写为其中,θN表示第N次迭代更新的参数,θ(N-1)表示第(N-1)次迭代得到的参数,表示第N次迭代的逆矩阵,表示第N次迭代的一阶梯度。

还是使用上述步骤901中Q=8,P=3的示例,块1、块4和块7的逆矩阵被更新,那么块1、块4和块7更新后的参数分别为:

块1更新后的参数为:

块4更新后的参数为:

块7更新后的参数为:

θ1N、θ4N和θ7N即为块1、块4和块7更新后的参数。

除掉块1、块4和块7之外,8个块中,还剩余块2、块3、块5、块6和块8这五个块。这五个块的逆矩阵与第(N-1)次所使用的逆矩阵相同,那么就采用上述表3中这五个块的逆矩阵来得到θ2N、θ3N、θ5N、θ6N和θ8N。这几个参数的计算过程可以分别表示为:

块2第N次迭代得到的参数为:

块3第N次迭代得到的参数为:

块5第N次迭代得到的参数为:

块6第N次迭代得到的参数为:

块8第N次迭代得到的参数为:

由该实施例的描述可知,采用分块更新的方式,只更新部分块的附加矩阵的逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

上述步骤901中的P个块可以通过如下两种方式得到。

实现方式一:基于神经网络模型中M个块的附加矩阵的信息,从M个块中得到P个块,附加矩阵的信息包括附加矩阵的迹或附加矩阵的二范数,M个块是第N次迭代的Q个块中需要更新附加矩阵的块,M为整数,Q≥M≥P。

其中,附加矩阵的迹为附加矩阵对角线上的值之和。本申请实施例中的附加矩阵为等行等列的矩阵,也可以称为正定矩阵。关于迹的概念可以参阅图9B进行理解。如图9B所示出的是一个8行*8列的附加矩阵,该附加矩阵包含64个值。该矩阵的对角线910上的8个值的和就可以称为该8行*8列附加矩阵的迹,也即是该8行*8列附加矩阵的迹=b11+b22+b33+b44+b55+b66+b77+b88。

附加矩阵的二范数是附加矩阵的转置与附加矩阵相乘后的最大特征值的开平方。

上述步骤:基于所述神经网络模型中M个块的附加矩阵的信息,从所述M个块中得到所述P个块,包括:根据所述第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的所述M个块的附加矩阵的迹,从所述M个块中得到所述P个块。

需要说明的是,本申请实施例中,第(N-1)次迭代的M个块的附加矩阵的迹不限于是第(N-1)次更新的附加矩阵的迹,若第(N-1)次没有更新附加矩阵,则第(N-1)次迭代的M个块的附加矩阵的迹可以是在与第N次距离最新的一次更新的附加矩阵的迹,该次更新后得到的迹会存储在内存或缓存中,从内存或缓存中获取即可使用。

Q个块中的M个块还需要做附加矩阵的更新,除M个块之外的(Q-M)个块是在第N次迭代时已经基本不再变化的块,这些块不光逆矩阵不需要更新,附加矩阵也不需要再做更新,所以在选择要做逆矩阵更新的P个块时可以直接排除掉这(Q-M)附加矩阵基本不再变化的块,直接从还需要做附加矩阵更新的M个块中做选择,还可以进一步节省神经网络模型训练的时间。

其中,上述步骤:根据第N次迭代的M个块的附加矩阵的迹,以及第(N-1)次迭代的M个块的附加矩阵的迹,从M个块中得到P个块,包括:从M个块中得到第一比值大于第一阈值的P个块,第一比值为第一差值与第(N-1)次迭代的附加矩阵的迹的比值,第一差值为第N次迭代的附加矩阵的迹与第(N-1)次迭的附加矩阵的迹的差值。

该过程可以根据如下关系式确定:

其中,FN表示第N次迭代的附加矩阵,F(N-1)表示第(N-1)次迭代的附加矩阵,tr(FN)表示矩阵FN的迹,tr(F(N-1))表示矩阵F(N-1)的迹,tr(FN)-tr(F(N-1))表示第一差值,表示第一比值,T1表示第一阈值。

若一个块的第一比值大于T1,则可以确定这个块的逆矩阵需要更新。若若一个块块的附加矩阵的上述第一比值小于T1,则表示则表示该块的逆矩阵不需要更新。

该实现方式中,还可以有另一关系式:其中,T2为第二阈值,且T2<T1,若有的块的上述比值小于T2,则表示在下一次迭代时,该块的附加矩阵也不再需要更新。

上述T1的取值可以设置为0.01,T2的取值可以设置为0.001,若一个块的附加矩阵的上述第一比值大于0.01,则表示该块的逆矩阵需要更新。若该块的附加矩阵的上述第一比值小于0.01,则表示该块的逆矩阵不需要更新。若该块的附加矩阵的上述第一比值小于0.001,则表示该块的附加矩阵在后续迭代过程中都不再需要更新。当然,T1和T2的取值可以根据需求设定,这里的0.01和0.001只是举例说明。

该实现方式一也可以称为是依据在线模型的计算过程。在线模型可以适用于对神经网络模型的结构不熟悉的用户。该实现方式一,可以根据迭代过程中的迹来确定块是否需要更新,可以提高块选择的准确度。

相对于在线模型,实现方式二可以称为是依据离线模型的计算过程。使用离线模型时,用户可手动调整每个块的采样概率,适合对神经网络模型的结构熟悉的用户。使用离线模型时可以利用先验信息,设置每个块的采样概率。

实现方式二:基于神经网络模型中多个块的采样概率,从多个块中得到P个块,其中,一个块的采样概率用于指示一个块在第N次迭代时被更新附加矩阵的逆矩阵的概率。

其中,多个块中一个块的采样概率与该块中的参数量,以及神经网络模型中的总参数量有关,或者,多个块的采样概率为预先配置的。

每个块对训练过程的影响不同,因此每个块的采样概率也不同,参数数量越多的块,对训练过程的影响越大。可以按照来确定每个块的采样概率。其中wi表示第i块的参数量,∑jwj表示神经网络模型的参数总量。通过块中参数量来确定采样概率更有利于提高对神经网络模型影响大的块的选择机率。

计算出采样概率后,可以按照该采样概率进行采样,然后输出需要更新附加矩阵的逆矩阵的块的索引值。如果该神经网络模型中有10个块,若输出索引值是1、4和7,则表示块 1、块4和块10的附加矩阵的逆矩阵需要更新。

该过程还可以参阅图9C进行理解,如图9C所示,使用图片训练神经网络模型,该神经网络模型包括多个块,如:卷积(convolution,conv)层conv 0、conv1、conv2、conv3,…,全连接(full connected,fc)层。按照上述采样概率进行分块采样,确定在本次迭代中,conv1、conv3和fc这三个块需要更新附加矩阵的逆矩阵。

由该方案二可知,通过分块更新的方式,更新部分块可以降低附加矩阵的逆矩阵的维度,可以减少神经网络模型训练的时间,提高神经网络模型训练的速度。

方案三:分时更新+分块更新。

该方案三相当于是方案一和方案二的组合。先确定第N次迭代需要更新逆矩阵后,再针对第N次迭代进行分块更新。若第N次迭代不需要更新逆矩阵,则不执行分块更新。

该过程可以参阅图10进行理解。图10是本申请实施例提供的更新参数的方法的另一实施例示意图。

如图10所示,本申请实施例提供的更新参数的方法的另一实施例包括:

1001、在第N次迭代计算得到一阶梯度后,做分时更新决策。

该分时更新决策过程可以参阅上述方案一中的相应内容进行理解,此处不再重复赘述。

若步骤1001决策更新,则执行步骤1002,若步骤1001决策不更新,则采用第(N-1)次迭代时所使用的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数执行步骤1007,也就是做参数更新。

1002、判断是否使用在线模型做块采样。若是,则执行步骤1003,若否,则执行步骤1004。

1003、使用在线模型做块采样。

该步骤1003可以参阅上述方案二中的实现方式一的内容进行理解。

1004、使用离线模型做块采样。

该步骤1003可以参阅上述方案二中的实现方式二的内容进行理解。

1005、根据块索引确定当前块是否更新,若是,则执行步骤1006,若否,则采用第(N-1) 次迭代时所使用的该块的附加矩阵,以及第N次迭代该块的一阶梯度的逆矩阵执行步骤 1007,也就是做参数更新。

1006、更新该块的附加矩阵的逆矩阵。

执行完1006后,采用更新的附加矩阵的逆矩阵,以及第N次迭代该块的一阶梯度执行步骤1007,也就是做参数更新。

1007、参数更新。

若块的逆矩阵做了更新,则采用更新后的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数。

若块的逆矩阵未做更新,则采用第(N-1)次迭代时所使用的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数。

该方案三,在分时更新的基础上再做分块更新,可以进一步节省训练神经网络模型的时间,提高神经网络模型训练的速度。

为了说明本申请方案的效果,下面采用相同的硬件环境和软件环境,采用三种不同的算法进行测试,得到表4中的测试数据。

测试的样本数据集为ImageNet全集,神经网络模型为大型神经网络模型Resnet50,处理器采用GPU V100,软件环境的深度学习框架为pytorch。

本申请的方案优化器基于自然梯度法,先对神经网络模型的矩阵按网络结构分块,再使用上述实施例中所介绍的分时更新和分块更新的方案进行测试,可以得到下表4中分时分块更新所在列的数据。

另外,采用随机梯度算法(stochastic gradient descent,SGD)和Momentum算法进行测试,也可以得到表4中的SGD+Momentum算法所在列的数据。

再者,采用原始(original)克罗内克因子近似曲率算法(kronecker-factoredapproximate curvature,KFAC)进行测试,也可以得到表4中的original KFAC算法所在列的数据。

表4:实验数据对比表

由表4可知,本申请的分时分块更新的方案相比original KFAC的二阶优化器在总体训练时间上提升了20倍,在总体附加矩阵/逆矩阵的计算时间上提升了50倍。单次迭代上也远快于original KFAC;本申请的收敛迭代次数(75%top-1)相对一阶优化器SGD+Momentum 提升1了倍以上,收敛速度远快于一阶优化器;本申请训练时间比一阶优化器也提升约30%,远快于一阶优化器。

以上介绍了本申请实施例中更新参数的方法,下面结合附图介绍相应的装置。

图11为本申请实施例提供的更新参数的装置的一实施例示意图。

如图11所示,本申请实施例提供的更新参数的装置110的一实施例。该更新参数的装置用于通过多次迭代来多次更新神经网络模型的参数,多次迭代包括第一迭代范围和第二迭代范围,该装置110包括:

第一处理单元1101,用于在第一迭代范围内,每第一更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第一迭代范围包括至少两次迭代。

第二处理单元1102,用于在第二迭代范围内,每第二更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,第二迭代范围包括至少两次迭代,在迭代顺序上,第二迭代范围的第一次迭代在第一迭代范围的最后一次迭代之后,第二更新步长大于第一更新步长。

本申请实施例提供的方案,采用分时更新的方式不需要每次迭代都更新神经网络模型的附加矩阵的逆矩阵,这样可以减少更新附加矩阵的逆矩阵的时间开销,进而可以提高神经网络模型的训练的速度。

可选的,多次迭代包括第三迭代范围,第三迭代范围为多次迭代中的任意一个迭代范围,该装置110还包括:

第三处理单元1103,用于若多次迭代中的第N次迭代位于第三迭代范围,且为第三更新步长所指示的需要更新逆矩阵的迭代,则更新神经网络模型的附加矩阵的逆矩阵,并使用更新后的附加矩阵的逆矩阵,以及第N次迭代的一阶梯度更新神经网络模型中的参数,第三更新步长为第三迭代范围的更新步长,N为整数,且N≥1。

可选的,第三处理单元1103用于:更新P个块的附加矩阵的逆矩阵,P个块为神经网络模型的Q个块中的部分块或全部块,P和Q为整数,且Q≥P,且Q≥2,P≥1;采用P个块更新后的附加矩阵的逆矩阵,以及P个块第N次迭代的一阶梯度更新P个块中对应块的参数;若N >1,且Q>P,则除P个块之外的(Q-P)个块,采用第(N-1)次迭代时(Q-P)个块所使用的附加矩阵的逆矩阵,以及(Q-P)个块第N次迭代的一阶梯度更新(Q-P)个块中对应块的参数。

可选的,第三处理单元1103,还用于基于神经网络模型中M个块的附加矩阵的信息,从 M个块中得到P个块,附加矩阵的信息包括附加矩阵的迹或附加矩阵的二范数,M个块是第N 次迭代的Q个块中需要更新附加矩阵的块,M为整数,Q≥M≥P。

可选的,第三处理单元1103,用于根据第N次迭代的M个块的附加矩阵的迹,以及第(N-1) 次迭代的M个块的附加矩阵的迹,从M个块中得到P个块。

可选的,第三处理单元1103,用于从M个块中得到第一比值大于第一阈值的P个块,第一比值为第一差值与第(N-1)次迭代的附加矩阵的迹的比值,第一差值为第N次迭代的附加矩阵的迹与第(N-1)次迭的附加矩阵的迹的差值。

可选的,第三处理单元1103,还用于基于神经网络模型中多个块的采样概率,从多个块中得到P个块,其中,一个块的采样概率用于指示一个块在第N次迭代时被更新附加矩阵的逆矩阵的概率。

可选的,第三处理单元1103,还用于在第N次迭代的第二差值等于更新起始值的情况下更新逆矩阵,其中,第二差值为N与在前迭代范围的总长度的差值,在前迭代范围在执行顺序上位于第三迭代范围之前,更新起始值用于指示第三迭代范围内首次更新逆矩阵的迭代。

可选的,第三处理单元1103,用于在第N次迭代的第一余数为0的情况下更新逆矩阵;其中,第一余数为第三差值与第三更新步长的余数,第三差值为(N-更新起始值)与在前迭代范围的总长度的差值,在前迭代范围在执行顺序上位于第三迭代范围之前,更新起始值用于指示第三迭代范围内首次更新逆矩阵的迭代。

以上描述了更新参数的装置的分时更新,以及分时更新加分块更新的方案,该部分内容可以参阅前述实施例中的相应内容进行理解,此处不再重复赘述。

另外,本申请实施例提供的更新参数的装置110还可以单独执行分块更新的过程,该种情况下,更新参数的装置110用于通过多次迭代来多次更新神经网络模型的参数,针对多次迭代中的第N次迭代,N为大于1的整数。该装置110包括:

第一处理单元1101,用于更新P个块的附加矩阵的逆矩阵,P个块为神经网络模型的Q 个块中的部分块或全部块,P和Q为整数,且Q≥P,且Q≥2,P≥1。

第二处理单元1102,用于采用P个块更新后的附加矩阵的逆矩阵,以及P个块第N次迭代的一阶梯度更新P个块中对应块的参数;若Q>P,则除P个块之外的(Q-P)个块,采用第(N-1) 次迭代时(Q-P)个块所使用的附加矩阵的逆矩阵,以及(Q-P)个块第N次迭代的一阶梯度更新(Q-P)个块中对应块的参数。

申请实施例采用分块更新的方式,可以根据需求对全部块或部分块的附加矩阵的逆矩阵进行更新,这样可以减少更新逆矩阵的时间开销,从而可以减少神经网络模型训练的时间,提高神经网络模型的训练的速度。

可选地,第三处理单元1103,用于基于神经网络模型中M个块的附加矩阵的信息,从M 个块中得到P个块,附加矩阵的信息包括附加矩阵的迹或附加矩阵的二范数,M个块是第N 次迭代的Q个块中需要更新附加矩阵的块,M为整数,Q≥M≥P。

可选地,第三处理单元1103,用于根据第N次迭代的M个块的附加矩阵的迹,以及第(N-1) 次迭代的M个块的附加矩阵的迹,从M个块中得到P个块。

可选地,第三处理单元1103,用于从M个块中得到第一比值大于第一阈值的P个块,第一比值为第一差值与第(N-1)次迭代的附加矩阵的迹的比值,第一差值为第N次迭代的附加矩阵的迹与第(N-1)次迭的附加矩阵的迹的差值。

可选地,第三处理单元1103,还用于基于神经网络模型中多个块的采样概率,从多个块中得到P个块,其中,一个块的采样概率用于指示一个块在第N次迭代时被更新附加矩阵的逆矩阵的概率。

以上描述了更新参数的装置的分块更新的方案,该部分内容可以参阅前述实施例中的相应内容进行理解,此处不再重复赘述。

需要说明的是,上述第一处理单元1101、第二处理单元1102和第三处理单元1103可以通过一个处理单元来实现这三个处理单元的功能,也可以通过两个或三个处理单元来实现这三个处理单元的功能。

上述更新参数的装置110可以参阅上述更新参数的方法部分的实施例进行理解,本处不再过多赘述。

图12所示,为本申请的实施例提供的计算机设备120的一种可能的逻辑结构示意图。计算机设备120包括:处理器1201、通信接口1202、存储器1203以及总线1204,该处理器1201 可以包括CPU,或者,CPU与GPU和NPU和其他类型的处理器中的至少一个。处理器1201、通信接口1202以及存储器1203通过总线1204相互连接。在本申请的实施例中,处理器1201用于对计算机设备120的动作进行控制管理,例如,处理器1201用于执行:在第一迭代范围内,每第一更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵,在第二迭代范围内,每第二更新步长所指示的迭代次数更新一次神经网络模型的附加矩阵的逆矩阵。或者,处理器1201用于执行图8A中的步骤801至803,以及图9A中的步骤901至902,以及图 10中的步骤1001至1007和/或用于本文所描述的技术的其他过程。通信接口1202用于支持计算机设备120进行通信。存储器1203,用于存储计算机设备120的程序代码和数据。

其中,处理器1201可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线1204可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

如图13所示,本申请实施例提供的计算机设备130的一种可能的逻辑结构示意图。该计算机设备130包括:硬件层1301和虚拟机(virtual machine,VM)层1302,该VM层可以包括一个或多个VM。该硬件层1301为VM提供硬件资源,支撑VM运行,该VM的功能和与本申请相关的过程可以参阅上述图6至图10中的相应描述进行理解。该硬件层601包括处理器、通信接口以及存储器等硬件资源。该处理器可以包括CPU,或者,CPU与GPU和NPU中的至少一个。

在本申请的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图6至图10部分实施例所描述的更新参数的方法。

在本申请的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图6至图10部分实施例所描述的更新参数的方法。

在本申请的另一实施例中,还提供一种芯片系统,该芯片系统包括处理器,用于支持更新参数的装置实现上述图6至图10部分实施例所描述的更新参数的方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器,用于保存更新参数的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。

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

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

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

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

另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种神经网络训练方法、装置、电子设备及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!