认识深度学习中的知识蒸馏_第1页
认识深度学习中的知识蒸馏_第2页
认识深度学习中的知识蒸馏_第3页
认识深度学习中的知识蒸馏_第4页
认识深度学习中的知识蒸馏_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一分钟带你认识深度学习中的知识蒸馏【摘要】知识蒸馅(knowledgedistillation)是模型压缩的一种常用的方法,不同于模型压缩中的剪枝和量化,知识蒸馅是通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来训练这个小模型,以期达到更好的性能和精度。本文将深入浅出的介绍知识蒸馅的概念和原理,最后通过一个实际的上手案例,来指导用户使用知识蒸偶。一、知识蒸馏入门1.1概念介绍知识蒸偶(knowledgedistillation)是模型压缩的一种常用的方法,不同于模型压缩中的剪枝和量化,知识蒸馅是通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来训练这个小模型,以期达到更好的性能和精度。最早是由Hinton在2015年首次提出并应用在分类任务上面,这个大模型我们称之为teacher(教师模型),小模型我们称之为Student(学生模型)。来自Teacher模型输出的监督信息称之为knowledge(知识),而student学习迁移来自teacher的监督信息的过程称之为Distillation(蒸偶)。1.2知识蒸馏的种类图1知识蒸馏的种类图1知识蒸馏的种类1、离线蒸馏离线蒸馏方式即为传统的知识蒸馏,如上图(a)。用户需要在已知数据集上面提前训练好一个teacher模型,然后在对student模型进行训练的时候,利用所获取的teacher模型进行监督训练来达到蒸馏的目的,而且这个teacher的训练精度要比student模型精度要高,差值越大,蒸馏效果也就越明显。一般来讲,teacher的模型参数在蒸馏训练的过程中保持不变,达到训练student模型的目的。蒸馏的损失函数distillationloss计算teacher和student之前输出预测值的差别,和student的loss加在一起作为整个训练loss,来进行梯度更新,最终得到一个更高性能和精度的student模型。2、半监督蒸馏半监督方式的蒸馏利用了teacher模型的预测信息作为标签,来对student网络进行监督学习,如上图(b)。那么不同于传统离线蒸馏的方式,在对student模型训练之前,先输入部分的未标记的数据,利用teacher网络输出标签作为监督信息再输入到student网络中,来完成蒸馏过程,这样就可以使用更少标注量的数据集,达到提升模型精度的目的。3、自监督蒸馏自监督蒸馏相比于传统的离线蒸馏的方式是不需要提前训练一个teacher网络模型,而是student网络本身的训练完成一个蒸馏过程,如上图(c)。具体实现方式有多种,例如先开始训练student模型,在整个训练过程的最后几个epoch的时候,利用前面训练的student作为监督模型,在剩下的epoch中,对模型进行蒸馏。这样做的好处是不需要提前训练好teacher模型,就可以变训练边蒸馏,节省整个蒸馏过程的训练时间。1.3知识蒸馅的功能1、提升模型精度用户如果对目前的网络模型A的精度不是很满意,那么可以先训练一个更高精度的teacher模型B(通常参数量更多,时延更大),然后用这个训练好的teacher模型B对student模型A进行知识蒸馏,得到一个更高精度的模型。2、降低模型时延,压缩网络参数用户如果对目前的网络模型A的时延不满意,可以先找到一个时延更低,参数量更小的模型B,通常来讲,这种模型精度也会比较低,然后通过训练一个更高精度的teacher模型C来对这个参数量小的模型B进行知识蒸馏,使得该模型B的精度接近最原始的模型A,从而达到降低时延的目的。3、图片标签之间的域迁移用户使用狗和猫的数据集训练了一个teacher模型A,使用香蕉和苹果训练了一个teacher模型B,那么就可以用这两个模型同时蒸馏出一个可以识别狗,猫,香蕉以及苹果的模型,将两个不同与的数据集进行集成和迁移。studantteacherA图2图像域迁移训练4、降低标注量studantteacherA图2图像域迁移训练该功能可以通过半监督的蒸馏方式来实现,用户利用训练好的teacher网络模型来对未标注的数据集进行蒸馏,达到降低标注量的目的。1.4知识蒸馅的原理

图3知识蒸馏原理介绍一般使用蒸馏的时候,往往会找一个参数量更小的student网络,那么相比于teacher来说,这个轻量级的网络不能很好的学习到数据集之前隐藏的潜在关系,如上图所示,相比于onehot的输出,teacher网络是将输出的logits进行了softmax,更加平滑的处理了标签,即将数字1输出成了0.6(对1的预测)和0.4(对0的预测)然后输入到student网络中,相比于1来说,这种softmax含有更多的信息。好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。所以蒸馏的目标是让student学习到teacher的泛化能力,理论上得到的结果会比单纯拟合训练数据的student要好。另外,对于分类任务,如果softtargets的熵比hardtargets高,那显然student会学习到更多的信息。最终student模型学习的是teacher模型的泛化能力,而不是"过拟合训练数据”二、动手实践知识蒸馅ModelArts模型市场中的efficientDet目标检测算法目前已经支持知识蒸馏,用户可以通过下面的一个案例,来入门和熟悉知识蒸馏在检测网络中的使用流程。2.1准备数据集数据集使用kaggle公开的ImagesofCanineCoccidiosisParasite的识别任务,下载地址:/kvinicki/canine-coccidiosiso用户下载数据集之后,发布到ModelArts的数据集管理中,同时进行数据集切分,默认按照8:2的比例切分成train

