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

神经网络模型的重训练方法和相关产品

文献发布时间:2023-06-19 12:19:35


神经网络模型的重训练方法和相关产品

技术领域

本申请涉及神经网络技术领域,尤其涉及一种神经网络模型量化方法和相关产品。

背景技术

随着神经网络技术的发展,出现了神经网络量化技术,主要是对神经网络中每个网络层(如卷积层和全连接层)中的权重等进行压缩,降低权重的位宽等,从而实现压缩神经网络模型的数据量、降低神经网络模型在预测过程中的计算资源需求等目的。

当前,通常采用的神经网络量化方案是将神经网络训练好之后将各个网络层的权重量化,这种方式得到的网络精度较低。因此,需要研究使得量化后的神经网络的网络精度较高的量化方案。

发明内容

本申请实施例公开了一种神经网络模型的重训练方法和相关产品。

第一方面,本申请实施例提供了一种神经网络模型的重训练方法,该方法包括:基于第一神经网络模型进行第一迭代,得到第二神经网络模型,其中,在所述第一迭代中,所述第一神经网络模型中包括的至少一个第一网络层的权重被量化,所述第一神经网络模型中包括的多个第二网络层的权重为浮点数;基于所述第二神经网络模型进行第二迭代,得到第三神经网络模型,其中,在所述第二迭代中,所述至少一个第一网络层和所述多个第二网络层中与所述至少一个第一网络层相邻的至少一个第二网络层的权重被量化。

本申请实施例中,采用分层量化的方式进行迭代训练,可以保证神经网络模型的预测精度。

在一个可选的实现方式中,所述至少一个第一网络层的网络深度大于所述至少一个第二网络层的网络深度。

经验表明,大多数神经网络模型越靠近输入端对精度越敏感,因此重训练神经网络模型可采取从后向前的顺序进行分层训练。例如,神经网络模型中共50个网络层,可依据训练收敛情况分多轮进行微调(finetune)。如每轮对5~10个网络层的网络参数进行量化,其他网络层采用浮点表达,直到对神经网络模型的所有网络层均完成量化,微调流程结束。

在该实现方式中,可以提高重训练的效率。

在一个可选的实现方式中,所述基于第一神经网络模型进行第一迭代,得到第二神经网络模型包括:通过所述第一神经网络模型对第一样本进行第一预测处理,得到第一预测结果;基于所述第一预测结果,对所述至少一个第一网络层的量化权重数据和所述多个第二网络层的浮点权重数据进行更新处理,得到所述第二神经网络模型。

在该实现方式中,可以准确、快速地量化至少一个第一网络层待更新的权重。

在一个可选的实现方式中,所述第一网络层的浮点权重数据的量化包括:基于所述第一网络层的浮点权重数据,确定第一参考值;基于所述第一参考值,确定多个数值区间;所述多个数值区间中每个数值区间对应一个能够被F比特表示的数值,所述F为大于1且小于8的整数;基于所述多个数值区间,对所述浮点权重数据中的权重进行第一量化处理,得到所述第一网络层的量化权重数据。

在该实现方式中,可以准确、快速地将权重均量化为一个用F个比特表示的数值。

在一个可选的实现方式中,所述基于所述第一网络层的浮点权重数据,确定第一参考值之前,所述方法还包括:基于所述第一网络层的浮点权重数据包括的多个数值的分布离散度,确定所述第一量化处理的比特数F;所述基于所述第一参考值,确定多个数值区间包括:基于所述第一参考值和所述F,确定R个数值区间。

在该实现方式中,基于待量化的第一权重数据包括的多个数值的分布离散度,确定第一量化处理的比特数F;能够减少量化后的数据所占用的比特数,进而节省计算资源。

在一个可选的实现方式中,所述基于所述第二神经网络模型进行第二迭代,得到第三神经网络模型之后,所述方法还包括:响应于所述第二神经网络模型中包括的所有网络层的权重均已被量化,基于所述第三神经网络模型进行第三迭代,得到第四神经网络模型,其中,在所述第三迭代中,所述第三神经网络模型的至少一个第三网络层的激活数据被量化后输入至下一网络层,所述第三神经网络模型的至少一个第四网络层的激活数据未被量化。

在该实现方式中,对激活数据进行量化,并利用基于量化后的激活数据得到的第二预测结果来更新权重数据,以便于在利用得到的第三神经网络模型进行预测处理且对激活数据进行量化时可以得到准确的预测结果。

在一个可选的实现方式中,在所述得到第四神经网络模型之后,所述方法还包括:

基于所述第四神经网络模型进行第四迭代,得到目标神经网络模型;其中,在所述第四迭代中,所述至少一个第三网络层的激活数据和所述至少一个第四网络层的激活数据均被量化后输入到下一网络层。

在该实现方式中,采用分层量化激活数据的方式,能够快速地优化权重数据。

在一个可选的实现方式中,所述基于所述第三神经网络模型进行第三迭代,得到第四神经网络模型,包括:获得第一运算处理所需的第一运算参数,所述第一运算处理为通过合并所述第一神经网络模型中的至少一个第三网络层执行的网络模型处理和用于对所述至少一个第三网络层的激活数据进行量化的第二量化处理得到的运算处理,所述第一运算参数包括所述第二量化处理对应的量化参数;对所述第一运算参数中的浮点数进行定点化处理,得到第二运算参数;基于所述第二运算参数,执行所述第一运算处理,得到所述至少一个第三网络层的处理结果;基于所述至少一个第三网络层的处理结果,得到所述第四神经网络模型。

在该实现方式中,整个流程采用定点数实现,能够减少计算资源的开销。

在一个可选的实现方式中,所述对所述第一运算参数中的浮点数进行定点化处理,得到第二运算参数包括:将所述第一运算参数中包括的每个浮点数扩大K倍,得到扩大数值,所述K为大于1的整数;将所述扩大数值转换为定点数,得到所述第二运算参数。

在该实现方式中,先将第一运算参数中的浮点数扩大K倍,再将扩大K倍后的浮点数转换为定点数,可以保证第一运算处理的精度。

