一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络训练方法、系统、设备、存储介质及程序产品与流程

2022-02-24 11:14:16 来源:中国专利 TAG:


1.本发明涉及信息处理技术领域,特别是涉及一种神经网络训练方法、系统、设备、存储介质及程序产品。


背景技术:

2.传统神经网络模型的精度多为16或32位浮点型,称为浮点网络,或称为全精度网络。与全精度相对的是低精度,一般将小于4bit的数据位宽定义为低精度,例如二值数据(也称为二值化数据)、三值数据(也称为三值化数据)等。在大多数计算平台上,相比浮点数计算,低精度数值运算速度更快,能耗更低。
3.二值神经网络(也称为二值化神经网络)为特殊的低精度神经网络,其参数和中间层输出均为二值(binary),亦即为0或1。在网络结构一致的情况下,二值神经网络从模型大小、计算速度、能耗,均优于传统的浮点网络。
4.现有的二值神经网络等低精度网络的优化方式仍然采用与浮点网络的优化方法相似的方式:利用浮点网络进行训练,然后把训练后网络的参数与输出值量化为二值,得到二值神经网络。例如,现有的很多方法仍基于梯度下降方式来优化二值神经网络,即二值神经网络的优化器仍基于梯度下降等传统方式,优化器的中间输出或最终输出仍包括浮点数据。然后利用优化器的输出对二值参数进行调整,例如将参数加上或减去该输出。但现有方法的精度较差、训练得到的模型的准确率较低。作为一个具体示例,利用imagenet数据集来训练resnet18结构的残差网络,在imagenet测试数据集上测试不同网络的top-1的准确率,也就是模型预测的最可能的类别与实际真实类别相比,有多大比例是正确的。测试结果为:浮点网络得到的准确率为69.3%,利用现有的二值神经网络训练方法得到的准确率为42.2%。由此可见,现有的二值神经网络训练方法的准确率较低。


技术实现要素:

