知识蒸馏实战代码教学一(原理部分)

这篇具有很好参考价值的文章主要介绍了知识蒸馏实战代码教学一(原理部分)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、知识蒸馏的来源

        知识蒸馏(Knowledge Distillation)源自于一篇由Hinton等人于2015年提出的论文《Distilling the Knowledge in a Neural Network》。这个方法旨在将一个大型、复杂的模型的知识(通常称为教师模型)转移到一个小型、简化的模型(通常称为学生模型)中。通过这种方式,学生模型可以获得与教师模型相似的性能,同时具有更小的模型体积和计算资源需求。

二、知识蒸馏的原理

        知识蒸馏的核心思想是利用教师模型的输出作为附加的监督信号来训练学生模型。在传统的监督学习中,目标是最小化模型预测与真实标签之间的差距(损失函数)。而在知识蒸馏中,除了最小化模型预测与真实标签之间的差距外,还引入了一个额外的损失项,该项衡量了学生模型预测与教师模型预测之间的距离。

        具体而言,损失函数通常由两部分组成:一部分是传统的交叉熵损失,用于衡量学生模型的预测与真实标签之间的差距;另一部分是知识蒸馏损失,用于衡量学生模型的预测与教师模型的预测之间的差距。知识蒸馏损失通常使用一些形式的距离度量来计算,例如平方误差损失或者交叉熵损失。

        在蒸馏求loss时候,需要采用蒸馏函数,这个函数就是把softmax函数在计算时候,预测出来的结果Z进行除以温度T,进行求解后验概率。下面是修改后的softmax函数,也就是蒸馏函数。

知识蒸馏实战代码教学一(原理部分),深度学习,机器学习,人工智能,知识蒸馏

        T表示蒸馏的温度,T=1时即为softmax。

知识蒸馏实战代码教学一(原理部分),深度学习,机器学习,人工智能,知识蒸馏

知识蒸馏实战代码教学一(原理部分),深度学习,机器学习,人工智能,知识蒸馏

        上述两张图就是知识蒸馏模型的全过程。下面小编用通俗的语言来解释一下具体如何实现的。

具体过程:

        (1)首先我们要先训练出较大模型既teacher模型。(在图中没有出现)

        (2)再对teacher模型进行蒸馏,此时我们已经有一个训练好的teacher模型,所以我们能很容易知道teacher模型输入特征x之后,预测出来的结果teacher_preds标签。

        (3)此时,求到老师预测结果之后,我们需要求解学生在训练过程中的每一次结果student_preds标签。

        (4)先求hard_loss,也就是学生模型的预测student_preds与真实标签targets之间的损失。

        (5)再求soft_loss,也就是学生模型的预测student_preds与教师模型teacher_preds的预测之间的损失。

        (6)求出hard_loss与soft_loss之后,求和总loss=a*hard_loss + (1-a)soft_loss,a是一个自己设置的权重参数,我在代码中设置为a=0.3。

        (7)最后反向传播继续迭代。

三、知识蒸馏的作用

        (1)模型压缩和加速:知识蒸馏可以将大型的复杂模型(如深度神经网络)转换成小型的简化模型,从而减少了模型的存储空间和计算资源需求,使得模型更适合在资源受限的设备上部署和运行,如移动设备或嵌入式系统。

       (2) 迁移学习和模型微调:通过知识蒸馏,可以将一个在大规模数据集上训练的模型的知识迁移到一个相似但规模较小的模型上,这有助于在资源受限的情况下进行迁移学习或模型微调。

       (3)提高模型泛化性能:知识蒸馏还可以帮助提高模型的泛化性能,因为学生模型在训练过程中利用了教师模型的“软标签”,这些软标签包含了教师模型对数据分布的更丰富的信息,有助于减少过拟合。

四、代码实战部分

        最后的代码实战部分,小编另外一章博客来讲述。

        博客地址:知识蒸馏实战代码教学二(代码实战部分)-CSDN博客文章来源地址https://www.toymoban.com/news/detail-830680.html

