使用渐进式知识蒸馏训练神经网络模型的方法和系统技术方案

技术编号:37511274 阅读:11 留言:0更新日期:2023-05-12 15:30
训练学生神经网络(SNN)模型的方法和系统。在多个轮次上执行第一训练阶段,在第一训练阶段期间,教师神经网络(TNN)模型输出的平滑因子以生成平滑的TNN模型输出,基于SNN模型输出和平滑的TNN模型输出来计算第一损失,并且以在接下来的第一训练阶段轮次中减少所述第一损失为目标,来计算SNN模型参数的更新集合。在第一训练阶段的多个轮次上调整平滑因子,以减少所生成的平滑的TNN模型输出的平滑效应。基于SNN模型输出和针对多个输入数据样本的预定义的预期输出集合来执行第二训练阶段。段。段。

【技术实现步骤摘要】
【国外来华专利技术】使用渐进式知识蒸馏训练神经网络模型的方法和系统
[0001]相关申请数据
[0002]本申请要求2020年9月9日递交的第63/076,368号美国临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。


[0003]本申请涉及用于训练机器学习模型的方法和系统,具体地,用于使用知识蒸馏训练神经网络模型的方法和系统。

技术介绍

[0004]基于深度学习的算法属于机器学习方法,用于自然语言处理(natural language processing,NLP)和计算机视觉(computer vision,CV)领域的许多机器学习应用。深度学习包括将非线性参数函数或“神经元”层组合在一起,并训练参数或“权重”,通常使用基于梯度的优化算法,以最小化损失函数。这些方法成功的一个关键原因是能够通过增加参数和数据来提高性能。在NLP中,这催生了具有数十亿参数的深度学习架构(Brown等人,2020年)。研究表明,大型架构或“模型”也更易于优化。因此,模型压缩对于任何实际应用都是必不可少的,例如在手机上为个人助理部署经过训练的机器学习模型。
[0005]知识蒸馏(knowledge distillation,KD)是一种神经网络压缩技术,通过这种技术,复杂神经网络模型的泛化被转移到一个较不复杂的神经网络模型中,该模型能够以较少的计算资源成本和时间作出与复杂模型相似的推断(即预测)。在本文中,复杂神经网络模型是指具有相对较多计算资源(例如GPU/CPU功率和计算机存储空间)的神经网络模型和/或包括相对较多隐藏层的神经网络模型。为了进行KD,复杂神经网络模型有时被称为教师神经网络模型(T)或简称教师。教师的一个典型缺点是,它可能需要大量的计算资源,但诸如移动通信设备或边缘计算设备等消费电子设备无法提供此规模的资源。此外,由于教师神经网络模型本身的复杂性,该模型通常需要大量的时间来推断(即预测)输入的特定输出,因此可能不适合部署到消费者计算设备以在其中使用。因此,KD技术主要用于提取或蒸馏教师神经网络模型的学习参数或知识,并将这些知识传授给具有更快的推断时间和消耗更少计算资源和存储空间成本的较不复杂的神经网络模型,从而降低消费者计算设备(如边缘设备)的负担。较不复杂的神经网络模型通常被称为学生神经网络模型(S)或简称学生。KD技术不仅包括使用训练数据集的标记训练数据样本来训练学生,而且还使用教师神经网络模型生成的输出,即logit。
[0006]在KD方案的示例中,给定样本对的训练数据集,其中x
i
是输入向量,y
i
是类的目标独热向量(例如,分类标签),损失函数可以包括两个分量:
[0007]a)第一损失函数分量是学生神经网络S(.)的输出(logit)和类的目标独热向量之间的交叉熵损失函数。其中,w
s
是学生神经网络的参数向量。
[0008][0009]b)第二损失函数参数是学生神经网络s(.)和教师神经网络T(.)的输出之间的Kullback

Leibler散度(KL散度)损失函数。
[0010]c)
[0011]在上面的示例中,总KD损失定义为:
[0012][0013]其中,α是用于控制两个损失之间权衡(trade

off)的超参数。
[0014]换句话说,KD假设提取的关于训练数据集的知识存在于训练过的教师网络的logit中,并且通过最小化学生网络和教师网络的logit之间的损失函数,这些知识可以从教师模型转移到学生模型。
[0015]总KD损失函数也可以说明如下:
[0016]L=(1

α)*H(y,σ(zs;T=1))+(α)*H(σ(zt;T=τ),σ(zs,T=τ))
[0017]其中H是交叉熵函数(也可以使用其他损失函数),σ是具有参数τ(神经网络的可学习参数)的softmax函数,zt和zs是logit,即分别是教师神经网络和学生神经网络的最后一个softmax层之前的神经网络的输出。
[0018]KD算法是一种广泛使用的算法,因为它与教师和学生的神经网络的架构无关,只需要访问教师的神经网络生成的输出。然而,对于许多应用来说,教师的性能和学生的性能之间存在着巨大的差距,因此目前已经提出了各种算法来缩小这一差距。
[0019]如果学生网络和教师网络之间存在很大的计算能力差距,就会出现问题。教师神经网络和学生神经网络之间的差距越大,使用KD训练学生的难度就越大。具体地,差距越大,基于教师神经网络和学生神经网络结构的KD损失函数就越“陡峭”。基于陡峭的损失函数的训练比基于平坦的损失函数的训练更困难。虽然较大的神经网络可以处理陡峭的损失函数,但计算能力有限的较小网络,如学生神经网络可能会遇到困难,例如在梯度下降过程中遇到陡峭的损失函数时会陷入错误的最小值。
[0020]因此,需要一种KD训练的系统和方法,其能够使较小的学生神经网络在不经历陡峭的损失函数的情况下被训练。改进使用知识蒸馏来训练神经网络模型的方法,以减少教师模型的准确性和学生模型的准确性之间的差异是可取的。