5.本发明的目的在于提供一种新的神经网络训练方法、系统、设备、存储介质及程序产品。
6.本发明的目的采用以下技术方案来实现。依据本发明提出的神经网络训练方法,所述神经网络中的一个或多个参数为二值参数,所述方法包括以下步骤:利用优化器对所述二值参数进行优化,其中,所述优化器的输出包括翻转或不翻转,所述翻转表示改变所述二值参数的取值,所述不翻转表示不改变所述二值参数的取值。
7.本发明的目的还可以采用以下的技术措施来进一步实现。
8.前述的神经网络训练方法,所述利用优化器对所述二值参数进行优化包括:对于预先设置的损失函数,选取使得所述损失函数最小化的二值参数。
9.前述的神经网络训练方法,所述利用优化器对所述二值参数进行优化进一步包括:利用循环神经网络作为优化器对所述二值参数进行优化,其中,所述循环神经网络的输出包括所述翻转或所述不翻转,用以利用所述循环神经网络的输出来更新所述二值参数。
10.前述的神经网络训练方法,所述利用循环神经网络作为优化器对所述二值参数进行优化包括:对于根据二值网络的输入而得到的浮点形式的第一梯度,将所述第一梯度输入循环神经网络以得到第二梯度;其中,所述第二梯度包括所述翻转或不翻转。
11.前述的神经网络训练方法,所述利用所述循环神经网络的输出来更新所述二值参数包括:取所述循环神经网络的输出的符号,然后与待优化的所述二值参数相乘,以得到优化后的所述二值参数。
12.前述的神经网络训练方法,所述循环神经网络为长短期记忆网络。
13.前述的神经网络训练方法,所述利用优化器对所述二值参数进行优化进一步包括:对于n个所述二值参数,从所述n个二值参数的全部的2n组可行取值中、或从所述n个二值参数的一部分可行取值中,利用所述翻转或不翻转来选取使得所述损失函数最小的取值,其中的n为正整数。
14.前述的神经网络训练方法,所述从所述n个二值参数的一部分可行取值中,利用所述翻转或不翻转来选取使得所述损失函数最小的取值,包括:按照预设的顺序规则,对所述二值参数进行翻转检测,直到对所有待优化的所述二值参数完成所述翻转检测;其中,所述翻转检测包括:对一个所述二值参数进行所述翻转、或者对多个所述二值参数中的一部分进行所述翻转,若使得所述损失函数减小,则所述二值参数采用本次翻转后的取值,否则所述二值参数采用本次翻转前的取值;然后对下一个或下一些所述二值参数进行所述翻转检测。
15.前述的神经网络训练方法,所述按照预设的顺序规则,对所述二值参数进行翻转检测,包括:对于属于所述神经网络中的多层结构的多个所述二值参数,在对同一层的所有待优化的所述二值参数进行所述翻转检测后,再对下一层的所述二值参数进行所述翻转检测。
16.本发明的目的还采用以下的技术方案来实现。依据本发明提出的一种神经网络训练系统,所述神经网络中的一个或多个参数为二值参数,所述系统包括:优化器,用于对所述二值参数进行优化;其中,所述优化器的输出包括翻转或不翻转,所述翻转表示改变所述二值参数的取值,所述不翻转表示不改变所述二值参数的取值。
17.本发明的目的还可以采用以下的技术措施来进一步实现。
18.前述的神经网络训练系统,所述优化器具体用于:对于预先设置的损失函数,选取使得所述损失函数最小化的二值参数。
19.前述的神经网络训练系统,所述优化器包括循环神经网络模块,用于:利用循环神经网络对所述二值参数进行优化,其中,所述循环神经网络的输出包括所述翻转或所述不翻转,用以利用所述循环神经网络的输出来更新所述二值参数。
20.前述的神经网络训练系统,所述循环神经网络模块具体用于:对于根据二值网络的输入而得到的浮点形式的第一梯度,将所述第一梯度输入循环神经网络以得到第二梯度;其中,所述第二梯度包括所述翻转或不翻转。
21.前述的神经网络训练系统,所述循环神经网络模块还用于:取所述循环神经网络的输出的符号,然后与待优化的所述二值参数相乘,以得到优化后的所述二值参数。
22.前述的神经网络训练系统,所述循环神经网络模块为长短期记忆网络模块。
23.前述的神经网络训练系统,所述优化器包括组合优化模块,用于:对于n个所述二
值参数,从所述n个二值参数的全部的2n组可行取值中、或从所述n个二值参数的一部分可行取值中,利用所述翻转或不翻转来选取使得所述损失函数最小的取值,其中的n为正整数。
24.前述的神经网络训练系统,所述组合优化模块具体用于:按照预设的顺序规则,对所述二值参数进行翻转检测,直到对所有待优化的所述二值参数完成所述翻转检测;其中,所述翻转检测包括:对一个所述二值参数进行所述翻转、或者对多个所述二值参数中的一部分进行所述翻转,若使得所述损失函数减小,则所述二值参数采用本次翻转后的取值,否则所述二值参数采用本次翻转前的取值;然后对下一个或下一些所述二值参数进行所述翻转检测。
25.前述的神经网络训练系统,所述组合优化模块具体用于:对于属于所述神经网络中的多层结构的多个所述二值参数,在对同一层的所有待优化的所述二值参数进行所述翻转检测后,再对下一层的所述二值参数进行所述翻转检测。
26.本发明的目的还采用以下的技术方案来实现。依据本发明提出的一种设备,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现上述任一方面任一项可能的神经网络训练方法。
27.本发明的目的还采用以下的技术方案来实现。依据本发明提出的一种计算机存储介质,包括计算机指令,当计算机指令在设备上运行时,使得设备执行上述任一方面任一项可能的神经网络训练方法。
28.本发明的目的还采用以下的技术方案来实现。依据本发明提出的一种计算机程序产品,当计算机程序产品在设备上运行时,使得设备执行上述任一方面任一项可能的神经网络训练方法。
29.本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提出的神经网络训练方法、系统、设备、存储介质及程序产品至少具有下列优点及有益效果:
30.(1)本发明提出了一种新的优化器,该优化器直接输出一个行为,输出翻转信号或不翻转,能够使得优化器的输出空间与参数数值范围一致;
31.(2)本发明通过利用长短期记忆网络或其他循环神经网络来代替传统优化器,直接输出翻转信号来优化网络参数,能够使得优化器的输出空间与参数数值范围一致,精度较好,训练得到的模型的准确率较高;
32.(3)本发明通过利用组合优化代替传统优化方法,尤其是利用基于贪心搜索策略的组合优化方法,能够得到精度更高的网络模型,训练得到的模型的准确率较高。
33.上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
34.图1是本发明一个实施例的神经网络训练方法的流程框图;
35.图2是本发明另一实施例的神经网络训练方法的流程框图;
36.图3是本发明一个实施例提供的利用优化器来训练二值网络的示意图;
37.图4是本发明一个实施例提供的基于长短期记忆网络的优化器的示意图;
38.图5是本发明提出的基于长短期记忆网络的神经网络训练方法的与现有方法的效果比较的示意图;
39.图6是本发明又一实施例的神经网络训练方法的流程框图;
40.图7是本发明一个实施例的神经网络训练系统的结构框图;
41.图8是本发明一个实施例提供的优化器的结构框图;
42.图9是本发明另一个实施例提供的优化器的结构框图;
43.图10是本发明一个实施例的设备的结构示意图。
具体实施方式
44.为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的神经网络训练方法、系统、设备、存储介质及程序产品的具体实施方式、结构、特征及其功效,详细说明如后。
45.需注意,传统的优化器的优化对象是浮点网络,即神经网络的参数的取值是浮点数,比如是0.1、0.001,有无穷多种可能的取值。而二值神经网络的参数的取值只有0和1。
46.图1为本发明的神经网络训练方法一个实施例的示意性流程框图。请参阅图1,在本发明实施例中,被训练的神经网络中的一个或多个参数为二值参数,本发明示例的神经网络训练方法主要包括以下步骤:
47.步骤s11,利用优化器对神经网络中的一个或多个二值参数进行优化。其中,该优化器的输出包括翻转或不翻转。然后利用优化器的输出对二值参数进行调整、更新。由于该优化器针对二值参数进行优化,因此不妨称为二值优化器(binary optimizer)。
48.其中,前述的翻转表示改变参数的取值,不翻转表示不改变参数的取值。对于二值参数,前述的输出翻转或不翻转具体表示:是否要将一个参数从0转到1、或从1转到0。例如,假设被优化的一个二值参数的原始取值为1,若收到翻转信号,则该二值参数变为0,若不翻转,则该二值参数保持为1。
49.可选地,在一些示例中,前述的优化器的输出包括优化器的中间输出,或者在另一些示例中,前述的优化器的输出包括优化器的最终输出。
50.可选地,在一些示例中,前述的优化器以信号的形式来输出翻转或不翻转。因此可将优化器输出的翻转或不翻转称为翻转信号。
51.需注意,本发明示例的方法并非仅限用于二值神经网络,而是可以应用于任何适合本发明所示方法的机器学习过程。例如,可应用于一部分参数为二值参数的神经网络系统,对该神经网络系统中的二值参数采用本发明示例的方法来进行优化。
52.本发明提出了一种新的优化器,该优化器直接输出一个行为,输出翻转信号或不翻转,利用翻转信号来进行优化,能够使得优化器的输出空间与参数数值范围一致。
53.一般来说,训练是指利用数据得到可用模型的过程,优化是指的这个过程中具体使用的方法。机器学习的训练过程的本质是最小化损失,即在训练过程中,在定义损失函数后,利用优化器来对网络模型中的参数θ进行调整、优化,以使得该损失函数的值最小化。而损失值越小,则说明训练得到的模型越接近于真实情况。其中,前述的参数θ一般是多个参
数的集合{θ1,θ2,θ3…
}。在本发明的一些实施例中,前述步骤s11包括:对于预先设置的损失函数,选取使得损失函数最小化的二值参数。需注意,前述的最小化可以是局部最小化、也可以是全局最小化,这一般依据具体的优化目标、优化策略而确定。
54.具体地,可以采用多种方式来输出翻转或不翻转。
55.【实施例一】
56.图2为本发明的神经网络训练方法另一实施例的示意性流程框图。请参阅图2,作为一个可选实施例,前述步骤s11包括:步骤s21,利用长短期记忆网络(long short-term memory networks,简称为lstm)作为优化器来对二值参数进行优化,以输出翻转或不翻转。
57.需注意,在本发明的一些实施例中,并不限制必须利用长短期记忆网络对二值参数进行优化,例如也可以利用其他的循环神经网络(简称为rnn)作为优化器来优化二值参数。事实上,lstm是一种特殊的rnn。需注意,本发明利用rnn进行神经网络的训练是因为优化器每次的输出实际上不只是依赖于当前的输入,也与之前的输入有关系。以下以长短期记忆网络作为示例来说明本发明,事实上在后续多个实施例中均可将长短期记忆网络替换为一般的循环神经网络。
58.在本发明的一些实施例中,前述步骤s21具体包括:对于根据二值网络的输入而得到的浮点形式的梯度,不妨将该浮点形式的梯度作为第一梯度,将该第一梯度输入优化器长短期记忆网络lstm以得到第二梯度,其中,该第二梯度包括翻转或者不翻转操作。需注意,可以将本实施例中的长短期记忆网络替换为循环神经网络。
59.图3为本发明一个实施例提供的使用优化器(optimizer)来优化待训练的二值网络这一优化对象(optimizee)的示意图。可选地,在一个示例中,图中的m代表作为优化器的循环神经网络rnn;或者在另一示例中,m代表作为优化器的长短期记忆网络lstm。图中的t表示训练步数,该图中包含了3步训练,分别为t-2、t-1、和t。在每一步训练中,二值网络在这一步时的参数为θ
t
,二值网络根据目前的输入得到的输出是f
t
,而是二值网络对于这次输入得到的梯度。可选地,该梯度是浮点数梯度,例如可以是现有方法得到的梯度。现有训练方法是直接把梯度加到θ
t
上,得到更新的θ
t 1
。而本发明提出的神经网络训练方法利用rnn或lstm作为优化器,把这一步的梯度输入优化器(图中的m),生成一个新的梯度g
t
,这个g
t
就是翻转或者不翻转操作,然后根据梯度g
t
和本步的θ
t
得到更新的θ
t 1
。图3中的h
t
是优化器本身的隐变量,表示这个优化器是有状态的,也就是每一次输出的操作是与上次的输入也有间接的关系。需注意,在本实施例中,图3示出的三步训练是用于描述当前这次训练迭代和前后两次迭代的关系,每一步都是更新所有参数。
60.作为一个可选的具体示例,输出翻转信号的实现方式,或者说图3示出的根据新梯度g
t
和参数θ
t
经过