和eval两种。2.2订阅市场算法efficientDet进到模型市场算法界面,找到efficientDet算法,点击“订阅”按钮抽+A.cP-U»物体检Sil-EffkientDet或GPuUlSft抽+A.cP-U»物体检Sil-EffkientDet或GPuUlSft史戒即.看PUIMAl市埼ModeiHubIpylhE■已JIEfit在<€存呈耳然后到算法管理界面,找到已经订阅的efficientDet,点击同步,就可以进行算法训练

华为云技制台MOdelArlS算球理活动可用时间(S)M解习v*SH3EffiW^LO¥J_C5FDarknet53(beteZJ身矣空w>®<?^^aYCiLCv4_C5FDarknEt53(b^ia)4/3C元澎3曷y熟M桂测YOL□网CSPDarkr;eL5310-10都善A7市有工竺罔7至燎分美顷-Mind卯dir也eta)v华为云技制台MOdelArlS算球理活动可用时间(S)M解习v*SH3EffiW^LO¥J_C5FDarknet53(beteZJ身矣空w>®<?^^aYCiLCv4_C5FDarknEt53(b^ia)4/3C元澎3曷y熟M桂测YOL□网CSPDarkr;eL5310-10都善A7市有工竺罔7至燎分美顷-Mind卯dir也eta)vtrci-retina7MEZHA中皿本溪S;申晤耕EtfkiEntDet10361035J167273995胡百巨曲兄心订卸D舟灯MoiielArh华为云社区图5舟灯MoiielArh华为云社区2.3训练student网络模型起一个efficientDet的训练作业,model_name=efficientdet-d0,数据集选用2.1发布的已经切分好的数据集,选择好输出路径,点击创建,具体创建参数如下:华为云社E图6创建student网络的训练作业得到训练的模型精度信息在评估结果界面,如下:图7student模型训练结果华为云社E得到训练的模型精度信息在评估结果界面,如下:图7student模型训练结果可以看到student的模型精度在0.8473。2.4训练teacher网络模型下一步就是训练一个teacher模型,按照efficientDet文档的描述,这里选择efficientdet-d3,同时需要添加一个参数,表明该训练作业生成的模型是用来作为知识蒸馏的teacher模型,新起一个训练作业,具体参数如下:

图8teacher模型训练作业参数得到的模型精度在评估结果一栏,具体如下:配JHUSasKB闵■分在5里®<LIMS0ft»©虾博亡心-・至丑*.部三Tsr胃*j-IE^WSEEftLvAsjftS®^):^..■iSiEJWHH-ijt嫡日屿N#JhHT—a:.|fipt=tt-KlSi™r相GETknil±・CH」fGJbU.DeU竟E!T■任戏海:网rF3三*W*W壬KWiliEfMft用畛加株■WEU网m**=*"J<F*—■十.U图9teacher模型训练结果可以看到teacher的模型精度在0.875。2.5使用知识蒸馏提升student模型精度有了teacher网络,下一步就是进行知识蒸馅了,按照官方文档,需要填写teachermodelurl,具体填写的内容就是2.4训练输出路径下面的model目录,注意需要选到model目录的那一层级,同时需要添加参数use_offline_kd=True,具体模型参数如下所示:

图10采用知识蒸馏的student模型训练作业参数得到模型精度在评估结果一栏,具体如下:配R13Q日可有#白用师神.MM$ISlL^an-SQTlJT*,-9±iSfflM^i-i-:iX:l^-.fia+rO'iflliWl.^09-UM--JI■即堰ff生:社7唯片—】15ls星技垣《m饰24#土*■««3血沁空KH=fiW«L量出耳心.迎3耳由蜘11心,厘F伽HPgiZiW掌丸长比iS图11使用知识蒸馏之后的student模型训练结果可以看到经过知识蒸馏之后的student的模型精度提升到了0.863,精度相比于之前的student网络提升了1.6%百分点。2.6在线推理部署训练之后的模型就可以进行模型部署了,具体点击“创建模型”cJEHl^lfflll-KtSZ■礁H.gng*€+M部却国•ME"C甲MMK邑]郎,Ifi£tS9日W(TeMfEfiEftL-JKifthiMMi!^AJ<AMJE-:■言C;W^liE4fr]|蜘断成1M卒W^bYUmITF-2l>-b4TtfdJb£Flt3mon*虹"Mra初.■hWI.HMiMUeKbH.uirLmrjui.打,tjamjWAu半*云电:了图12创建模型界面会自动读取模型训练的保存路径,点击创建:图13导入模型模型部署成功之后,点击创建在线服务:图14部署在线服务部署成功就可以进行在线预测了:MlstSrt时标£1£13SIFHQECKCirtfi*cou:l!iia"rCKCl矣'华为云扭区图15模型推理结果展示三、知识蒸馏目前的应用领域目前知识蒸偶的算法已经广泛应用到图像语义识别,目标检测等场景中,并且针对不同的研究场景,蒸馅方法都做了部分的定制化修改,同时,在行人检测,人脸识别,姿态检测,图像域迁移,视频检测等方面,知识蒸馅也是作为一种提升模型性能和精度的重要方法,随着深度学习的发展,这种技术也会更加的成熟和稳定。参考文献:DataDistillation:Tow

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论