在一个可选的实现方式中,所述第二量化处理对应的量化参数为基于量化最大值和量化最小值得到的,所述量化最大值和所述量化最小值为基于对样本图像得到的激活数据包括的多个数值进行聚类得到的。

在一个可选的实现方式中,在所述第一迭代中,所述第一神经网络模型中包括的至少一个第四网络层的激活数据被量化,所述第一神经网络模型中包括的多个第五网络层的激活数据为浮点数;

在所述第二迭代中,所述至少一个第四网络层和所述多个第五网络层中与所述至少一个第四网络层相邻的至少一个第五网络层的激活数据被量化。

在一个可选的实现方式中,在所述第一预测处理中,所述第一神经网络模型包括的至少一个第六网络层的激活数据被量化。

在该实现方式中,在第一预测处理中对至少一个第六网络层的激活数据进行量化,在利用得到的目标神经网络模型进行预测处理且对激活数据进行量化时可以得到准确的预测结果。

第二方面,本申请实施例提供了一种数据处理装置,包括:第一迭代单元,用于基于第一神经网络模型进行第一迭代,得到第二神经网络模型,其中,在所述第一迭代中,所述第一神经网络模型中包括的至少一个第一网络层的权重被量化,所述第一神经网络模型中包括的多个第二网络层的权重为浮点数;第二迭代单元,用于基于所述第二神经网络模型进行第二迭代,得到第三神经网络模型,其中,在所述第二迭代中,所述至少一个第一网络层和所述多个第二网络层中与所述至少一个第一网络层相邻的至少一个第二网络层的权重被量化。

在一个可选的实现方式中,所述至少一个第一网络层的网络深度大于所述至少一个第二网络层的网络深度。

在一个可选的实现方式中,所述第一迭代单元,具体用于通过所述第一神经网络模型对第一样本进行第一预测处理,得到第一预测结果;基于所述第一预测结果,对所述至少一个第一网络层的量化权重数据和所述多个第二网络层的浮点权重数据进行更新处理,得到所述第二神经网络模型。

在一个可选的实现方式中,所述装置还包括:量化单元,用于基于所述第一网络层的浮点权重数据,确定第一参考值;基于所述第一参考值,确定多个数值区间;所述多个数值区间中每个数值区间对应一个能够被F比特表示的数值,所述F为大于1且小于8的整数;基于所述多个数值区间,对所述浮点权重数据中的权重进行第一量化处理,得到所述第一网络层的量化权重数据。

在一个可选的实现方式中,所述量化单元,还用于基于所述第一网络层的浮点包括的多个数值的分布离散度,确定所述第一量化处理的比特数F;所述量化单元,具体用于基于所述第一参考值和所述F,确定R个数值区间。

在一个可选的实现方式中,所述装置还包括:第三迭代单元,用于响应于所述第二神经网络模型中包括的所有网络层的权重均已被量化,基于所述第三神经网络模型进行第三迭代,得到第四神经网络模型,其中,在所述第三迭代中,所述第三神经网络模型的至少一个第三网络层的激活数据被量化后输入至下一网络层,所述第三神经网络模型的至少一个第四网络层的激活数据未被量化。

在一个可选的实现方式中,所述装置还包括:第四迭代单元,用于基于所述第四神经网络模型进行第四迭代,得到目标神经网络模型;其中,在所述第四迭代中,所述至少一个第三网络层的激活数据和所述至少一个第四网络层的激活数据均被量化后输入到下一网络层。

在一个可选的实现方式中,所述第一迭代单元,具体用于获得第一运算处理所需的第一运算参数,所述第一运算处理为通过合并所述第一神经网络模型中的至少一个第三网络层执行的网络模型处理和用于对所述至少一个第三网络层的激活数据进行量化的第二量化处理得到的运算处理,所述第一运算参数包括所述第二量化处理对应的量化参数;对所述第一运算参数中的浮点数进行定点化处理,得到第二运算参数;基于所述第二运算参数,执行所述第一运算处理,得到所述至少一个第三网络层的处理结果;基于所述至少一个第三网络层的处理结果,得到所述第四神经网络模型。

在一个可选的实现方式中,所述第一迭代单元,具体用于将所述第一运算参数中包括的每个浮点数扩大K倍,得到扩大数值,所述K为大于1的整数;将所述扩大数值转换为定点数,得到所述第二运算参数。

在一个可选的实现方式中,所述第二量化处理对应的量化参数为基于量化最大值和量化最小值得到的,所述量化最大值和所述量化最小值为基于对样本图像得到的激活数据包括的多个数值进行聚类得到的。

在一个可选的实现方式中,在所述第一迭代中,所述第一神经网络模型中包括的至少一个第四网络层的激活数据被量化,所述第一神经网络模型中包括的多个第五网络层的激活数据为浮点数;在所述第二迭代中,所述至少一个第四网络层和所述多个第五网络层中与所述至少一个第四网络层相邻的至少一个第五网络层的激活数据被量化。

在一个可选的实现方式中,在所述第一预测处理中,所述第一神经网络模型包括的至少一个第五网络层的激活数据被量化。

第三方面,本申请实施例提供了一种电子设备,该电子设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如上述第一方面以及任一种可选的实现方式的方法。

第四方面,本申请实施例提供了一种芯片,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行如上述第一方面以及任一种可选的实现方式的方法。

第五方面,本申请实施例提供了一种计算机可读存储介质,该计算机存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面及任一种可选的实现方式的方法。

第六方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面以及任一种可选的实现方式的方法。

附图说明

为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1为本申请实施例提供的一种神经网络模型的重训练方法流程图;

图2为本申请实施例提供的一种神经网络模型量化方法流程图;

图3为本申请实施例提供的另一种神经网络模型的重训练方法流程图;

图4为本申请实施例提供的一种数据处理方法流程图;

图5为本申请实施例提供的另一种数据处理方法流程图;

图6为本申请实施例提供的又一种神经网络模型的重训练方法流程图;