到了这里,关于知识蒸馏实战代码教学一(原理部分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python人工智能教学之掌握机器学习深度学习并提升实战能力(共72个视频教学+课程资料)云盘下载

    人工智能是未来的发展方向,掌握了人工智能,就掌握了钱图。。。 Python人工智能教学之掌握机器学习深度学习并提升实战能力(共72个视频教学+课程资料) 下载地址: 链接:https://pan.baidu.com/s/1ryJd5PNx1tLDDU-Q6JFXPQ?pwd=n6o8 提取码:n6o8 --来自百度网盘超级会员V2的分享 └─ 批

    2024年04月29日
    浏览(60)
  • 【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述

            模型部署优化这个方向其实比较宽泛。从模型完成训练,到最终将模型部署到实际硬件上,整个流程中会涉及到很多不同层面的工作,每一个环节对技术点的要求也不尽相同。但本质的工作无疑是通过减小模型大小,提高推理速度等,使得模型能够成功部署在各个硬

    2024年01月23日
    浏览(52)
  • 一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理

    知识蒸馏就是把一个大的教师模型的知识萃取出来,把他浓缩到一个小的学生模型,可以理解为一个大的教师神经网络把他的知识教给小的学生网络,这里有一个知识的迁移过程,从教师网络迁移到了学生网络身上,教师网络一般是比较臃肿,所以教师网络把知识教给学生网

    2024年02月04日
    浏览(44)
  • yolov5剪枝与知识蒸馏【附代码】

    剪枝和知识蒸馏均属于模型轻量化设计,剪枝是将已有网络通过剪枝的手段得到轻量化网络,可分为 非结构化剪枝 和 结构化剪 ,该技术 可以免去人为设计轻量网络 ,而是通过计算各个权重或者通道的贡献度大小,剪去贡献度小的权重或通道,再 经过微调训练恢复精度 ,

    2024年02月05日
    浏览(76)
  • Reid strong baseline知识蒸馏【附代码】

    本项目是在Reid strong baseline基础上进行的更新,实现的知识蒸馏。项目暂未加入目标检测部分,后期会不定时更新,请持续关注。 本项目Reid所用数据集为Markt1501,支持Resnet系列作为训练的baseline网络。训练采用 表征学习+度量学习 的方式,蒸馏 特征蒸馏 【暂未更新逻辑蒸馏

    2024年02月07日
    浏览(74)
  • 知识蒸馏学习记录

    最近在学习降噪处理不良天气的算法过程中,接触到了知识蒸馏,该算法作为一个深度学习通用算法,不仅广泛应用在自然语言处理方面,在计算机视觉等领域也广受追捧。 简单来说,知识蒸馏就是将一个大的教师网络萃取到一个小的学生网络中,即完成一个知识迁移的过程

    2024年02月11日
    浏览(37)
  • 知识蒸馏学习

    知识蒸馏 ----教师和学生模型:将已训练完善的模型作为教师模型,通过控制“温度”从模型的输出结果中“蒸馏”出“知识”用于学生模型的训练,并希望轻量级的学生模型能够学到教师模型的“知识”,达到和教师模型相同的表现。 本质上属于 迁移学习 优点: 1.节省成

    2024年02月09日
    浏览(36)
  • ChatGPT原理——————深度学习入门知识

    随着ChatGPT的爆火,ChatGPT的原理 ————深度学习这门技术也越来越被人们所重视。很多人都开启了学习深度学习的路程程,本文将详细介绍深度学习的知识。 定义:深度学习是机器学习的一种,它利用包含多层结构的神经网络模型来建模和解决复杂的问题。深度学习模型可

    2023年04月24日
    浏览(50)
  • 通俗易懂的知识蒸馏 Knowledge Distillation(下)——代码实践(附详细注释)

    第一步:导入所需要的包 第二步:定义教师模型 教师模型网络结构(此处仅举一个例子):卷积层-卷积层-dropout-dropout-全连接层-全连接层 第三步:定义训练教师模型方法 正常的定义一个神经网络模型 第四步:定义教师模型测试方法 正常的定义一个神经网络模型 第五步:

    2024年02月12日
    浏览(42)
  • 机器学习——python训练CNN模型实战(傻瓜式教学,小学生都可以学会)代码开源

    ​ 第一章 python训练线性模型实战 第二章 python训练决策树模型实战 第三章 python训练神经网络模型实战 第四章 python训练支持向量机模型实战 第五章 python训练贝叶斯分类器模型实战 第六章 python训练集成学习模型实战 第七章 python训练聚类模型实战 第八章 python训练KNN模

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包