神经网络训练方法及装置、可读存储介质及芯片与流程

未命名 08-02 阅读:77 评论:0


1.本技术涉及人工智能技术领域,更为具体的,涉及一种神经网络训练方法及装置、可读存储介质及芯片。


背景技术:

2.人工智能技术目前被应用在各个领域,例如,可以在手机中部署基于深度学习的神经网络,以对拍摄的图像进行去噪、风格化等处理。为了在边缘设备或者移动式平台这种对功率、延迟、内存等资源有较高限制的设备上部署深度学习算法,可以采用基于知识蒸馏的量化感知训练,通过引入知识蒸馏的监督,使训练得到的量化模型在一定程度上更接近原模型。
3.该方法是采用教师模型的结果输出来指导学生模型的训练,在网络模型的深度较深的情况下,可能会存在反向传递梯度过小而消失的情况,从而导致训练极度缓慢,影响部署的效率。


技术实现要素:

4.本技术提供一种神经网络训练方法及装置、可读存储介质及芯片。下面对本技术实施例涉及的各个方面进行介绍。
5.第一方面,提供一种神经网络训练方法,所述方法包括:对第一神经网络进行模型量化处理,得到第二神经网络,其中,所述第一神经网络包括多个第一中间层,所述第二神经网络包括与所述多个第一中间层相对应的多个第二中间层;确定所述多个第一中间层的多个第一中间输出结果和所述多个第二中间层的多个第二输出结果;根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项;根据所述第一神经网络的损失函数和所述中间损失项,确定所述第二神经网络的全局损失;以所述第一神经网络为教师模型,所述第二神经网络为学生模型,根据所述全局损失,对所述第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。
6.第二方面,提供一种神经网络训练装置,包括:量化单元,被配置为对第一神经网络进行模型量化处理,得到第二神经网络,其中,所述第一神经网络包括多个第一中间层,所述第二神经网络包括与所述多个第一中间层相对应的多个第二中间层;第一确定单元,被配置为确定所述多个第一中间层的多个第一中间输出结果和所述多个第二中间层的多个第二输出结果;中间损失确定单元,被配置为根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项;全局损失确定单元,被配置为根据所述第一神经网络的损失函数和所述中间损失项,确定所述第二神经网络的全局损失;蒸馏训练单元,被配置为以所述第一神经网络为教师模型,所述第二神经网络为学生模型,根据所述全局损失,对所述第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。
7.第三方面,提供一种神经网络训练装置,所述装置包括存储器和处理器,所述存储器用于存储程序,所述处理器用于执行所述程序,以实现如第一方面所述的方法。
8.第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有程序,所述程序被执行时实现如第一方面所述的方法。
9.第五方面,提供一种芯片,包括:处理器,用于从存储器中调用并运行计算机程序,使得有安装有所述芯片的设备执行如第一方面所述的方法。
10.本技术实施例提供的训练方法基于知识蒸馏的思路,以原模型作为教师模型,量化后的模型作为学生模型,使用中间层的输出特征作为监督指导,构建中间监督的损失函数。使用中间特征的监督,而非直接选用最终输出结果进行监督,这样有利于避免量化感知训练中反向传播中梯度消失的情况,同时从每个阶段性输出的角度缩小量化误差。
附图说明
11.图1是模型量化中非饱和映射的示意图。
12.图2是模型量化中饱和映射的示意图。
13.图3是相关技术中单层conv2d模型的结构示意图。
14.图4是基于知识蒸馏的量化训练方法的示意图。
15.图5是本技术实施例提供的训练方法的示意性流程图。
16.图6是本技术实施例提供的训练方法的一个应用示例图。
17.图7是图6中第一神经网络和第二神经网络中相互对应的中间层多通道输出的示意图。
18.图8是本技术一实施例提供的训练装置的示意性结构图。
19.图9是本技术另一实施例提供的训练装置的示意性结构图。
具体实施方式
20.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
21.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
22.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
23.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就
是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
24.人工智能技术目前被应用在各个领域,例如,可以在手机中部署基于深度学习的神经网络模型,以对拍摄的图像进行去噪、风格化等处理。以图像降噪为例,在相关技术中,为了确保图像降噪的效果,网络模型的精度被不断提高,这导致模型的深度和数据量不断增加,从而对部署这种网络模型的设备的算力和存储提出了较高的要求。
25.为了在边缘设备或者移动式平台这种对功率、延迟、内存等资源有较高限制的设备上部署深度学习算法,相关技术中提出了模型压缩的方法。例如,采用模型量化的手段对网络模型进行轻量化处理,以缩小网络模型所包含的参数占用空间的大小,降低神经网络运行时所占用的硬件资源,使其能够应用在边缘设备上。
26.需要说明的是,本技术实施例中的边缘设备可以是前文中所提及的手机,还可以包含其它功能诸如个人数字助理或音乐播放器功能的便携式电子设备,诸如平板电脑、具备无线通讯功能的可穿戴电子设备(如智能手表、智能眼镜)、车载设备等。便携式电子设备的示例性实施例包括但不限于搭载ios系统、android系统、microsoft系统或者其它操作系统的便携式电子设备。上述便携式电子设备也可以是其它便携式电子设备,诸如膝上型计算机(laptop)等。还应当理解的是,在其他一些实施例中,上述边缘设备也可以不是便携式电子设备,而是台式计算机。
27.相关技术中,网络模型通常是采用32位浮点(float32)数据来存储权重参数的,所谓模型量化可以是将32位浮点数据转化为8位的定点整形(int8)数据,即将浮点模型量化为定点模型。根据是否需要重新训练模型,可以将模型量化分为训练后量化(post-training quantization,ptq)和量化感知训练(quantization-aware training,qat)。
28.ptq量化又称离线量化,其中心思想就是计算量化阈值,根据量化阈值t确定量化前后的网络模型权重之间的映射关系。以将待量化的网络模型的权重参数由float32转int8为例,待量化网络的权重参数与量化后网络的权重参数之间的映射关系可以是饱和映射或非饱和映射。
29.图1和图2分别示出的是非饱和映射和饱和映射的示意图。在非饱和映射中,量化阈值t等于权重的最大值,按照比例关系,将网络模型的权重一一映射为[-127,127]范围内的整数;在饱和映射中,量化阈值t可以采用相对熵散度或均方差查找的方法,对超过阈值t的部分进行裁剪,将裁剪后的权重参数映射为[-127,127]范围内的整数。
[0030]
ptq量化方法不需要原始数据,对模型各层的量化分别进行,而未考虑其联系;此外,由于对部分参数进行了截断,从而导致量化后模型的精度可能会降低。
[0031]
相比与ptq量化,qat量化方法在对参数进行量化后进行训练,对量化后的模型参数进行调整,从而弥补量化带来的精度损失,其本质是将量化过程融入训练过程,依靠源模型训练时的训练数据,即时微调更新模型参数,用以进一步弥补量化损失。这种方法通常会产生比其他方法更高的准确率,并且训练后的量化模型与全精度相比几乎无损。
[0032]
下面结合图3的示例,对相关技术中的qat量化感知训练的过程进行举例说明。
[0033]
需要说明的是,以下所述的量化过程为均匀量化,其量化参数包括步长(scale)和零点(zero point)两个值。均匀量化引起映射简单和硬件友好,是目前硬件部署最常用的量化类型。
[0034]
以int8对称量化为例,即将32bit的浮点数量化映射到8bit上,以[-27,2
7-1]为范
围;对称则指进一步量化到[-2
7-1,2
7-1]这一个以0值为零点的范围内,即lb=-127,ub=127,其中,lb为下界(lower bound),ub为上界(upper bound),这样使得需要量化的参数仅有步长这一值。
[0035]
请参阅图3,图3示出的是单层conv2d模型的结构,relu表示conv2d的前一层,其输出为x
in
,即为conv2d的输入;conv2d的权重为w,卷积计算后输出位x
out
;和分别为对应变量量化后的表示。
[0036]
模型训练的过程包括前向传递(feed forward,ff)和后向传播(back propagation,bp),需要量化的对象分别是模型本身的权重和推理过程中的特征张量。
[0037]
前向传递即模型的前向推理过程,针对权重变化,用sw表示量化参数,q
range
表示量化范围,则有:
[0038][0039]
其中,abs()表示逐元素取绝对值,max()表示取最大值,在上述8bit整形的对称量化中,q
range
=127。
[0040]
针对特征量化,用sa表示量化参数,则有:
[0041][0042]
量化后的x
in
和w(即和)可表示如下:
[0043][0044][0045]
其中,round()表示取整,clip(x,lb,ub)表示对x依据[lb,ub]范围截断。
[0046]
模型训练是一个多周期(epoch)迭代的过程,而每个周期又有多批次(batch)数据的迭代。随着参数的更迭,输出的激励特征会有所不同;实际训练中,在当前周期,得到激励特征的量化参数后,与过去的值通过滑动平均算法(moving average,ma)得到均值作为当前的结果:
[0047][0048]
其中,i表示第i个批次的样本输入,表示第i个批次时得到的sa,α表示滑动平均系数,例如可以取α=0.999。
[0049]
在得到上述结果后,进行反向传播训练,以更新模型的参数,在对模型进行qat训练时,损失函数l
qat
通常与原模型训练时的损失函数l
raw
保持一致,即:
[0050]
l
qat
=l
raw
[0051]
qat训练的反向传播过程(bp)因为前向过程中存在量化近似的过程,原则上不连续不可导,无法实现,因此实际中使用了ste近似:
[0052][0053]
上文所述的均匀量化算法中的量化映射过程简单,对硬件设计又好。在应用于进行图像处理的网络模型中时,能够确保在普通场景中的误差维持在较低水平;但是,在例如夜景去噪等特殊场景中时,量化过程中的截断和取整引起的损失会导致额外噪声的引入,使得输出图像中存在极亮区域曝光不足和极暗区域存在明显噪声颗粒的问题。
[0054]
改善上述噪声问题的策略通常是改变模型结构或改善量化器的设计,甚至引入非线性量化机制来更充分的利用取值空间,以获得相对小的损失;但是,以上方法或改变了模型结果,或降低了模型质量。为了解决该问题,相关技术中提出了一种技术方案,即在量化训练的过程中引入知识蒸馏的思路,下面对这种方法进行详细的说明。
[0055]
知识蒸馏是一种模型压缩方法,采取“教师-学生网络思想”的训练方式,对模型的能力进行迁移。复杂且大的模型被称为教师模型,结构简单的模型作为学生模型,用教师模型来辅助学生模型的训练,将教师模型的知识迁移给学生模型,以此来增强学生模型的泛化能力。
[0056]
图4示出了基于知识蒸馏的量化训练过程,图4所示的方法是利用量化前的网络模型(m
float
)作为教师模型,以量化后的网络模型(mq)作为学生模型进行的。mf和mq分别为m
float
和mq的输出结果,分别包括j个元素值。针对输出结果的每一个元素值,用φ(
·
)表示其归一化的过程,那么无论是mf还是mq都可用如下归一化指数(softmax)函数表示:
[0057][0058]
上式中,表示蒸馏的温度系数,通常为大于1的正实数,例如可以取
[0059]
在知识蒸馏训练中,将教师模型输出的结果mf称为软标签,训练样本的真实标签称为硬标签mh。网络模型只采用硬标签训练的时候,会损失原始数据的信息,降低了模型对于数据的拟合难度,使得模型变得更加容易拟合,于是可能产生过拟合,导致模型的泛化能力下降。而仅采用软标签的时候,模型需要学习更多的知识,比如两个接近的概率之间的相似性和差异性,从而为模型的拟合能力带来挑战,增强模型的泛化能力。
[0060]
因此,为了在训练效率和模型泛化能力之间得到平衡,学生模型的训练通常采用软便签(soft lable)和硬标签(hard lable)结合的方式进行;此时,可以将损失函数定义为:l=(1-α)l
float
+αl
kd