图7为本申请实施例提供的一种数据处理装置的结构示意图;

图8为本申请实施例提供的一种电子设备的结构示意图;

图9为本申请实施例提供的一种服务器的结构示意图。

具体实施方式

本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。“和/或”用于表示在其所连接的两个对象之间选择一个或全部。例如“A和/或B”表示A、B或A+B。

图1为本申请实施例提供的一种神经网络模型的重训练方法流程图。如图1所示,该方法可包括:

101、数据处理装置基于第一神经网络模型进行第一迭代,得到第二神经网络模型。

其中,在上述第一迭代中,上述第一神经网络模型中包括的至少一个第一网络层的权重被量化,上述第一神经网络模型中包括的多个第二网络层的权重为浮点数。上述数据处理装置可以是手机、平板电脑、可穿戴设备、笔记本电脑、台式电脑等终端设备,也可以是服务器。该第一神经网络模型可以是深度神经网络模型、门控循环单元(gatedrecurrentunit,GRU)、长短期记忆网络(Long Short-Term Memory,LSTM)等任一种,本申请不作限定。上述至少一个第一网络层可以上述第一神经网络模型中的任一网络层;也可以是第一神经网络模型中的多个相邻的网络层;还可以包括第一神经网络模型中的任一网络层;本申请不作限定。

可选的,数据处理装置基于第一神经网络模型进行第一迭代,得到第二神经网络模型可以是:通过上述第一神经网络模型对第一样本进行第一预测处理,得到第一预测结果;基于上述第一预测结果,得到第一权重数据;上述第一权重数据包括上述至少一个第一网络层待更新的权重;对上述第一权重数据进行第一量化处理,得到第二权重数据;上述第二权重数据包括上述至少一个第一网络层被量化的权重。应理解,数据处理装置可以在对第一神经网络模型进行第一迭代的过程中,对一部分网络层更新后的权重数据进行量化,而不对另一部分网络层更新后的权重数据进行量化。举例来说,神经网络模型包括50个网络层,其中,数据处理装置在对第一神经网络模型第一迭代时,对该第一神经网络模型的第41网络层至第50网络层的权重数据进行量化,而不对第1网络层至第40网络层的权重数据进行量化,即保持为浮点数,采用包括第1至40层的浮点权重数据和第41至第50层的量化权重数据依次对输入样本数据进行处理,得到处理结果,然后,基于处理结果更新第1至40层的浮点权重数据和第41至第50层的量化权重数据,得到第二神经网络模型。在一些实施例中,数据处理装置基于第一神经网络模型进行第一迭代可以是数据处理装置利用一个或多个样本图像对第一神经网络模型进行一次或者多次迭代更新,而不应仅理解为利用第一预测结果来更新该第一神经网络模型。举例来说,数据处理装置基于第一神经网络模型进行第一迭代,得到第二神经网络模型可以是:数据处理装置对第一神经网络模型进行一次迭代更新或依次进行多次迭代更新,得到第二神经网络模型。

102、基于上述第二神经网络模型进行第二迭代,得到第三神经网络模型。

其中,在上述第二迭代中,上述至少一个第一网络层和上述多个第二网络层中与上述至少一个第一网络层相邻的至少一个第二网络层的权重被量化,其中,至少一个第二网络层的数量和至少一个第一网络层的数量可以相同或不同。继续上一个举例,数据处理装置完成第一迭代得到第二神经网络模型之后,进一步对该第二神经网络模型的第31网络层至第40网络层的权重数据进行量化,此时,第二神经网络模型的第31层第50层的权重被量化,即为量化权重,而第1网络层至第30网络层的权重保持为浮点数。在第二神经网络模型对输入的样本数据的处理可以依次包括基于第1至第30层的浮点权重数据和第31至第50层的量化权重数据的处理,相应地,对第二神经网络模型的参数更新可以包括第1至第30层的浮点权重数据的更新处理和第31至第50层的量化权重数据的更新处理。在一些实施例中,数据处理装置基于上述第二神经网络模型进行第二迭代的次数可以为一次或多次,例如,可以与进行第一迭代的次数相同或者不同,本公开实施例对此不做限定。

可选的,上述至少一个第一网络层的网络深度大于上述至少一个第二网络层的网络深度。经验表明,大多数神经网络模型越靠近输入端对精度越敏感,因此重训练神经网络模型可采取从后向前的顺序进行分层训练,能够提高训练效率。

可选地,如果得到的第三神经网络模型中的所有权重均被量化,则可以基于模型训练截止条件确定是否停止进行迭代更新,该截止条件例如可以包括但不限于重训练得到的模型精度与原始神经网络模型的精度相近。可选地,如果得到的第三神经网络模型中还包括一个或多个权重未被量化的网络层,则可以继续对第三神经网络模型中与至少一个第二网络层相邻的一个或多个网络层的权重进行量化,并进行一次或多次迭代,直到神经网络模型的所有网络层的权重被量化。

可选的,上述第一迭代和/或第二迭代所包括的迭代更新的次数也可以基于模型精度来确定,例如,上述第二神经网络模型的预测精度与上述第一神经网络模型的原始预测精度或原始神经网络模型的预测精度之差小于第一阈值;上述第三神经网络模型的预测精度与上述第一神经网络模型的原始预测精度之差小于上述第一阈值。上述原始预测精度为上述第一神经网络模型的预测精度,例如85%、90%、95%等。上述第一阈值可以是10%、8%、5%、3%、1%等。上述基于上述第二神经网络模型进行第二迭代,得到第三神经网络模型可以是:数据处理装置通过第二神经网络模型对一个或多个样本图像进行预测处理得到一个或多个预测结果;基于该一个或多个预测结果,更新该第二神经网络模型;直至上述第二神经网络模型的预测精度与原始预测精度之差小于第一阈值,得到上述第三神经网络模型。

由于量化后的神经网络模型中的网络参数占用的比特位减少,利用量化后的神经网络模型执行预测处理任务消耗的计算资源和存储资源会减少。可以理解,采用图1中的神经网络模型量化方案压缩神经网络模型,能够保持神经网络模型的预测精度,并减少资源消耗。