过程得到更新的θ
t 1
,包括:取优化器m的输出量g
t
的符号,然后与待优化的目标值θ
t
相乘,以得到优化后的二值参数θ
t 1
,这样就起到了翻转的效果。具体地,本过程包括进行如下运算:θ
t 1
=θ
t
*sign(g
t
)。需要说明的是,由于对象是二值网络,所以目前的参数是二值的,在取输出量的符号和参数相乘时,如果符号是-1、原来参数是 1,则新的参数就是-1,如果符号是 1、原来参数是 1,则新的参数就是 1。
61.图4为本发明一个实施例提供的基于长短期记忆网络的优化器的具体结构的示意图,该图4亦为图3中的优化器所进行的具体处理的示意图。请参阅图4,与一般rnn类似地,
lstm具有由神经网络重复模块(repeating module)组成的链式结构,但是lstm的重复模块比较特殊。图4中的m表示lstm重复模块,示出了三次迭代过程中的lstm重复模块,并示出了其中一次的具体过程。图4中的lstm重复模块m与图3中的优化器m相对应。在每个lstm重复模块中包括:细胞状态(cell state)和隐藏状态(hidden state),该两个状态均用于在各个重复模块之间传递信息,图4的重复模块中的顶部的水平线表现的是细胞状态,底部的水平线表现的是隐藏状态。不妨用c
t
表示细胞状态,用h
t
表示隐藏状态。lstm通过三个门(gate)结构来对细胞状态删除或添加信息。门结构包含sigmoid层(也称为s型函数层)和点乘运算。该sigmoid层输出0、1之间的数,用以描述每部分应通过多少信息。其中,0表示不通过任何信息,1表示通过所有信息。
62.在本发明一个实施例中,利用lstm重复模块进行的输入梯度生成新梯度g
t
的一次迭代过程主要包括:
63.步骤一,确定从细胞状态中删除的信息;具体地,利用一称为遗忘门的sigmoid层来实现确定从细胞状态中删除的信息,输入h
t-1
和至该遗忘门,并输出0、1之间的数f
t
,用以确定将t-1时刻的细胞状态c
t-1
中的哪些删除、哪些保留。
64.步骤二,确定存储至细胞状态中的新信息;这具体包括两部分,一部分为,利用一称为输入门的sigmoid层来确定被更新的值,输入h
t-1
和至该输入门,并输出i
t
;另一部分为,利用一tanh层(也称为双曲正切层)、并根据h
t-1
和来生成新加入细胞状态的候选值的向量合并这两部分以生成细胞状态的更新。
65.步骤三,将旧细胞状态c
t-1
更新为新细胞状态c
t
;前面步骤已确定好更新什么,本步骤仅需实际去更新。具体地,将旧细胞状态c
t-1
乘以f
t
以遗忘在步骤一中确定删除的信息,然后添加这就是新的候选值。
66.步骤四,确定输出。该输出基于细胞状态,不过是过滤后的版本。具体地,首先利用一称为输出门的sigmoid层来确定要将细胞状态中的哪些部分输出;然后将细胞状态通过tanh并乘以该输出门,使得仅输出所确定要输出的部分h
t
。在一些示例中,lstm重复模块输出的新梯度g
t
是基于h
t
而得到的。
67.图5为本发明提出的基于长短期记忆网络的神经网络训练方法的与现有方法的效果比较的示意性图示。请参阅图5,作为一个具体示例,在小数据集mnist上测试分类的准确率,对比的是不同优化/训练算法对二值网络准确率的影响,纵轴是准确率,横轴是训练的时间,亦为训练迭代次数,观察到本发明提出的神经网络训练方法示例的基于lstm的方式可以达到甚至略微超过现有方法:在图5的三个图表中,最左边的是采用训练传统浮点网络常用的adam优化器得到的准确率结果;中间是采用基于lstm且输出更新的梯度、而不是直接翻转信号得到的结果,可以看到该方法与最左边adam的准确率结果基本相当;最右边的是采用本发明提出的基于lstm且输出翻转信号的方法所得到的准确率结果,可以看到与基于adam优化器的方式、以及与基于lstm且输出更新的梯度的方式相比,本发明提出的方法的准确率是更高的。
68.本发明提出的神经网络训练方法,通过利用长短期记忆网络代替传统优化器,直接输出翻转信号来优化网络参数,使得优化器的输出空间与参数数值范围一致,精度较好,
训练得到的模型的准确率较高。
69.【实施例二】
70.二值神经网络的传统优化方法一般是基于梯度下降的,基于梯度下降的方式的本质可以形象地描述为:在参数的取值空间中,在当前的位置,向哪个方向移动参数能够使得损失函数下降得比较快,则向哪个方向移动。对于二值神经网络,其参数不再是连续变化的,往任何方向移动参数都是从0变到1、或从1变为0。会出现往一个方向走了之后,网络是没有变化的。从而传统的优化策略是否能够很好的优化二值神经网络是不确定的。
71.因此,在本发明的一些示例中,本发明的方法不把二值神经网络优化问题视为传统优化问题,而是视为一个组合优化问题。
72.图6为本发明的神经网络训练方法又一实施例的示意性流程框图。请参阅图6,作为一个可选实施例,前述步骤s11包括:步骤s31,对于二值神经网络的多个二值参数,不妨假设这些参数是n个参数{θ1,θ2,

,θn},其中的n为正整数,每个参数的取值为0或1,因此n个参数总共有2n组可能的取值(或称为可行取值),每组取值是{θ1,θ2,

,θn}的一种可行取值;从这n个二值参数的全部的2n组可行取值中(不妨将全部的可行取值称为取值范围)、或从这n个二值参数的全部2n组可行取值中的一部分取值之中,利用述翻转或不翻转来选取使得损失函数最小的一组参数取值。需注意,在本实施例中,直接通过翻转和查看损失函数来进行优化。
73.在本发明一些可选示例中,前述步骤s31包括:找到所有可能的翻转顺序的组合,确定每个翻转顺序对应的损失函数,再选取使得损失函数最小的翻转顺序。实际上,由于解空间较大,采用遍历全部取值范围方式的计算量很大、效率一般较慢。
74.在本发明另一些可选示例中,通过贪心策略来搜索更优解。具体地,在进行本发明示例的前述的基于贪心策略的神经网络训练方法时,不考虑翻转顺序不同而造成的变化、区别,先翻转一个或一些参数,查看损失函数并选取翻转之后造成结果提高最大的参数;再翻转另一个或另一些参数;每次都选取翻转之后造成结果提高最大的那个参数处理。需注意,这种基于贪心策略的方式可能会由于翻转的先后顺序的不同而结果不同,或者说得到的结果可能是“局部最优”。在一个示例中,前述翻转顺序亦为所有待优化的二值参数的排列顺序。
75.作为本发明的一个基于贪心策略的具体实施例,前述步骤s31包括:按照预设的顺序规则,对待优化的二值参数进行翻转检测,直到对所有的待优化的二值参数完成该翻转检测。其中,该翻转检测包括:对一个二值参数进行翻转、或者对多个二值参数中的一部分进行翻转;若在训练集上能够带来更好的效果,例如使得损失函数减小,则保留本次翻转,即保留本次翻转的结果,该二值参数采用本次翻转后的取值;否则放弃本次翻转,二值参数采用本次翻转前的取值;然后对下一个或下一些二值参数进行该翻转检测。
76.需注意,在本实施例中,在对多个二值参数进行翻转检测时,虽然是按照预设的顺序规则进行的,即不需要对所有可能的翻转顺序全部进行翻转检测,但并不限制仅采取某一种特定的顺序,而是可以采取多种的翻转顺序规则的一种或多种。例如可以采取以下策略中的一种、或多种策略的组合:
77.可选地,在前述的步骤s31中,对于多层结构的神经网络,对于属于神经网络中的多层结构的多个待优化的二值参数,逐层地对二值参数进行翻转检测,直到对所有的待优
化的二值参数完成该翻转检测。具体地,前述的逐层地对二值参数进行翻转检测包括:在对同一层的所有待优化的二值参数进行翻转检测后,再对另一层的二值参数进行翻转检测。可选地,前述的逐层翻转还包括:根据多层结构的关系,按照从前一层到后一层的顺序来逐层翻转。本发明通过采用逐层的处理,能够顾及神经网络的后面层的参数对于前面的层是有更强的依赖关系的性质,使得整体的优化结果更稳定。
78.可选地,在前述的步骤s31中,逐个地进行翻转检测,在一次翻转检测过程中仅对一个二值参数来进行,直到对所有的待优化的二值参数完成该翻转检测。
79.可选地,在前述的步骤s31中,在一次翻转检测过程中,同时翻转多个二值参数来进行。
80.作为一个具体示例,在小数据集mnist上测试分类的准确率,观察到本发明提出的神经网络训练方法示例的基于贪心策略的组合优化的方式可以明显超过现有方法:现有方法得到的二值网络的分类准确率为84.4%,利用本发明提出的基于贪心策略的组合优化方式的神经网络训练方法得到的二值网络的分类准确率为86.7%。
81.本发明提出的神经网络训练方法,通过利用组合优化代替传统优化方法,尤其是利用基于贪心搜索策略的组合优化方法,能够得到精度更高的网络模型,训练得到的模型的准确率较高。
82.事实上,在本发明的一些实施例中,本发明提出的神经网络训练方法是基于元学习(meta-learning)的方法。具体地,由于优化器本身也是一个模型,本发明提出的方法是要学习一个优化器,使得该优化器可以优化网络,使得该网络能够得到更好的效果。
83.可选地,在本发明的一些实施例中,本发明提出的优化器进行的是迭代更新的过程。
84.图7为本发明的神经网络训练系统一个实施例的示意性框图。请参阅图7,本发明示例的神经网络训练系统100主要包括优化器110。被训练的神经网络中的一个或多个参数为二值参数。优化器110用于对神经网络中的一个或多个二值参数进行优化。其中,优化器110的输出包括翻转或不翻转。前述的翻转表示改变二值参数的取值,不翻转表示不改变二值参数的取值。进一步地,优化器110利用其输出对二值参数进行调整、更新。
85.可选地,在一些示例中,优化器110的输出包括优化器110的中间输出,或者在另一些示例中,优化器110的输出包括优化器110的最终输出。
86.可选地,在一些示例中,优化器110以信号的形式来输出翻转或不翻转。
87.在本发明的一些实施例中,优化器110具体用于:对于预先设置的损失函数,选取使得损失函数最小化的二值参数。需注意,前述的最小化可以是局部最小化、也可以是全局最小化,这一般依据具体的优化目标、优化策略而确定。
88.具体地,优化器110可以采用多种方式来输出翻转或不翻转。
89.图8为本发明一个实施例提供的优化器110的示意性结构框图。请参阅图8,作为一个可选实施例,优化器110包括循环神经网络模块111。循环神经网络模块111用于:利用循环神经网络对二值参数进行优化。其中,循环神经网络的输出包括翻转或不翻转,用以利用循环神经网络的输出来更新二值参数。
90.在本发明一些可选示例中,循环神经网络模块111具体用于:对于根据二值网络的输入而得到的浮点形式的第一梯度,将第一梯度输入循环神经网络以得到第二梯度。其中,
第二梯度包括翻转或不翻转。
91.在本发明一些可选示例中,循环神经网络模块111还用于:取循环神经网络的输出的符号,然后与待优化的二值参数相乘,以得到优化后的二值参数。
92.在本发明一些可选示例中,前述循环神经网络为长短期记忆网络,循环神经网络模块111为长短期记忆网络模块。
93.图9为本发明另一个实施例提供的优化器110的示意性结构框图。请参阅图9,作为一个可选实施例,优化器110包括组合优化模块112。组合优化模块112用于:对于二值神经网络的多个二值参数,不妨假设这些参数是n个参数{θ1,θ2,

,θn},其中的n为正整数,每个参数的取值为0或1,因此n个参数总共有2n组可能的取值(或称为可行取值),每组取值是{θ1,θ2,

,θn}的一种可行取值;从这n个二值参数的全部的2n组可行取值中、或从这n个二值参数的全部2n组可行取值中的一部分取值之中,利用翻转或不翻转来选取使得损失函数最小的一组参数取值。
94.在本发明一些可选示例中,组合优化模块112具体用于:找到所有可能的翻转顺序的组合,确定每个翻转顺序对应的损失函数,再选取使得损失函数最小的翻转顺序。
95.在本发明另一些可选示例中,组合优化模块112用于通过贪心策略来搜索更优解。具体地,组合优化模块112具体用于:按照预设的顺序规则,对待优化的二值参数进行翻转检测,直到对所有的待优化的二值参数完成该翻转检测。其中,该翻转检测包括:对一个二值参数进行翻转、或者对多个二值参数中的一部分进行翻转;若在训练集上能够带来更好的效果,例如使得损失函数减小,则保留本次翻转,即保留本次翻转的结果,该二值参数采用本次翻转后的取值;否则放弃本次翻转,二值参数采用本次翻转前的取值;然后对下一个或下一些二值参数进行该翻转检测。
96.可选地,组合优化模块112具体用于:对于多层结构的神经网络,对于属于神经网络中的多层结构的多个二值参数,在对同一层的所有待优化的二值参数进行翻转检测后,再对下一层的二值参数进行翻转检测。
97.需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到本发明的神经网络训练系统100的对应功能模块的功能描述,在此不再赘述。
98.本实施例提供的神经网络训练系统100,用于执行上述神经网络训练方法,因此可以达到与上述实现方法相同的效果。
99.图10是图示根据本发明的一个实施例的设备的示意性结构框图。如图10所示,根据本发明实施例的设备200包括存储器201和处理器202。该设备200中的各组件通过总线系统和/或其它形式的连接机构(未示出)互连。
100.该存储器201用于存储非暂时性计算机可读指令。具体地,存储器201可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。
101.该处理器202可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制该设备200中的其它组件以执行期望的功能。在本发明的一个实施例中,该处理器202用于运行该存储器201中存储的该计算机可读指令,使
得该设备200执行前述的本发明各实施例的神经网络训练方法的全部或部分步骤。
102.可以理解的是,设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
103.本实施例可以根据上述方法示例对设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
104.上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
105.本发明的实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在设备上运行时,使得设备执行上述相关方法步骤实现上述实施例中的神经网络训练方法。
106.本发明的实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的神经网络训练方法。
107.另外,本发明的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的神经网络训练方法。
108.其中,本发明提供的设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
109.以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献