[0061]
其中,l
float
是根据学生模型的输出mq与硬标签mh确定的损失函数,即l
float
=f(mq,mh),l
float
可以是参考教师模型设计的函数,以模型去噪任务为例,常规的有l1,l2范数,ssim等,l
raw
表示教师模型训练时的损失函数,相应的损失分别如下:
[0062]
l
folat
=l
raw
=l1(mq,mh)=||m
q-mh||1[0063]
l
folat
=l
raw
=l2(mq,mh)=||m
q-mh||2[0064]
l
folat
=l
raw
=l
ssim
(mq,mh)=ssim(mq,mh)
[0065]
l
kd
为蒸馏引入的损失函数项,α为加权系数,α∈(0,1],例如当α=0.5时,标识硬标签和软标签的比重相当。
[0066]
上式中,l
kd
可以根据mf和mq中的元素值的相似度来确定,所述相似度例如可以是
kl散度。mf和mq的任一个元素值的kl散度为:
[0067][0068]
将其扩展到输出结果的全部元素值,得到蒸馏引入的损失函数项为:
[0069][0070]
因此,上述知识蒸馏训练的全局损失函数为l
qat
=(1-α)l
float
+αl
kd
[0071][0072]
根据上述全局损失函数,进行多个周期的迭代训练,即可得到更新后的量化模型。
[0073]
上文结合附图介绍了相关技术中基于知识蒸馏的量化感知训练方法,通过引入知识蒸馏的监督,使训练得到的量化模型在一定程度上更接近原模型。但是,上述方法仍然存在着一些问题,具体的,上述方法是采用教师模型的结果输出来指导学生模型的训练,在网络模型的深度较深的情况下,可能会存在反向传递梯度过小而消失的情况,从而导致训练极度缓慢。此外,在图像去噪,去模糊及超分辨率等像素级的任务的场景下,利用上述方法训练得到的模型可能存在对图像的某一个或多个色彩通道的处理效果较差的问题,从而导致输出图像出现偏色、失真等问题。
[0074]
有鉴于上述问题,本技术实施例提供了一种训练方法、训练装置及可读存储介质。
[0075]
下面结合图5介绍本技术实施例提供的训练方法,该方案基于知识蒸馏的思路,以原模型作为教师模型,量化后的模型作为学生模型,使用中间层的输出特征作为监督指导,构建中间监督的损失函数。使用中间特征的监督,能够避免量化感知训练中反向传播中梯度小时的情况,同时从每个阶段性输出的角度减小量化误差。
[0076]
图5中的方法包括步骤s510-s550。
[0077]
在步骤s510,对第一神经网络进行量化处理,得到第二神经网络。
[0078]
其中,所述第一神经网络为浮点模型,例如可以是采用32位浮点(float32)数据存储的网络模型;第二神经网络为定点模型,例如是采用8位定点整形(int8)数据存储的网络模型。
[0079]
本技术实施例中的量化处理例如可以是均匀量化处理,对第一网络模型进行均匀量化得到的第二网络模型需要的运算和存储资源更少,能够方便的部署在各类边缘设备上。
[0080]
图6是本技术实施例提供的训练方法的一个应用示例,图6中分别示出了第一网络模型m
float
和量化后的第二网络模型mq。其中,第一网络模型mfloat中包括多个模块,该多个模块中的每个模块均为构成模型的基础模块,每个特征提取的基础模块由一个或几个基础运算单元为主的算子构成,如卷积算子conv2d,transformer的编码器(encoder)或解码器(decoder)等。上述每个模块的输出层也可称为第一神经网络的第一中间层,每个模块输出的特征向量作为相邻模块的输入向量。
[0081]
量化后的第二网络模型包括与第一网络模型中的多个模块(如图6中的模块1,模块2,

,模块k)相对应的多个模块(模块1’,模块2’,

,模块k’)。换句话说,第二神经网络
包括与第一神经网络的多个第一中间层相对应的多个第二中间层。
[0082]
步骤s520,确定多个第一中间层的多个第一中间输出结果和多个第二中间层的多个第二输出结果。
[0083]
第一神经网络m
float
的多个第一中间层的多个第一中间输出结果为第二神经网络mq的多个第二中间层的多个第二中间输出结果为
[0084]
在步骤s530,根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项。
[0085]
需要说明的是,本技术实施例中的方法采用的是知识蒸馏的思想,因此,该中间损失项即为蒸馏引入的损失项l
kd
,该中间损失项指示第一中间结果和第二中间结果的相似度。
[0086]
还以图6为例,对于第一中间结果和第二中间结果中的每个元素值,可以用φ(
·
)表示其归一化的过程,无论是还是都可用如下归一化指数(softmax)函数表示:
[0087][0088]
其中,表示蒸馏的温度系数,通常为大于1的正实数,例如可以取
[0089]
l
kd
可以根据mf和mq中的元素值的相似度来确定,所述相似度例如可以是kl散度。mf和mq的任一个元素值的kl散度为:
[0090][0091]
将其扩展到一个中间结果的n个元素值:
[0092][0093]
再扩展到k个中间层,得到中间损失项:
[0094][0095]
在一些实施例中,上述知识蒸馏训练可以为分批次的训练,此时可以将扩展到k个中间层后,再将其扩展到训练样本的批量b,得到中间损失项为:
[0096][0097]
重新参阅图5,在步骤s540,根据第一神经网络的损失函数和中间损失项,确定所述第二神经网络的全局损失。
[0098]
第一神经网络的输入和输出分别为x和xf,则其损失函数可以表示为l
raw
=l(x,
xf)。根据该损失函数与上述中间损失项,确定第二神经网络的全局损失为:
[0099][0100]
其中,β为加权系数,β∈(0,1]。
[0101]
在步骤s550,以第一神经网络为教师模型,第二神经网络为学生模型,根据全局损失,对第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。
[0102]
根据本技术实施例提供的方法,在知识蒸馏训练过程中,引入中间特征的监督,而非直接选用最终输出结果进行监督,这样有利于避免量化感知训练中反向传播中梯度消失的情况,同时从每个阶段性输出的角度缩小量化误差。
[0103]
在一些实施例中,所述第一神经网络和所述第二神经网络均包括多个输入通道,每个第一中间输出结果和第二中间输出结果分别包括与多个输入通道对应的多个第一特征向量和多个第二特征向量。
[0104]
图7示出了图6中第一神经网络和第二神经网络中相互对应的一个中间层的输出,mf表示原模型m
float
在该层的中间输出,mq表示量化模型mq在该层的中间输出,(c,h,w)分别表示三个通道。每个所述第一中间输出结果和所述第二中间输出结果分别包括与所述多个输入通道对应的多个第一特征向量和多个第二特征向量;
[0105]
将长和宽视作一个维度,h和w分别表示这两个维度的索引,针对该特征张量的某一元素值,无论是mf还是mq都可以表示为:
[0106][0107]
表示蒸馏的温度系数,一般选大于1的正实数,据经验值可取
[0108]
扩展到该特征向量的某一层c,用kl散度衡量mf和mq之间的差异,得到第二损失项:
[0109][0110]
将扩展到多个通道和多个中间层,得到第三损失项:
[0111][0112]
根据上述第三损失项,即可确定第二神经网络的中间损失项,具体的,将上述第三损失项扩展至训练样本的批次数量b,得到中间损失项为:
[0113][0114]
进一步的,确定第二神经网络的全局损失为:
[0115]
l
qat
=(1-γ)l
raw
+γl
kd
[0116]
上式中,γ表示加权系数,γ∈(0,1]。
[0117]
在一些特殊场景下,例如图像去噪模型的量化后要求效果和原模型的风格相近时,可以将γ的取值设为1,直接以l
kd
作为损失函数,从而满足对量化模型的需求。
[0118]
根据本技术实施例提供的上述方法,引入了逐通道的特征监督,利用每层通道特征的分布差异较大的性质,采用逐通道的比较而非整个张量的比较,更加有效的设计了损失函数。该技术方案在模型去噪的模块化模型中能够得到有效的应用,同时也可扩展到图像超分辨率,图像去雾,图像去模糊等像素级图像任务中。
[0119]
在一些实施例中,上述方法还包括:根据第二神经网络与第一神经网络的预测结果之间的差异,确定第四损失项。
[0120]
第一神经网络和第二神经网络的预测结果分别为xf和xq,xf和xq之间的差异可以利用l1范数、l2范数或结构相似性(ssim)等函数来衡量,相应的,第四损失项可以为:
[0121]
l4=l1(xf,xq)=||x
f-xq||1[0122]
l4=l2(xf,xq)=||x
f-xq||2[0123]
l4=l
ssim
(xf,xq)=ssim(xf,xq)
[0124]
基于此,上述确定第二神经网络的全局损失可以是:将第一神经网络的损失函数,该第四损失项以及中间损失项加权求和,得到所述全局损失,即:
[0125]
l
qat
=δl
raw
+εl
kd
+(1-δ-ε)l4[0126]
其中,δ和ε为权重,δ∈[0,1],ε∈[0,1],且(δ+ε)∈[0,1]。
[0127]
上文结合图1-图7,详细描述了本技术的方法实施例,下面结合图8-图9,详细描述本技术的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面的方法实施例。
[0128]
图8是本技术一实施例提供的训练装置的示意性结构图,图8中训练装置800包括:
[0129]
量化单元810,被配置为对第一神经网络进行模型量化处理,得到第二神经网络,其中,所述第一神经网络包括多个第一中间层,所述第二神经网络包括与所述多个第一中间层相对应的多个第二中间层。
[0130]
第一确定单元820,被配置为确定所述多个第一中间层的多个第一中间输出结果和所述多个第二中间层的多个第二输出结果。
[0131]
中间损失确定单元830,被配置为根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项。
[0132]
全局损失确定单元840,被配置为根据所述第一神经网络的损失函数和所述中间损失项,确定所述第二神经网络的全局损失。
[0133]
蒸馏训练单元850,被配置为以所述第一神经网络为教师模型,所述第二神经网络为学生模型,根据所述全局损失,对所述第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。
[0134]
可选地,所述第一神经网络和所述第二神经网络均包括多个输入通道,每个所述第一中间输出结果和所述第二中间输出结果分别包括与所述多个输入通道对应的多个第一特征向量和多个第二特征向量。
[0135]
所述中间损失确定单元还被配置为:根据目标第二中间层的输出结果中的目标第二特征向量中的各个元素与目标第一中间层的输出结果中的目标第一特征向量中的各个元素之间的差异,确定第二损失项;其中,所述目标第一中间层和所述目标第一特征向量分
别与所述第二中间层和所述第二特征向量相对应;将所述第二损失项扩展至所述多个通道和所述多个第二中间层,确定第三损失项;根据所述第三损失项,确定所述中间损失项。
[0136]
可选地,所述根据所述第三损失项,确定所述中间损失项,包括:将所述第三损失项扩展至训练样本的批次数量,得到所述中间损失项。
[0137]
可选地,所述装置还包括第二确定单元,被配置为根据所述第二神经网络和所述第一神经网络的预测结果之间的差异,确定第四损失项。
[0138]
所述全局损失确定单元还被配置为:将所述第一神经网络的损失函数,所述第四损失项以及所述中间损失项加权求和,得到所述全局损失。
[0139]
可选地,所述第二损失项被配置为指示所述目标第二特征向量与所述目标第一特征向量中的各个元素之间差异,所述第二损失项为相对熵或余弦相似度。
[0140]
可选地,所述第一神经网络为浮点模型,所述第二神经网络为定点模型,所述所述量化单元被配置为:对所述第一神经网络进行均匀量化,得到所述第二神经网络。
[0141]
应理解,这里的训练神经网络的装置800以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
[0142]
作为一个示例,本技术实施例提供的训练装置800可以是处理器或芯片,以用于执行本技术实施例所述的方法。
[0143]
图9是本技术另一实施例提供的训练装置的示意性结构图,图9所示的装置900包括存储器910、处理器920、通信接口930以及总线940。其中,存储器910、处理器92、通信接口930通过总线940实现彼此之间的通信连接。
[0144]
存储器910可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器910可以存储程序,当存储器910中存储的程序被处理器920执行时,处理器920用于执行本发明实施例提供的训练方法的各个步骤。
[0145]
处理器920可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本发明方法实施例的训练方法。
[0146]
处理器920还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本发明实施例提供的训练方法的各个步骤可以通过处理器920中的硬件的集成逻辑电路或者软件形式的指令完成。
[0147]
上述处理器920还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0148]
结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完
成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器910,处理器920读取存储器910中的信息,结合其硬件完成本发明实施例中姿态识别的装置包括的单元所需执行的功能,或者,执行本发明方法实施例的训练方法。
[0149]
通信接口930可以使用但不限于收发器一类的收发装置,来实现装置90与其他设备或通信网络之间的通信。
[0150]
总线940可以包括在装置900各个部件(例如,存储器910、处理器920、通信接口930)之间传送信息的通路。
[0151]
应理解,本发明实施例所示的装置900可以是处理器或芯片,以用于执行本发明实施例所述的方法。
[0152]
应理解,本发明实施例中的处理器可以为中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0153]
本技术实施例中还提供了一种芯片,包括处理器,该处理器可用于从存储器中调用并运行计算机程序,使得有安装有所述芯片的设备执行上述方法实施例中描述的方法。可以理解的是,该处理器可以上文提及任一类型的处理器。可以理解的是,该存储器可以独立于芯片,也可以集成在芯片中。
[0154]
本技术实施例还提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被执行时,能够实现本技术各个实施例中的方法。
[0155]
本技术实施例还提供一种计算机程序产品。该计算机程序产品包括程序,该程序使得计算机执行本技术各个实施例中的方法。
[0156]
本技术实施例还提供一种计算机程序。该计算机程序使得计算机执行本技术各个实施例中的方法。
[0157]
本技术使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。
[0158]
在本技术的实施例中,提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,a指示b,可以表示a直接指示b,例如b可以通过a获取;也可以表示a间接指示b,例如a指示c,b可以通过c获取;还可以表示a和b之间具有关联关系。
[0159]
在本技术实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
[0160]
在本技术实施例中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
[0161]
本技术实施例中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存
在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0162]
在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0163]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0164]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0165]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0166]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,dvd))或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
[0167]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0168]
以上对本技术实施例进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。