本申请实施例中,采用分层量化的方式进行迭代训练,可以保证神经网络模型的预测精度。

前述实施例未详述对神经网络模型中的权重进行量化处理的方式。下面以对第一神经网络模型中的至少一个第一网络层的权重进行量化处理为例,介绍对神经网络模型中的权重进行量化的实现方式。

图2为本申请实施例提供的一种神经网络模型量化方法流程图。如图2所示,该方法可包括:

201、数据处理装置基于第一神经网络模型中的第一权重数据,确定第一参考值。

可选的,上述第一权重数据包括上述第一神经网络模型的至少一个第一网络层待更新的权重。可选的,数据处理装置将上述第一权重数据中的各数值的平均值作为上述第一参考值。可选的,数据处理装置将上述第一权重数据中的各数值的中位数作为上述第一参考值。数据处理装置还可以采用其他方式确定上述第一参考值,本申请实施例不作限定。

202、基于上述第一参考值和第一量化处理的比特数F,确定R个数值区间。

可选的,上述R为2的F次方。在一些实施例中,数据处理装置可预先存储有第一量化处理的比特数F。相应地,数据处理装置在需要确定量化参数时,从存储器中获取存储的第一量化处理对应的比特数F。在一些实施例中,数据处理装置在执行步骤202之前,可执行如下操作:基于上述第一权重数据包括的多个数值的分布离散度,确定第一量化处理的比特数F。可选的,上述比特数F与上述第一权重数据包括的多个数值的分布离散度正相关。也就是说,上述第一权重数据包括的数值越分散,上述第一量化处理的比特数F越大。上述F为大于0的整数,例如1、2、3、4、6等。示例性的,上述第一权重数据包括的多个数值的分布离散度为上述多个数值的方差、标准差或者极差中的任一个。举例来说,若上述第一权重数据包括的多个数值的分布离散度不大于离散阈值,则确定第一量化处理的比特数F为2;否则,确定第一量化处理的比特数F为4。后面会进一步描述步骤202的实现方式,这里先不展开。该离散阈值可以是10、20等,本申请实施例不作限定。

203、基于上述R个数值区间,对上述第一权重数据中的数值进行量化。

示例性的,将上述第一权重数据中的数值量化为F个比特的数值。举例来说,alpha1为第一参考值,W为网络参数中的任一权重,基于该第一参考值,确定的4个数值区间如下:

当W>=alpha1,W≈alpha1*3/2;

当0

当W<=-alpha1,W≈alpha1*(-3)/2;

当-alpha1

由于alpha1为公共因子,提取alpha1/2后量化后的值为3,1,-1,-3,因此可以采用2bit进行表达,硬件存储时可通过映射关系将-3,-1,1,3映射为0,1,2,3。也就是说,第一权重数据中大于alpha1的权重均量化为alpha1/2和3的乘积;该第一权重数据中大于0且小于alpha1的权重均量化为alpha1/2和1的乘积;该第一权重数据中小于或等于-alpha1的权重均量化为alpha1/2和-3的乘积;该第一权重数据中大于-alpha1且小于0的权重均量化为alpha1/2和-1的乘积。上述举例为2bit量化方法,本申请实施例还推导出了3bit、4bit、5bit等量化方法。主要思路是采用二分法对量化阶进行划分。对于3bit量化,相比2bit对量化阶再进行扩展,当weight大于0将alpha1/2及alpha1*3/2替换为alpha1/4,alpha1*3/4,alpha1*5/4及alpha1*7/4,当weight小于0将-alpha1/2及-alpha1*3/2替换为-alpha1/4,-alpha1*3/4,-alpha1*5/4及-alpha1*7/4。同理,4bit量化及更高bit量化也是采用二分法对量化阶进行更精细的拆分。也就是说,数据处理装置可根据神经网络模型的特征采用不同的比特位来量化权重。另外,神经网络模型中的不同层的权重可采用不同的比特位来量化。例如,数据处理装置采用2比特量化第一神经网络模型中的至少一个第一网络层的权重,采用4比特量化该第一神经网络模型中的至少一个第二网络层的权重。

本申请实施例提出的神经网络模型量化方法可根据神经网络模型的特点调整权重的位宽(即量化后的权重的比特位),减少量化引起的网络性能损失。

下面来介绍基于上述第一权重数据包括的多个数值的分布离散度,确定第一量化处理的比特数F的实现方式。

示例性的,数据处理装置基于上述第一权重数据包括的多个数值的方差(对应于分布离散度),确定上述第一量化处理的比特数F;上述比特数F与上述第一权重数据包括的多个数值的方差正相关。举例来说,可以将方差与一个或多个阈值进行比较来确定比特数F,数据处理装置在上述第一权重数据包括的多个数值的方差小于第一阈值时,确定第一量化处理的比特数F为2;在上述第一权重数据包括的多个数值的方差不小于该第一阈值时,确定该第一量化处理的比特数F为4。该第一阈值可以是0.016、0.2、1.2、10、100等,本申请不作限定。又举例来说,也可以设置多个分段区间,数据处理装置在上述第一权重数据包括的多个数值的方差小于第二阈值且大于第三阈值时,确定第一量化处理的比特数F为4;在上述第一权重数据包括的多个数值的方差不小于该第二阈值时,确定该第一量化处理的比特数F为6;在上述第一权重数据包括的多个数值的方差不大于该第三阈值时,确定该第一量化处理的比特数F为2。该第三阈值可以是0.016、0.2、1.2等,该第二阈值可以是10、25等,本申请不作限定。