技术实现思路

[0021]根据本专利技术的第一示例方面,本文介绍了一种由学生神经网络(SNN)模型参数的集合配置的SNN模型以生成关于输入数据样本的输出的方法。该方法包括:获取针对多个输入数据样本的相应的教师神经网络(teacher neural network,TNN)模型输出;执行SNN模型的第一训练阶段,该第一训练阶段包括在多个轮次上训练SNN模型。每个轮次包括:计算针对多个输入数据样本的SNN模型输出;将平滑因子应用于教师神经网络(TNN)模型输出,以生成平滑的TNN模型输出;基于SNN模型输出和平滑的TNN模型输出计算第一损失;以在接下来的第一训练阶段轮次中减少第一损失为目标,来计算SNN模型参数的更新集合。在第一训练阶段的多个轮次上调整平滑因子,以减少对所生成的平滑的TNN模型输出的平滑效应。
此外,该方法还包括执行SNN模型的第二训练阶段,该阶段包括利用从在第一训练阶段期间被计算的SNN模型参数的多个更新集合选择的SNN模型参数的集合来初始化SNN模型,SNN模型的第二训练阶段在多个轮次上被执行,每个轮次包括:计算来自SNN模型的、针对多个输入数据样本的SNN模型输出;以及基于SNN模型输出和针对多个输入数据样本的预定义的预期输出集合来计算第二损失;以在接下来的第二训练阶段轮次中减少第二损失为目标,来计算SNN模型参数的更新集合。从在第二训练阶段被计算的SNN模型参数的更新集合选择SNN模型参数的最终集合。
[0022]该方法可以逐渐增加用于KD训练的损失函数的陡峭度,这在至少一些应用中可以实现更有效和准确的学生神经网络模型训练,特别是当教师神经网络模型可用的计算资源与学生神经网络模型可用的计算资源之间存在显著差异时。
[0023]根据第一示例方面的示例方面,第一训练阶段的每个轮次计算平滑因子本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种训练由学生神经网络(SNN)模型参数的集合配置的SNN模型以生成关于输入数据样本的输出的方法,包括:获取多个输入数据样本的相应的教师神经网络(TNN)模型输出;执行所述SNN模型的第一训练阶段,所述第一训练阶段包括在多个第一训练阶段轮次上训练所述SNN模型,每个第一训练阶段轮次包括:计算针对所述多个输入数据样本的SNN模型输出;将平滑因子应用于所述教师神经网络(TNN)模型输出,以生成平滑的TNN模型输出;基于所述SNN模型输出和所述平滑的TNN模型输出来计算第一损失;以及以在接下来的第一训练阶段轮次中减少所述第一损失为目标,来计算所述SNN模型参数的更新集合,其中所述平滑因子在所述多个第一训练阶段轮次上被调整,以减少所生成的所述平滑的TNN模型输出上的平滑效应;执行所述SNN模型的第二训练阶段,所述第二训练阶段包括利用从在所述第一训练阶段期间被计算的所述SNN模型参数的多个所述更新集合选择的SNN模型参数的集合来初始化所述SNN模型,所述SNN模型的所述第二训练阶段在多个第二训练阶段轮次上被执行,每个第二训练阶段轮次包括:计算来自所述SNN模型的、针对所述多个输入数据样本的SNN模型输出;基于所述SNN模型输出和针对所述多个输入数据样本的预定义的预期输出集合来计算第二损失;以及以在接下来的第二训练阶段轮次中减少所述第二损失为目标,来计算所述SNN模型参数的更新集合,从在第二训练阶段期间被计算的SNN模型参数的多个所述更新集合选择SNN模型参数的最终集合。2.根据权利要求1所述的方法,其中在所述第一训练阶段中的每个轮次,所述平滑因子被计算为其中t
max
是常数,并且t的值在每个后续的第一训练阶段轮次中被递增。3.根据权利要求1或2所述的方法,其中所述第一损失对应于所述SNN模型输出与所述平滑的TNN模型输出之间的散度。4.根据权利要求3所述的方法,其中所述第一损失对应于所述SNN模型输出与所述平滑的TNN模型输出之间的Kullback

Leibler散度。5.根据权利要求1至3中任一项所述的方法,其中所述第二损失对应于所述SNN模型输出与所述预定义的预期输出集合之间的散度。6.根据权利要求5所述的方法,其中所述第二损失基于交叉熵损失函数而被计算。7.根据权利要求1至6中任一项所述的方法,还包括:针对每个第一训练阶段轮次,确定相对于在所述第一训练阶段期间关于开发数据集先前所计算的SNN模型参数的多个更新集合,所述SNN模型参数的所计算的所述更新集合是否提高了所述SN...

【专利技术属性】
技术研发人员:阿雷夫
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1