技术特征:
1.一种神经网络训练方法,其特征在于,所述方法包括:对第一神经网络进行模型量化处理,得到第二神经网络,其中,所述第一神经网络包括多个第一中间层,所述第二神经网络包括与所述多个第一中间层相对应的多个第二中间层;确定所述多个第一中间层的多个第一中间输出结果和所述多个第二中间层的多个第二输出结果;根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项;根据所述第一神经网络的损失函数和所述中间损失项,确定所述第二神经网络的全局损失;以所述第一神经网络为教师模型,所述第二神经网络为学生模型,根据所述全局损失,对所述第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。2.根据权利要求1所述的方法,其特征在于,所述第一神经网络和所述第二神经网络均包括多个输入通道,每个所述第一中间输出结果和所述第二中间输出结果分别包括与所述多个输入通道对应的多个第一特征向量和多个第二特征向量;所述确定中间损失,包括:根据目标第二中间层的输出结果中的目标第二特征向量中的各个元素与目标第一中间层的输出结果中的目标第一特征向量中的各个元素之间的差异,确定第二损失项;其中,所述目标第一中间层和所述目标第一特征向量分别与所述第二中间层和所述第二特征向量相对应;将所述第二损失项扩展至所述多个通道和所述多个第二中间层,确定第三损失项;根据所述第三损失项,确定所述中间损失项。3.根据权利要求2所述的方法,其特征在于,所述根据所述第三损失项,确定所述中间损失项,包括:将所述第三损失项扩展至训练样本的批次数量,得到所述中间损失项。4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:根据所述第二神经网络和所述第一神经网络的预测结果之间的差异,确定第四损失项;所述确定所述第二神经网络的全局损失,还包括:将所述第一神经网络的损失函数,所述第四损失项以及所述中间损失项加权求和,得到所述全局损失。5.根据权利要求2或3所述的方法,其特征在于,所述第二损失项用于指示所述目标第二特征向量与所述目标第一特征向量中的各个元素之间差异,所述第二损失项为相对熵或余弦相似度。6.根据权利要求1所述的方法,其特征在于,所述第一神经网络为浮点模型,所述第二神经网络为定点模型,所述对第一神经网络进行模型量化处理,包括:对所述第一神经网络进行均匀量化,得到所述第二神经网络。7.一种神经网络训练装置,其特征在于,所述装置包括:
量化单元,被配置为对第一神经网络进行模型量化处理,得到第二神经网络,其中,所述第一神经网络包括多个第一中间层,所述第二神经网络包括与所述多个第一中间层相对应的多个第二中间层;第一确定单元,被配置为确定所述多个第一中间层的多个第一中间输出结果和所述多个第二中间层的多个第二输出结果;中间损失确定单元,被配置为根据所述多个第一中间输出结果和所述多个第二中间结果,确定所述第二神经网络的中间损失项;全局损失确定单元,被配置为根据所述第一神经网络的损失函数和所述中间损失项,确定所述第二神经网络的全局损失;蒸馏训练单元,被配置为以所述第一神经网络为教师模型,所述第二神经网络为学生模型,根据所述全局损失,对所述第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。8.根据权利要求7所述的装置,其特征在于,所述第一神经网络和所述第二神经网络均包括多个输入通道,每个所述第一中间输出结果和所述第二中间输出结果分别包括与所述多个输入通道对应的多个第一特征向量和多个第二特征向量;所述中间损失确定单元,还被配置为:根据目标第二中间层的输出结果中的目标第二特征向量中的各个元素与目标第一中间层的输出结果中的目标第一特征向量中的各个元素之间的差异,确定第二损失项;其中,所述目标第一中间层和所述目标第一特征向量分别与所述第二中间层和所述第二特征向量相对应;将所述第二损失项扩展至所述多个通道和所述多个第二中间层,确定第三损失项;根据所述第三损失项,确定所述中间损失项。9.根据权利要求8所述的装置,其特征在于,所述根据所述第三损失项,确定所述中间损失项,包括:将所述第三损失项扩展至训练样本的批次数量,得到所述中间损失项。10.根据权利要求7-9中任一项所述的装置,其特征在于,所述装置还包括:第二确定单元,被配置为根据所述第二神经网络和所述第一神经网络的预测结果之间的差异,确定第四损失项;所述全局所述确定单元还被配置为:将所述第一神经网络的损失函数,所述第四损失项以及所述中间损失项加权求和,得到所述全局损失。11.根据权利要求8或9所述的装置,其特征在于,所述第二损失项用于指示所述目标第二特征向量与所述目标第一特征向量中的各个元素之间差异,所述第二损失项为相对熵或余弦相似度。12.根据权利要求7所述的装置,其特征在于,所述第一神经网络为浮点模型,所述第二神经网络为定点模型;所述量化单元被配置为:对所述第一神经网络进行均匀量化,得到所述第二神经网络。13.一种神经网络训练装置,其特征在于,所述装置包括存储器和处理器,所述存储器用于存储程序,所述处理器用于执行所述程序,以实现如权利要求1-6中任一项所述的方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有程序,
所述程序被执行时实现如权利要求1-6中任一项所述的方法。15.一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得有安装有所述芯片的设备执行如权利要求1-6中任一项所述的方法。

技术总结
本申请提供了一种神经网络训练方法及装置、可读存储介质及芯片。该方法包括:对第一神经网络进行模型量化处理,得到第二神经网络,其中,第一神经网络包括多个第一中间层,第二神经网络包括与多个第一中间层相对应的多个第二中间层;确定多个第一中间层的多个第一中间输出结果和多个第二中间层的多个第二输出结果;根据多个第一中间输出结果和多个第二中间结果,确定第二神经网络的中间损失项;根据第一神经网络的损失函数和中间损失项,确定第二神经网络的全局损失;以第一神经网络为教师模型,第二神经网络为学生模型,根据全局损失,对第二神经网络进行知识蒸馏训练,确定更新后的第二神经网络。的第二神经网络。的第二神经网络。


技术研发人员:董旭炯
受保护的技术使用者:哲库科技(上海)有限公司
技术研发日:2023.03.06
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