示例性的,数据处理装置基于上述第一权重数据包括的多个数值的极差,确定第一量化处理的比特数F;上述比特数F与上述第一权重数据包括的多个数值的极差正相关。上述第一权重数据包括的多个数值的极差是该多个数值包括的最大值与最小值的差值。举例来说,数据处理装置在上述第一权重数据包括的多个数值的极差小于第四阈值时,确定第一量化处理的比特数F为3;在上述第一权重数据包括的多个数值的极差不小于该第四阈值时,确定该第一量化处理的比特数M为4。该第四阈值可以是1.2、10、100等,本申请不作限定。又举例来说,数据处理装置在上述第一权重数据包括的多个数值的极差小于第五阈值且大于第六阈值时,确定第一量化处理的比特数F为4;在上述第一权重数据包括的多个数值的极差不小于该第五阈值时,确定该第一量化处理的比特数F为6;在上述第一权重数据包括的多个数值的极差不大于该第六阈值时,确定该第一量化处理的比特数M为2。该第六阈值可以是0.016、0.2、1.2等,该第五阈值可以是10、25等,本申请实施例不作限定。

示例性的,数据处理装置基于上述第一权重数据包括的多个数值的标准差,确定上述第一量化处理的比特数F;上述比特数F与上述第一权重数据包括的多个数值的标准差正相关。举例来说,数据处理装置在上述第一权重数据包括的多个数值的标准差小于第七阈值时,确定第一量化处理的比特数F为3;在上述第一权重数据包括的多个数值的标准差不小于该第七阈值时,确定第一量化处理的比特数F为4。该第七阈值可以是0.04、0.2、1.2、10等,本申请实施例不作限定。

可以理解,图2是一个量化第一神经网络模型中的部分网络参数的示例,数据处理装置可采用类似的方式对该第一神经网络模型中的各网络层的网络参数进行量化。

在该实现方式中,数据处理装置根据第一权重数据包括的多个数值的分布情况,确定第一量化处理的比特数F;能够减少量化所使用的比特位,从而减少利用第一神经网络模型进行预测处理所需消耗的计算资源。

前面未详述图1中的步骤101和步骤102的实现方式。下面以基于第一神经网络模型进行第一迭代,得到第二神经网络模型为例,来描述如何对神经网络模型进行重训练。

图3为本申请实施例提供的另一种神经网络模型的重训练方法流程图。如图3所示,该方法可包括:

301、数据处理装置通过第一神经网络模型对第一样本进行第一预测处理,得到第一预测结果。

上述第一样本可以图像数据、语音数据或者对图像数据进行预处理得到的数据等。上述第一预测处理可以是图像分类、图像文本识别、语音识别等处理。

302、基于上述第一预测结果,得到第一权重数据。

上述第一权重数据包括上述第一神经网络模型的至少一个第一网络层待更新的权重。在一些实施例中,第一权重数据为上述第一神经网络模型的至少一个第一网络层待更新的浮点型的权重,即待将至少一个第一网络层的权重数据更新为浮点型的第一权重数据。

303、对上述第一权重数据进行第一量化处理,得到第二权重数据。

上述第二权重数据包括上述至少一个第一网络层被量化的权重。步骤303的实现方式可参阅图2的方法流程,这里不再详述。应理解,图3提供了利用第一样本训练第一神经网络模型的示例。在实际应用中,数据处理装置可利用多个样本采用类似图3中的方法流程来训练第一神经网络模型,直到训练第一神经网络模型得到的第二神经网络模型的预测精度与上述原始预测精度之差小于上述第一阈值。图3中的方法流程仅为对第一神经网络模型进行训练的示例。应理解,数据处理装置可采用类似的方式对神经网络模型进行训练。

本申请实施例中,可以准确、快速地量化至少一个第一网络层待更新的权重。

在一些实施例中,数据处理装置在训练过程中可将神经网络模型执行的运算处理转换为定点数运算,从而减少计算资源和存储资源的消耗。下面介绍步骤301的一种可选的实现方式,在该实现方式中数据处理装置可将至少部分浮点数运算转换为定点数运算。

图4为本申请实施例提供的一种数据处理方法流程图。如图4所示,该方法可包括:

401、数据处理装置获得第一运算处理所需的第一运算参数。

上述第一运算处理为通过合并至少一个第三网络层执行的网络模型处理和用于对激活数据进行量化的第二量化处理得到的运算处理,上述第一运算参数包括上述第二量化处理对应的量化参数。神经网络模型中的一个网络层的激活数据可以指该网络层的输出数据(即输出特征图)。上述至少一个第三网络层可以是第一神经网络模型中的网络层。上述网络模型处理可以包括卷积处理、池化处理、批归一化处理等中的至少一项,本申请不作限定。

可选的,上述第二量化处理对应的量化参数为基于量化最大值和量化最小值确定的;上述量化最大值和上述量化最小值为对参考数据包括的多个数值进行聚类得到的,上述参考数据为上述第三网络层基于训练图像或测试图像得到的激活数据。上述第三网络层可以是上述第一神经网络模型中除最后一层之外的任一网络层。上述第二量化处理可以是对上述至少一个第三网络层的激活数据进行的量化处理。举例来说,至少一个第三网络层执行的运算处理为:Qout1=x*A+y*B;其中,A和B为尺寸相同的矩阵,x、y为浮点数;该至少一个第三网络层对应的第二量化处理为:Qout2=ceil[(Qout1-Q/2)/Q],其中,Qout1表示该至少一个第三网络层输出的激活数据,Qout2表示量化后的激活数据;该至少一个第三网络层执行的第一运算处理为:Qout=ceil[(x*A+y*B-Q/2)/Q]。ceil是函数名,用于返回大于或者等于指定表达式的最小整数。ceil(x)为大于或者等于x的最小整数。

402、对上述第一运算参数中的浮点数进行定点化处理,得到第二运算参数。

可选的,对上述第一运算参数中的浮点数进行定点化处理,得到第二运算参数的一种实现方式如下:将上述第一运算参数中包括的每个浮点数扩大K倍,得到扩大数值,上述K为大于1的整数;将上述扩大数值转换为定点数,得到上述第二运算参数。举例来说,x为第一运算参数中的一个浮点数,将x扩大K倍得到x*K;将x*K转换为定点数得到round(x*K)。round函数是将某个数字四舍五入到指定的位数,其函数公式为:round(要四舍五入的数字,保留的位数)。例如,round(3.1415926,2)=3.14,round(3.1415926,3)=3.142。在一些实施例中,round函数可以是将浮点数四舍五入转成整数。例如,round(3.1415926,0)=3,round(7.76)=8。应理解,数据处理装置可以采用类似的方式将第一运算参数中包括的各浮点数转换为定点数。

