本发明属于边缘计算和深度学习领域,尤其涉及一种基于云边协同的定制化深度神经网络模型压缩方法及系统。
背景技术:
深度学习是人工智能领域重要的一个分支。深度学习通过深度神经网络,在机器视觉、nlp和语音识别等领域产生越来越重要的影响力。随着边缘计算的发展,深度学习开始在更广泛的硬件设备上发挥更重要的价值-即“边缘赋能”,这使得物联网中的许多硬件具有的更强大的识别、检测、智能化处理能力。然而,边缘计算场景下的许多硬件设备的计算能力都比较弱,深度神经网络推理的速度也比较慢,如何在部署到边缘设备和终端设备前,对深度神经网络模型进行优化和加速,是人工智能落地面临的一个难题。
边缘节点和终端运行神经网络模型主要面临两个问题,一是边缘节点和终端的内存都比较小,而一些深度神经网络模型运行的体积比较大,如用于图片分类的vgg-16网络,模型有138m个参数,每个参数的类型为float32,则模型本身的运行开销至少为552mb。二是边缘节点和终端的计算能力比较差,遇上实时性比较高的应用场景,如自动驾驶,推理的时延将至关重要。而深度神经网络模型比较大,在资源能力比较低的情况下,推理时延比较高。某些模型的推理时间甚至是秒级别。
目前模型压缩的算法主要有四种:一、设计更轻量化的神经网络。模型参数的冗余是保证模型得到良好训练的前提。通过对模型更细致、高效、轻量化的设计,减少模型尺寸,满足边缘侧和终端资源的需求,如squeezenet、mobilenet都是经过精细设计的精度比较好的网络结构。二、剪枝。通过一定的度量标准、对已经训练好的复杂的网络结构进行重要性评估,将不重要的权重、卷积核、通道及卷积层进行裁剪的一种技术。三、知识蒸馏。将复杂模型中的分布信息和特征信息通过知识迁移的方式,转移到轻量化的模型结构中,不但可以加快收敛的速度,也可以使轻量化模型学习一些复杂模型的样本集没有的特征,使模型具有更好的泛化能力。四、量化。量化没有从根本上改变复杂网咯的模型结构,而是通过减少每个权重所需要的比特数来压缩原始网络,从而达到减少内存开销,加快推理计算的目的。
但上面的这些方法都没有充分的与碎片化边缘场景的用户需求相结合,导致云端提供的网络模型与用户需求的网络模型不匹配或者“赋能过载”,同时模型轻量化后的推理精度比较低。
技术实现要素:
本发明的目的在于针对现有技术的不足,提供一种基于云边协同的定制化深度神经网络模型压缩方法及系统。本发明可以解决边缘场景受限于硬件约束的问题,如cpu/gpu/npu/内存的大小和计算能力不足,导致无法边缘侧部署或进行实时推理的问题;在碎片化边缘场景下,基于用户的定制化需求进行模型压缩和加速。
本发明的目的是通过以下技术方案来实现的:一种基于云边协同的定制化深度神经网络模型压缩方法,边缘侧的用户接收云端传输的深度神经网络模型,并根据用户的定制化需求和用户的数据集,进行深度神经网络模型的训练。采用云边协同的方法。由云端提供一个普适性更强的通用神经网络模型,而边缘侧根据用户的需求,使用边缘侧的硬件资源环境对模型进行二次训练和优化,以达到模型加速的目的。采用知识蒸馏的方法,来迁移云端提供的深度神经网络模型的特征到轻量化的网络模型中。
进一步地,允许用户使用两种不同的方式进行轻量化模型的训练:
a1)在模型训练的时候,轻量化模型的分类信息与云端的模型保持一致。等待完成模型训练后,再根据用户个性化的需求进行后处理。
a2)在模型训练的时候,修改轻量化模型的分类信息,修改模型优化的损失函数,知识蒸馏过程中,只迁移用户关注的特征信息,而无需后处理的过程。
进一步地,所述知识蒸馏的方法,可以使用两种不同的方式实现:
b1)可以基于模型分类logits的分布信息设计损失函数,将logits的分布特征迁移到轻量化的网络模型中。
b2)可以基于模型的通道信息设计损失函数,将channels的特征图迁移到轻量化的网络模型中。
一种基于云边协同的定制化深度神经网络模型压缩系统,包括:
大模型生成模块。大模型指具备多种能力,且结构比较复杂的深度神经网络模型。该模块是根据云端的具体资源状况,输出复杂且具有多种分类或识别能力的模型。
模型分发模块。模型分发模块主要用于通过云边协同,将模型传输到边缘节点上。分发的数据包括且不限于模型文件、配置文件和若干与模型相关的说明文件。模型的分发机制可以通过进程间的通信机制完成,也可以通过一些传统的文件协议如samba,nfs等实现。
边缘侧模型压缩模块。该模块是进行边缘侧模型压缩和处理的核心模块,其输入为用户个性化的数据集、云端分发的大模型和用户关注的分类信息或者目标检测信息,输出为一个能够在边缘侧或者终端侧部署的轻量化模型。
模型部署模块。该模块完成轻量化模型的接入或部署。部署可以以应用程序的方式,也可以基于容器机制。
进一步地,所述边缘侧模型压缩模块,拥有两种实现方式,包括:
3.1、先经过全部分类蒸馏,然后对输出的轻量化模型进行处理。
3.2、直接使用子类蒸馏训练的方法。
进一步地,所述子类蒸馏训练的方法,实现方式有两种选择途径,包括:
3.2.1、训练过程中,采用基于logits的子类蒸馏的方式。
3.2.2、训练过程中,采用基于channels的子类蒸馏的方式。
进一步地,步骤3.1具体为:在分类任务中,每一个分类的概率其实都是使用softmax函数计算得来的,而logits实际上就是softmax层的输入层。这里用zi来表示某一个分类i的输入,即某一类的logits。而产生的这个类别的概率输出
其中,c为分类的总个数,i=1~c,t代表温度,用来控制从大模型进行信息蒸馏的软度。
其中,α是超参数,用来表示知识从大模型迁移到轻量化模型所占的比例。η是交叉熵损失函数,ps为轻量化模型标准softmax函数下概率分布,
基于logits蒸馏训练的过程中,用户使用边缘侧的训练集,以大模型和轻量化模型组合形成的损失函数,参见公式(2),做迭代的优化训练。大模型的参数不可变,轻量化的模型参数随着训练不断更新,最终完成一定数目的迭代后,结束训练过程。
进一步地,步骤3.2具体为:在子类蒸馏中,仍然采用公式(2)的损失函数,不过,需要对用户关注的类别进行修改。设所有分类的集合u={1,2,…,c},uattention是用户关注的分类且
其中,i’,j’∈uattention,
进一步地,步骤3.2.2具体为:基于channels的子类知识蒸馏的方法采用两阶段训练的方法,第一阶段的目的是进行特征矩阵的匹配同步。即在保证大模型不变的情况下,训练出来一个与轻量化模型的尾部特征张量维度相同特征图。第二阶段,基于维度相同的特征图进行特征蒸馏。
第一阶段:将大模型的最后一层卷积层后,添加一个嵌入卷积层来实现特征张量同步的过程。嵌入卷积层包括主要包括两层,第一层是1×1的卷积,第二层是spp层。第一阶段的训练只是获取的1×1卷积层的参数,因此只需要用户使用自己的数据集,经过少量的epoch,就可以使得大模型的推理结果与加入嵌入卷积层后的结果保持一致。
第二阶段:在定义轻量化模型时,需要将spp层嵌入到全连接层前的最后一层卷积层。如果卷积层之后存在池化层,则使用spp层替换掉池化层。这样,可以保证大模型和轻量化模型spp层后的特征向量具有相同的维度。在特征蒸馏过程中,最主要的目标就是减少相同样本输入下的,大模型的特征与轻量化模型的特征之间的迁移损失。所以,首先需要有一个差异性距离的度量方法。进行向量距离度量常用的方法有l1,l2,mmd等。在第二阶段模型训练过程中,大模型的参数在梯度计算过程中不做改变,只需要对轻量化模型的参数进行更新即可。根据数据源和用户业务场景的不同,训练集可以使用云端提供的公共数据集,也可以使用边缘侧用户的私有数据集。
进一步地,第二阶段中,综合考虑梯度下降的速度和计算的复杂度,采用l2的距离度量方式。设t,s∈rw×h×c分别代表大模型和轻量化模型的特征表示,则特征蒸馏损失ldistill定义为
基于channels的子类蒸馏损失定义为
其中,β是超参数。
与现有技术相比,本发明的有益效果如下:
1、首次结合边缘计算的场景,设计子类蒸馏的方法,并深入了分析了当复杂网络模型的分类能力和用户需求的分类不一致时,解决了通过知识蒸馏的方法进行压缩的问题。这为深度神经网络在边缘侧及移动终端的部署开辟了新的解决方案;
2、针对子类蒸馏,提出了基于logits的和基于channel的蒸馏算法。基于channels的知识蒸馏通过添加嵌入卷积层,解决了大模型和轻量化模型进行特征迁移时,特征张量不匹配的问题;
3、允许用户根据需求进行模型定制化,并且在用户需求与大模型需求数目差别较大的情况下,训练后的轻量化模型可以显著的提升模型的推理精度。
附图说明
图1是本发明的边云协同模型压缩总体流程图;
图2是本发明的边缘侧模型压缩流程图;
图3是本发明的子类蒸馏流程图;
图4是本发明的知识蒸馏逻辑图;
图5是本发明的子类蒸馏逻辑图;
图6是本发明的基于channel的子类蒸馏逻辑图。
具体实施方式
为了使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体的实施方法对本发明做进一步的详细说明。
本发明的核心构思之一,是充分利用云侧经过长时间、优化后的大模型的特征,采用迁移学习的思想,将大模型中有用的信息迁移到轻量化的模型中,一方面,是的大模型的能力得到了继承。另外一方面,通过短期的训练,将模型压缩到可以满足边缘和终端硬件资源的大小,同时,针对用户对某些分类或者目标检测类别的需求,进行指向性的蒸馏,最终保持甚至提升指定分类的推理精度。
本发明采用的深度神经网络模型包括且不限于用于图片识别的alexnet、vgg、googlenet、restnet和用于目标检测的ssd、yolo、r-cnn、fastr-cnn;模型训练过程可以采用不同的深度学习框架,包括且不限于pytorch、tensorflow、mxnet和paddlepaddlel。
参照图1,示出了本发明一种基于云边协同的定制化深度神经网络模型压缩方法及系统的整个流程。详细的步骤说明如下:
步骤s11:大模型生成模块的目的是充分使用云端的硬件资源和海量的数据集,训练出一个具备多个分类或目标检测类别的大模型。大模型的训练可能需要经历非常长久的时间,比如,某些复杂大模型的训练需要tb级别的图片数据,训练时间以月为单位。当然,也可以直接从modelzoo的仓库中直接拉取已经得到长期训练的大模型。云端模型训练模块不考虑边缘场景下的用户需求,以模型的通用性和精确度为衡量指标。
步骤s12:模型分发模块基于一些现有的技术,如socket,samba,nfs等,将生成的大模型、配置文件、说明文件发送到能够进行模型训练的边缘节点上。这里可以使用事件机制来实现,即云端完成大模型的准备后,触发model_ready事件,边缘侧的节点周期性的检测该事件是否触发,如果事件被触发,则进行数据传输的流程。
步骤s13:如图2所示,当完成大模型相关的数据接收后,边缘侧模型压缩模块开始根据边缘侧的数据集、大模型文件和用户需求的配置进行模型的压缩。本发明提供了两种模型压缩方法,可以通过配置的方式选择使用的两种方法:全类蒸馏和子类蒸馏。全类蒸馏是针对大模型中所有的分类信息进行蒸馏迁移,所以蒸馏完毕后,需要根据用户的指定分类需求,进行后处理。详细的实现逻辑图参见图4。而子类蒸馏则将与用户需求的结合提前至了模型训练阶段,详细的实现逻辑图参见图5。
步骤s131:在分类任务中,每一个分类的概率其实都是使用softmax函数计算得来的,而logits实际上就是softmax层的输入层。这里用zi来表示某一个分类i的输入,即某一类的logits。而产生的这个类别的概率输出
其中,c为分类的总个数,i=1~c,t代表温度,用来控制从大模型进行信息蒸馏的软度。
其中,α是超参数,用来表示知识从大模型迁移到轻量化模型所占的比例。η是交叉熵损失函数,ps为轻量化模型标准softmax函数下概率分布,
基于logits蒸馏训练的过程参见图5。用户使用边缘侧的训练集,以大模型和轻量化模型组合形成的损失函数,参见公式(2),做迭代的优化训练。大模型的参数不可变,轻量化的模型参数随着训练不断更新,最终完成一定数目的迭代后,结束训练过程。
步骤s133:后处理阶段需要与具体的模型和任务结合。如果是模型完成的是分类任务,则对模型最后的softmax的输出进行处理,忽略掉不关注的分类,只在关注的分类中,选取概率最大的值作为分类top-1的结果。如果是目标检测任务,则需要对最后的输出的张量进行处理。一般,这个处理针对不同的目标检测模型都不同实现。
步骤s132:如图3所示,在子类蒸馏中,仍然采用公式(2)的损失函数,不过,需要对用户关注的类别进行修改。设所有分类的集合u={1,2,…,c},uattention是用户关注的分类且
其中,i’,j’∈uattention,
步骤s1321:基于logits的模型蒸馏训练的过程,原理可参见步骤s132。
步骤s1322:基于logits的子类蒸馏方法是从分类的最终概率分布角度,使得轻量化模型尽可能的与大网络的分布相似。但这种方式仍然比较粗放,因为无法从特征的角度反馈分类与分类之间的关联性。比如,某些分类之间有许多共同的特征,而某些分类之间没有任何相同的特征。这些无法单纯的从概率分布上显示出来,最终导致基于logits的蒸馏方法效果受到限制。该步骤则是提取卷积层的特征信息,即基于channels的子类蒸馏(也被称为特征蒸馏)。
基于channels的子类知识蒸馏的方法采用两阶段训练的方法,第一阶段的目的是进行特征矩阵的匹配同步。即在保证大模型不变的情况下,训练出来一个与轻量化模型的尾部特征张量维度相同特征图。第二阶段,基于维度相同的特征图进行特征蒸馏。其子类蒸馏逻辑图见图6。
大模型是一个得到良好训练的大网络。前面介绍的基于channels蒸馏的方法,都是在蒸馏过程中,通过维度变换和距离计算,使得大模型中的特征信息迁移到轻量化模型中。但这种方法在维度变换过程中,会产生特征丢失的问题。尤其在大模型与轻量化模型不同,最后一层的特征张量的维度差异性比较大的情况下,特征蒸馏的效果的会很糟糕。实际上,可以将特征张量同步的过程单独抽离出来进行。将大模型的最后一层卷积层后,添加一个嵌入卷积层来实现特征张量同步的过程。如图6,嵌入卷积层包括主要包括两层,第一层是1×1的卷积,第二层是spp(spartialpyramidpooling)层。两部分的作用如下:
1×1卷积:1×1卷积层起着降维的作用。设大模型最后一层的特征张量维度为
spp层:在经过1×1卷积层后,保证了通道数的一致。spp层用来解决特征张量的不一致。spp层可以将不任意大小的特征图,输出为固定长度的输出向量。其设计思路是通过金字塔式的多个池化层,替换全连接层前最后一层池化层。在本发明的设计中,spp层放在1×1卷积层之后,使得大模型特征图的向量与轻量化模型保持一致。
需要注意的是,spp层的加入并没有引入新的参数。所以,第一阶段的训练,只是获取的1×1卷积层的参数,因此参数量比较少。所以,只需要用户使用自己的数据集,经过少量的epoch,就可以使得大模型的推理结果与加入嵌入卷积层后的结果保持一致。
特征蒸馏:在定义轻量化模型时,需要将spp层嵌入到全连接层前的最后一层卷积层。如果卷积层之后存在池化层,则使用spp层替换掉池化层。这样,可以保证大模型和轻量化模型spp层后的特征向量具有相同的维度。在特征蒸馏过程中,最主要的目标就是减少相同样本输入下的,大模型的特征与轻量化模型的特征之间的迁移损失。所以,首先需要有一个差异性距离的度量方法。进行向量距离度量常用的方法有l1,l2,mmd等。综合考虑梯度下降的速度和计算的复杂度,采用l2的距离度量方式。设t,s∈rw×h×c分别代表大模型和轻量化模型的特征表示,则特征蒸馏损失
本发明中的基于channels的子类蒸馏损失定义为
其中,β是超参数。
在第二阶段模型训练过程中,大模型的参数在梯度计算过程中不做改变,只需要对轻量化模型的参数进行更新即可。根据数据源和用户业务场景的不同,训练集可以使用云端提供的公共数据集,也可以使用边缘侧用户的私有数据集。
轻量化模型的部署可以以应用程序的方式,也可以基于容器机制。
实施例
本发明基于cifar-10数据集对子类蒸馏算法进行性能的评估。cifar-10数据集包含50k张32×32大小的训练数据和10k张测试数据,一共包括10个分类。基于cifar-10数据集,在vgg分类模型上进行验证,算法采用pytorch深度学习框架实现,模型训练跑在一个具有2个nvidiagtx2080tigpu的ubuntu服务器上。梯度下降sgd的学习率为0.01,momentum设置为0.9,batchsize设置为128。
大模型采用标准的vgg-16。而压缩后小模型的结构,通过对标准vgg-16的每个卷积层的通道进行裁剪而得。即标准的vgg-16的13个卷积层的通道数分别为[64,64,128,128,256,256,256,512,512,512,512,512,512],经过裁剪后,通道数目为[32,32,64,64,128,128,128,256,256,256,256,256,256]
超参数设定为:公式2中的α=0.95,温度t=2。而公式5中的β=5×102。更大的β,意味着特征蒸馏对模型会产生比较大的影响。将cifar-10的10个分类分为2组,分别为group-1:{plane,bird,deer,dog,horse},group-2:{car,cat,frog,ship,truck}。这里设group1为用户不关注的分类,而group2为用户关注的分类。
云边协同的模型轻量化实验分为4组:
1.使用s131描述的,先全类蒸馏,后处理用户需求的方法(实验1)。
2.使用s1321的基于logits的子类蒸馏方法(实验2)。
3.使用s1322的基于channels的子类蒸馏的方法(实验3)。
4.直接进行轻量化模型训练的方法(实验4)。
经过epoch=100的迭代训练,最终4组实验训练出的模型精度为:
实验1:map-83.5%
实验2:map-94.4%(本发明)
实验3:map-95.1%(本发明)
实验4:map-93.1%
上述的实施例可以充分的验证本发明的有效性。
1.一种基于云边协同的定制化深度神经网络模型压缩方法,其特征在于,边缘侧的用户接收云端传输的深度神经网络模型,并根据用户的定制化需求和用户的数据集,进行深度神经网络模型的训练。采用云边协同的方法。由云端提供一个普适性更强的通用神经网络模型,而边缘侧根据用户的需求,使用边缘侧的硬件资源环境对模型进行二次训练和优化,以达到模型加速的目的。采用知识蒸馏的方法,来迁移云端提供的深度神经网络模型的特征到轻量化的网络模型中。
2.如权利要求1所述基于云边协同的定制化深度神经网络模型压缩方法,其特征在于,允许用户使用两种不同的方式进行轻量化模型的训练:
a1)在模型训练的时候,轻量化模型的分类信息与云端的模型保持一致。等待完成模型训练后,再根据用户个性化的需求进行后处理。
a2)在模型训练的时候,修改轻量化模型的分类信息,修改模型优化的损失函数,知识蒸馏过程中,只迁移用户关注的特征信息,而无需后处理的过程。
3.如权利要求1所述基于云边协同的定制化深度神经网络模型压缩方法,其特征在于,所述知识蒸馏的方法,可以使用两种不同的方式实现:
b1)可以基于模型分类logits的分布信息设计损失函数,将logits的分布特征迁移到轻量化的网络模型中。
b2)可以基于模型的通道信息设计损失函数,将channels的特征图迁移到轻量化的网络模型中。
4.一种基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,包括:
大模型生成模块。大模型指具备多种能力,且结构比较复杂的深度神经网络模型。该模块是根据云端的具体资源状况,输出复杂且具有多种分类或识别能力的模型。
模型分发模块。模型分发模块主要用于通过云边协同,将模型传输到边缘节点上。分发的数据包括且不限于模型文件、配置文件和若干与模型相关的说明文件。模型的分发机制可以通过进程间的通信机制完成,也可以通过一些传统的文件协议如samba,nfs等实现。
边缘侧模型压缩模块。该模块是进行边缘侧模型压缩和处理的核心模块,其输入为用户个性化的数据集、云端分发的大模型和用户关注的分类信息或者目标检测信息,输出为一个能够在边缘侧或者终端侧部署的轻量化模型。
模型部署模块。该模块完成轻量化模型的接入或部署。部署可以以应用程序的方式,也可以基于容器机制。
5.根据权利要求4所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,所述边缘侧模型压缩模块,拥有两种实现方式,包括:
3.1、先经过全部分类蒸馏,然后对输出的轻量化模型进行处理。
3.2、直接使用子类蒸馏训练的方法。
6.根据权利要求5所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,所述子类蒸馏训练的方法,实现方式有两种选择途径,包括:
3.2.1、训练过程中,采用基于logits的子类蒸馏的方式。
3.2.2、训练过程中,采用基于channels的子类蒸馏的方式。
7.根据权利要求5所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,步骤3.1具体为:在分类任务中,每一个分类的概率其实都是使用softmax函数计算得来的,而logits实际上就是softmax层的输入层。这里用zi来表示某一个分类i的输入,即某一类的logits。而产生的这个类别的概率输出
其中,c为分类的总个数,i=1~c,t代表温度,用来控制从大模型进行信息蒸馏的软度。
其中,α是超参数,用来表示知识从大模型迁移到轻量化模型所占的比例。η是交叉熵损失函数,ps为轻量化模型标准softmax函数下概率分布,
基于logits蒸馏训练的过程中,用户使用边缘侧的训练集,以大模型和轻量化模型组合形成的损失函数,参见公式(2),做迭代的优化训练。大模型的参数不可变,轻量化的模型参数随着训练不断更新,最终完成一定数目的迭代后,结束训练过程。
8.根据权利要求7所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,步骤3.2具体为:在子类蒸馏中,仍然采用公式(2)的损失函数,不过,需要对用户关注的类别进行修改。设所有分类的集合u={1,2,…,c},uattention是用户关注的分类且
其中,i’,j’∈uattention,
9.根据权利要求8所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,步骤3.2.2具体为:基于channels的子类知识蒸馏的方法采用两阶段训练的方法,第一阶段的目的是进行特征矩阵的匹配同步。即在保证大模型不变的情况下,训练出来一个与轻量化模型的尾部特征张量维度相同特征图。第二阶段,基于维度相同的特征图进行特征蒸馏。
第一阶段:将大模型的最后一层卷积层后,添加一个嵌入卷积层来实现特征张量同步的过程。嵌入卷积层包括主要包括两层,第一层是1×1的卷积,第二层是spp层。第一阶段的训练只是获取的1×1卷积层的参数,因此只需要用户使用自己的数据集,经过少量的epoch,就可以使得大模型的推理结果与加入嵌入卷积层后的结果保持一致。
第二阶段:在定义轻量化模型时,需要将spp层嵌入到全连接层前的最后一层卷积层。如果卷积层之后存在池化层,则使用spp层替换掉池化层。这样,可以保证大模型和轻量化模型spp层后的特征向量具有相同的维度。在特征蒸馏过程中,最主要的目标就是减少相同样本输入下的,大模型的特征与轻量化模型的特征之间的迁移损失。所以,首先需要有一个差异性距离的度量方法。进行向量距离度量常用的方法有l1,l2,mmd等。在第二阶段模型训练过程中,大模型的参数在梯度计算过程中不做改变,只需要对轻量化模型的参数进行更新即可。根据数据源和用户业务场景的不同,训练集可以使用云端提供的公共数据集,也可以使用边缘侧用户的私有数据集。
10.根据权利要求9所述基于云边协同的定制化深度神经网络模型压缩系统,其特征在于,第二阶段中,综合考虑梯度下降的速度和计算的复杂度,采用l2的距离度量方式。设t,s∈rw×h×c分别代表大模型和轻量化模型的特征表示,则特征蒸馏损失ldistill定义为
基于channels的子类蒸馏损失定义为
其中,β是超参数。
技术总结