403、基于上述第二运算参数,执行上述第一运算处理,得到上述至少一个第三网络层的处理结果。

举例来说,第一运算处理为:Qout=ceil[(x*A+y*B-Q/2)/Q];第一运算参数包括x、y、Q、A以及B,其中,x、y以及Q均为浮点数;第二运算参数包括round(x*K)、round(y*K)round(Q/2*K)、round(Q*K)、A以及B;基于上述第二运算参数,执行上述第一运算处理为:Out=ceil[(round(x*K)*A+round(y*K)-round(Q/2*K))/round(Q*K)]。应理解,图4仅为数据处理装置在训练第一神经网络模型的过程中,实现第一运算处理的示例。在一些实施例中,数据处理装置在训练第二神经网络模型的过程中,可采用类似的方式实现各网络层的运算处理以及量化处理。

404、基于上述至少一个第三网络层的处理结果,得到第一预测结果。

应理解,数据处理装置可采用类似的方式得到第二神经网络模型中各层的处理结果。可选的,数据处理装置基于第二神经网络模型中各层的处理结果,得到最后的预测结果。

本申请实施例中,数据处理装置在利用第一神经网络模型执行预测处理任务的整个流程采用定点数实现,能够减少计算资源的开销。

前述实施例未详述步骤402和步骤403的实现方式,下面介绍步骤402和步骤403在一些实施例中的应用。

实施例一

第一神经网络模型中的第L层(Eltwise层)执行的网络模型处理为:Out=x*A+y*B,其中,x和y均为浮点数,A和B为该Eltwise层的两个输入特征图;该第L层执行的量化处理如下:Qout=ceil[(Qin-Q/2)/Q],其中,Qin表示该第L层输出的激活数据,即量化输入;Qout表示量化后的激活数据,即量化输出,Q表示量化参数;该第L层执行的第一运算处理为:Qout=ceil[(x*A+y*B-Q/2)/Q]。示例性的,数据处理装置将该第L层执行第一运算处理所需的第一运算参数转换为定点数得到第二运算参数,以及基于上述第二运算参数执行上述第一运算处理对应的计算公式如下:Out=ceil[(round(x*K)*A+round(y*K)-round(Q/2*K))/round(Q*K)]。

实施例二

第一神经网络模型中的第L层(卷积层)执行的网络模型处理(卷积运算)为:Conv_out=W×A,其中,W为第L层的权重矩阵(weight),A为该第L层的输入特征图(即activation)。假设当前量化采用2W4A,即权重矩阵W中的每个元素量化后的位宽为2bit,输入特征图A中的每个元素量化后的位宽为4bit。W=alpha*B,A=Qparam*M,其中,B={-3,-1,1,3},M={0-shift,1-shift,…,15-shift},alpha(浮点数)表示该权重矩阵对应的公共因子,B表示量化后的权重矩阵,Qparam(浮点数)表示输入特征图对应的公共因子,M表示量化后的输入特征图。Conv_out=W×A=alpha*Qparam*(B×M)=scale*(B*M),因此卷积运算可以提取公共因子scale(即alpha*Qparam),硬件运算时由B与M进行定点卷积运算。数据处理装置对该第L层输出的激活数据进行量化处理的计算公式如下:Qout=ceil[(Qin-Q/2)/Q],Q表示该第L层的量化参数。应理解,该第L层执行的第一运算处理的计算公式表示如下:Qout=ceil[(scale*(B*M)-Q/2)/Q]。示例性的,数据处理装置将该第L层执行第一运算处理所需的第一运算参数中的浮点数均转换为定点数得到第二运算参数,以及基于上述第二运算参数执行上述第一运算处理对应的计算公式如下:Qout=ceil[(round(scale*K)*(B*M)-round(Q/2*K))/round(Q/2*K)]。

实施例三

第一神经网络模型中的第L层(卷积层)执行的网络模型处理为:Conv_out=W×A,其中,W为第L层的权重矩阵(weight),A表示该第L层的输入特征图,W=alpha*B,A=Qparam*M,alpha(浮点数)表示该权重矩阵对应的公共因子,B表示量化后的权重矩阵,Qparam(浮点数)表示输入特征图对应的公共因子,M表示量化后的输入特征图。Conv_out=W×A=alpha*Qparam*(B×M)=scale*(B*M)。假定神经网络模型中的部分网络结构是卷积层(即第L层)->批归一化层(即BN层)->激活层(即relu层),该卷积层执行的运算处理、该批归一化层执行的运算(线性运算)处理以及激活层执行的运算(线性运算)处理合并得到的运算处理为:BNout=scale1*A+bias,scale1为合并后(包含alpha,Qparam等)的浮点数,A为卷积层的输出结果。接下来对BNout进行量化处理。量化函数可以为:Qout=ceil[(Qin-Q/2)/Q],Qin为BNout,可将Q/2合并到bias,最终conv->BN->relu执行的第一运算处理可简化为:Qout=ceil[(scale1*A+bias)/Q],其中scale1,bias及Q均为浮点数。接下来要进行浮点数的消除。示例性的,数据处理装置将该第L层执行第一运算处理所需的第一运算参数中的浮点数均转换为定点数得到第二运算参数,以及基于上述第二运算参数执行上述第一运算处理对应的计算公式如下:Qout=ceil[(round(N*scale)*A+round(N*bias))/round(N*Q)]=ceil[(scale_new*A+bias_new)/Q_new],scale_new,bias_new及Q_new均为定点数。

数据处理装置利用神经网络模型执行预测处理任务时执行的计算会存在浮点数,例如批归一化、缩放操作等。除此外,量化过程也会引入浮点数,例如量化参数Q等。考虑到神经网络加速器硬件实现的复杂度,面积,计算资源等因素,本申请实施例提供的方法可消除神经网络模型中的所有浮点参数及浮点运算,全流程采用定点运算,可以提高计算效率。

在一些实施例中,数据处理装置在量化训练得到的第一神经网络模型之前,可先确定第一神经网络模型中各网络层对应的量化处理的量化参数。下面介绍一个先确定神经网络模型中各网络层的量化参数,再量化该神经网络模型中的权重的举例。

应理解,在数据处理装置在执行图4中的方法流程之前,需要获得量化激活数据所采用的量化参数。下面介绍确定量化激活数据所采用的量化参数的方式。

图5为本申请实施例提供的另一种数据处理方法流程图,即确定第一神经网络模型得到的激活数据的量化参数的方法流程图。如图5所示,该方法可包括:

501、数据处理装置获取第一神经网络模型的第L层输出的待量化数据。

上述待量化数据(即激活数据)包括至少一个用M个以上比特表示的数值,上述L为大于0的整数,上述M为大于1的整数。上述M可以是6、8、12、16等。可选的,上述待量化数据为数据处理装置将某个训练样本输入至上述神经网络模型进行预测处理时,上述神经网络模型的第L层输出的激活数据。

502、对上述待量化数据包括的多个数值进行聚类,得到聚类结果。

503、将上述聚类结果中包括的至少两个聚类中心中的最大值作为量化最大值,并将上述至少两个聚类中心中的最小值作为量化最小值。

504、确定以上述量化最小值为第一项,以上述量化最大值为最后一项,且包括N个数值的第一等差数列。

在一些实施例中,数据处理装置在执行步骤504之前,可执行如下操作:获取量化上述待量化数据包括的数值待采用的比特位的个数M。其中,比特数M可以是预先设置的,例如,数据处理装置或者其他装置可预先存储有量化上述待量化数据包括的数值待采用的比特位的个数。相应地,在需要进行量化参数的确定时,从存储器中获取存储的。在另一些实施例中,比特数M也可以是基于待量化数据确定的,例如,基于上述待量化数据包括的多个数值的分布离散度,确定量化上述待量化数据包括的数值待采用的比特位的个数M。或者,也可以基于需要量化的数据的其他分布特性或参数,来确定比特数M。可选的,上述N为2的M次方。

505、将上述第一等差数列中各项的公共因子作为上述神经网络模型的第L层的量化参数,并存储上述量化参数。

举例来说,量化最大值(即max)为1.3、量化最小值(min)为-0.2、M为4;确定以-0.2为第一项,以1.3为最后一项,且包括16个数值的第一等差数列{-0.2,-0.1,0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8.0.9,1.0,1.1,1.2,1.3};提取该第一等差数列中各项的公共因子0.1作为量化参数。

可以理解,步骤501至步骤506为数据处理装置确定神经网络模型中的第L层的量化参数的方法流程。在实际应用中,数据处理装置可采用类似的方法流程来确定神经网络模型中各层的量化参数,并存储各层的量化参数,以便于在利用该神经网络模型执行预测处理任务时,利用各层的量化参数对各层输出的特征图(即激活数据)进行量化。

在一些实施例中,数据处理装置采用图1中的方法流程量化神经网络模型中的权重之后,还可以采用分层量化激活数据的方式进一步优化神经网络模型中的权重。下面介绍如何采用分层量化激活数据的方式进一步优化神经网络模型中的权重。

图6为本申请实施例提供的又一种神经网络模型的重训练方法流程图。如图6所示,该方法可包括:

601、数据处理装置通过第三神经网络模型对第二样本进行第二预测处理,得到第二预测结果。

其中,在第二预测处理中,上述第三神经网络模型的至少一个第四网络层的激活数据被量化,上述第三神经网络模型的至少一个第五网络层的激活数据未被量化。上述第三神经网络模型可以是数据处理装置执行图1中的方法流程得到的。也就是说,数据处理装置在执行图6中的方法流程之前,可执行图1中的方法流程以得到第三神经网络模型。举例来说,数据处理装置在通过第三神经网络模型对第二样本进行第二预测处理时,对该第三神经网络模型的第41网络层至第50网络层的激活数据进行量化,而不对第1网络层至第40网络层的激活数据进行量化,得到第二预测结果;其中,第三神经网络模型包括50个网络层。

602、基于上述第二预测结果,更新上述第三神经网络模型中的权重数据,得到第四神经网络模型。

603、通过上述第四神经网络模型对第三样本进行第三预测处理,得到第三预测结果。

其中,上述至少一个第四网络层的激活数据被量化,上述至少一个第五网络层的激活数据被量化,上述第四神经网络模型的至少一个第六网络层的激活数据未被量化。步骤603的实现方式可以与步骤601的实现方式相类。继续上一个举例,数据处理装置在通过第四神经网络模型对第三样本进行第三预测处理时,对该第四神经网络模型的第31网络层至第50网络层的激活数据进行量化,而不对第1网络层至第30网络层的激活数据进行量化,得到第三预测结果;其中,第四神经网络模型包括50个网络层。

604、基于上述第三预测结果,更新上述第四神经网络模型中的权重数据,得到目标神经网络模型。

本申请实施例中,采用分层量化激活数据的方式,能够快速地优化权重数据。

在一些实施例中,数据处理装置采用图1中的方法流程量化神经网络模型中的权重的过程中,可对神经网络模型中的至少部分网络层输出的激活数据进行量化。示例性的,在上述第一预测处理中,上述第一神经网络模型包括的至少一个第七网络层的激活数据被量化。

图7为本申请实施例提供的一种数据处理装置的结构示意图。如图7所示,该数据处理装置包括:

第一迭代单元701,用于基于第一神经网络模型进行第一迭代,得到第二神经网络模型,其中,在上述第一迭代中,上述第一神经网络模型中包括的至少一个第一网络层的权重被量化,上述第一神经网络模型中包括的多个第二网络层的权重为浮点数;

第二迭代单元702,用于在基于上述第二神经网络模型进行第二迭代,得到第三神经网络模型,其中,在上述第二迭代中,上述至少一个第一网络层和上述多个第二网络层中与上述至少一个第一网络层相邻的至少一个第二网络层的权重被量化。

在一个可选的实现方式中,上述至少一个第一网络层的网络深度大于上述至少一个第二网络层的网络深度。

在一个可选的实现方式中,第一迭代单元701,具体用于通过所述第一神经网络模型对第一样本进行第一预测处理,得到第一预测结果;基于所述第一预测结果,对所述至少一个第一网络层的量化权重数据和所述多个第二网络层的浮点权重数据进行更新处理,得到所述第二神经网络模型。

在一个可选的实现方式中,所述装置还包括:

量化单元703,用于基于所述第一网络层的浮点权重数据,确定第一参考值;基于所述第一参考值,确定多个数值区间;所述多个数值区间中每个数值区间对应一个能够被F比特表示的数值,所述F为大于1且小于8的整数;基于所述多个数值区间,对所述浮点权重数据中的权重进行第一量化处理,得到所述第一网络层的量化权重数据。

在一个可选的实现方式中,量化单元703,还用于基于上述网络层的浮点权重数据包括的多个数值的分布离散度,确定上述第一量化处理的比特数F;

量化单元703,具体用于基于上述第一参考值和上述F,确定R个数值区间。

在一个可选的实现方式中,上述装置还包括:

第三迭代单元704,用于响应于所述第二神经网络模型中包括的所有网络层的权重均已被量化,基于所述第三神经网络模型进行第三迭代,得到第四神经网络模型,其中,在所述第三迭代中,所述第三神经网络模型的至少一个第三网络层的激活数据被量化后输入至下一网络层,所述第三神经网络模型的至少一个第四网络层的激活数据未被量化。

可选的,第一迭代单元701、第二迭代单元702以及第三迭代单元703为同一个单元或者不同的单元。

在一个可选的实现方式中,所述装置还包括:

第四迭代单元705,用于基于所述第四神经网络模型进行第四迭代,得到目标神经网络模型;其中,在所述第四迭代中,所述至少一个第三网络层的激活数据和所述至少一个第四网络层的激活数据均被量化后输入到下一网络层。

在一个可选的实现方式中,第一迭代单元701,具体用于获得第一运算处理所需的第一运算参数,上述第一运算处理为通过合并至少一个第三网络层执行的网络模型处理和用于对激活数据进行量化的第二量化处理得到的运算处理,上述第一运算参数包括上述第二量化处理对应的量化参数;对上述第一运算参数中的浮点数进行定点化处理,得到第二运算参数;基于上述第二运算参数,执行上述第一运算处理,得到上述至少一个第三网络层的处理结果;基于上述至少一个第三网络层的处理结果,得到上述第一预测结果。

在一个可选的实现方式中,第一迭代单元701,具体用于将上述第一运算参数中包括的每个浮点数扩大K倍,得到扩大数值,上述K为大于1的整数;将上述扩大数值转换为定点数,得到上述第二运算参数。

在一个可选的实现方式中,所述第二量化处理对应的量化参数为基于量化最大值和量化最小值得到的,所述量化最大值和所述量化最小值为基于对样本图像得到的激活数据包括的多个数值进行聚类得到的。

在一个可选的实现方式中,在所述第一迭代中,所述第一神经网络模型中包括的至少一个第四网络层的激活数据被量化,所述第一神经网络模型中包括的多个第五网络层的激活数据为浮点数;在所述第二迭代中,所述至少一个第四网络层和所述多个第五网络层中与所述至少一个第四网络层相邻的至少一个第五网络层的激活数据被量化。

在一个可选的实现方式中,在上述第一预测处理中,上述第一神经网络模型包括的至少一个第五网络层的激活数据被量化。

应理解以上数据处理装置的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成同一个芯片中实现,此外,也可以以程序代码的形式存储于控制器的存储元件中,由处理器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(英文:central processing unit,简称:CPU),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(英文:application-specific integrated circuit,简称:ASIC),或,一个或多个微处理器(英文:digitalsignal processor,简称:DSP),或,一个或者多个现场可编程门阵列(英文:field-programmable gate array,简称:FPGA)等。

图8为本申请实施例提供的一种电子设备的结构示意图。如图8所示,该电子设备80包括处理器801、存储器802和通信接口803;该处理器801、存储器802和通信接口803通过总线相互连接。图8中的电子设备可以为前述实施例中的数据处理装置。

存储器802包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmablereadonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CDROM),该存储器802用于相关指令及数据。通信接口803用于接收和发送数据。

处理器1001可以是一个或多个中央处理器(central processing unit,CPU),在处理器801是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。上述实施例中由数据处理装置所执行的步骤可以基于该图8所示的电子设备的结构。具体的,处理器801可实现图7中各单元的功能。

该电子设备80中的处理器801用于读取该存储器802中存储的程序代码,执行前述实施例中的数据处理方法。

图9是本申请实施例提供的一种服务器900的结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)922(例如,一个或一个以上处理器)和存储器932,一个或一个以上存储应用程序942或数据944的存储介质930(例如一个或一个以上海量存储设备)。其中,存储器932和存储介质930可以是短暂存储或持久存储。存储在存储介质930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器922可以设置为与存储介质930通信,在服务器900上执行存储介质930中的一系列指令操作。服务器900可以为本申请实施例提供的数据处理装置。

服务器900还可以包括一个或一个以上电源926,一个或一个以上有线或无线网络接口950,一个或一个以上输入输出接口958,和/或,一个或一个以上操作系统941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。

上述实施例中由数据处理装置所执行的步骤可以基于该图9所示的服务器结构。具体的,中央处理器922可实现图7中各单元的功能。

在本申请的实施例中提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现前述实施例所提供的方法。

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

相关技术
  • 神经网络模型的重训练方法和相关产品
  • 神经网络模型的训练方法、数据处理方法和相关产品
技术分类

06120113254775