全网最细图解知识蒸馏(涉及知识点:知识蒸馏训练过程,推理过程,蒸馏温度,蒸馏损失函数)

一.是什么?

把一个大的模型(定义为教师模型)萃取,蒸馏,把它浓缩到小的模型(定义为学生模型)。

即:大的神经网络把他的知识教给了小的神经网络。

在这里插入图片描述

二.为什么要用知识蒸馏把大模型学习到的东西迁移到小模型呢呢?

因为大的模型很臃肿,而真正落地的终端算力有限,比如手表,安防终端。
所以要把大模型变成小模型,把小模型部署到终端上。

在这里插入图片描述

2.1 轻量化网络的方向

分为下面四个方向,知识蒸馏是第一个方向。

在这里插入图片描述

三.用蒸馏温度处理学生网络的标签

学生网络的输入是教师网络的输出

3.1 soft target

soft target使我们常用的概率版的标签值。比如输入下面的图片预测。
在这里插入图片描述
hard targets和soft targets的预测概率如下:
在这里插入图片描述
hard targets的预测结果不科学,因为马和驴比马和汽车相似的多。所以驴和汽车都是0,没有表现出这个信息,所以要用soft targets.

3.2 用教师网络预测出的soft target作为学生网络的标签。

教师网络预测出的soft target具有很多信息。

3.3 蒸馏温度

softmax有放大差异的功能。
如果值高那么一点点,经过softmax的放大就会变得很高。
如果想让soft target更加平缓,高的降低,低的升高。
这时就要对soft target使用蒸馏温度。 让soft target更soft。
实现方法是在softmax的分母处加个T。

在这里插入图片描述

效果如下:T=1时相当于没有蒸馏温度。T=3时确实低的更低高的更高了。

在这里插入图片描述
在这里插入图片描述

T和分布的关系如下图,T从1增加到10,值之间的差异越来越小,softmax的放大效果被冲淡。
当T=100的时候,结果直接变成一个横线,众生平等。

在这里插入图片描述

四.知识蒸馏训练过程

4.1 图示知识蒸馏训练过程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

上面是已经训练好的教师网络。
把数据输入到教师网络,在输出时使用蒸馏温度为T的softmax.
再把数据输入到学生网络,学生网络可能是还没有训练的网络,也可能是训练一半的半成品网络。  

4.2 损失函数

学生网络既要在蒸馏温度等于T时与教师网络的结果相接近。
也要保证不使用蒸馏温度时的结果与真实结果相接近。

蒸馏损失:

把教师网络使用蒸馏温度为t的输出结果 与 学生网络蒸馏温度为t的输出结果做损失。
让这个损失越小越好。

学生损失:

学生网络蒸馏温度为1(即不使用蒸馏网络)时的预测结果和真实的标签做loss.

最后对这两项加权求和。

4.3 图解损失函数计算过程

红色线条指向的是学生损失。
紫色线条指向的是蒸馏损失。

在这里插入图片描述

五.推理过程

此时学生网络已经训练好,把X输入到学生网络得到结果。
在这里插入图片描述

六.最终效果:

学生网络可以接近教师网络的识别效果,并且附加如下两个特点:

1.零样本识别

论文里面说:以手写体数字数据集为例,假如在训练学生网络时把标签为3的类别全部去掉,
但是教师网络学过3。当使用知识蒸馏将教师网络学到的东西迁移到学生网络时,学生网络虽然没有见过3,但是却能识别3,即达到了零样本的效果。

2.使用soft target训练而不是hard target,减少了过拟合

在这里插入图片描述

第二行和第三行是使用百分之3的训练样本并分别用hard target和soft target,结果显示

使用3%的训练样本 + hard target :
训练集的准确率为 67.3%, 测试集的准确率为44.5%
使用3%的训练样本 + soft target :
训练集的准确率为 65.4%, 测试集的准确率为57.5%

七.迁移学习和知识蒸馏的区别

迁移学习是把一个模型学习的领域泛化到另一个领域,比如把猫狗这些动物域迁移到医疗域。
知识蒸馏是把一个模型的知识迁移到另一个模型上。

八.参考视频

B站UP主,同济子豪兄的视频:
【精读AI论文】知识蒸馏
https://www.bilibili.com/video/BV1gS4y1k7vj/?spm_id_from=333.788&vd_source=ebc47f36e62b223817b8e0edff181613

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/202984.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

需求不明确的情况下,测试该如何处理?

当需求不明确的情况下,测试团队可以采取以下措施来处理: 1. 与项目团队进行沟通:测试团队应与项目团队密切合作,与业务分析师、产品经理等相关人员进行沟通,以获取更多的需求细节和背景信息。通过与相关方的交流&…

力扣日记11.30-【二叉树篇】平衡二叉树

力扣日记:【二叉树篇】平衡二叉树 日期:2023.11.30 参考:代码随想录、力扣 110. 平衡二叉树 题目描述 难度:简单 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为&#…

JVM——产生内存溢出原因

目录 1.产生内存溢出原因一 :代码中的内存泄漏1.案例1:equals()和hashCode()导致的内存泄漏问题:**正常情况**:**异常情况:**解决方案: 2.案例2:内部类引用外部类问题:解决方案&…

深度学习-模型调试经验总结

1、 这句话的意思是:期望张量的后端处理是在cpu上,但是实际是在cuda上。排查代码发现,数据还在cpu上,但是模型已经转到cuda上,所以可以通过把数据转到cuda上解决。 解决代码: tensor.to("cuda")…

奇葩问题:arp缓存、ip地址冲突(实际是ip地址被占用导致arp缓存出现问题)

文章目录 今天遇到个奇葩的问题 今天遇到个奇葩的问题 今天遇到个奇葩的问题,我把我们192.168.1.116的盒子ip改成192.168.2.116后,再改回来,发现我们盒子的http服务始终无法访问,用Advanced IP Scanner扫描一下,发现就…

Python with提前退出:坑与解决方案

Python with提前退出:坑与解决方案 问题的起源 早些时候使用with实现了一版全局进程锁,希望实现以下效果: Python with提前退出:坑与解决方案 全局进程锁本身不用多说,大部分都依靠外部的缓存来实现的,r…

安全技术与防火墙

目录 安全技术 防火墙 按保护范围划分: 按实现方式划分: 按网络协议划分. 数据包 四表五链 规则链 默认包括5种规则链 规则表 默认包括4个规则表 四表 查询 格式: 规则 面试题 NFS常见故障解决方法 安全技术 入侵检测系统 (Intrusion Detection Sy…

java深浅拷贝

对于Java拷贝的理解 在java语言中,当我们需要拷贝一个对象的时候,常见的会有两种方式的拷贝:深拷贝和浅拷贝。 浅拷贝 只是拷贝了原对象的地址,所以原对象的任何值发生改变的时候,拷贝对象的值也会随之而发生变化。 拿…

ESP32-Web-Server编程- 使用SSE 实时更新设备信息

ESP32-Web-Server编程- 使用SSE 实时更新设备信息 概述 如前所述,传统 HTTP 通信协议基于 Request-Apply(请求-响应)机制,浏览器(客户端)只能单向地向服务器发起请求,服务器无法主动向浏览器推…

数据链路层之组装成帧和透明传输

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

接口测试之测试原则、测试用例、测试流程......

一、接口的介绍 软件测试中,常说的接口有两种:图形用户接口(GUI,人与程序的接口)、应用程序编程接口(API)。 接口(API)是系统与系统之间,模块与模块之间或者…

LeetCode(42)有效的字母异位词【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 有效的字母异位词 1.题目 给定两个字符串 *s* 和 *t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。 **注意:**若 *s* 和 *t* 中每个字符出现的次数都相同,则称 *s* 和 *t* 互为字…

Vue3.x 中 hooks 函数封装和使用

一、hooks 是什么 vue3 中的 hooks 就是函数的一种写法,就是将文件的一些单独功能的 js 代码进行抽离出来进行封装使用。 它的主要作用是 Vue3 借鉴了 React 的一种机制,用于在函数组件中共享状态逻辑和副作用,从而实现代码的可复用性。 注…

ChatGPT人工智能对话系统源码 附完整的搭建教程

人工智能技术的快速发展,对话系统成为了人们与计算机交互的重要方式之一。ChatGPT是一种基于深度学习的大型语言模型,其源码系统可以用于构建各种自然语言处理应用,如聊天机器人、智能客服、语音助手等。 以下是部分代码示例: 系…

41万+账号在抖音卖房获客,如何从中脱颖而出?

随着隔离经济时代的到来,许多传统行业都无法更精准地触达潜在客户,房地产行业也不例外。派单、扫楼、电话等方式已是“地狱级”获客难度,户外、APP广告位也因经费问题陷入困境。 面对营销难,数字化营销是目前很多房企积极探索的新…

【Pytorch】Visualization of Feature Maps(4)——Saliency Maps

学习参考来自 Saliency Maps的原理与简单实现(使用Pytorch实现)https://github.com/wmn7/ML_Practice/tree/master/2019_07_08/Saliency%20Maps Saliency Maps 原理 《Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps》&…

Latex中多行公式换行及设置编号位置

Latex中多行公式换行及设置编号位置_latex公式换行_泡泡和善意的博客-CSDN博客文章浏览阅读3.2w次,点赞14次,收藏97次。1. 公式换行公式换行的方式有很多种,介绍三种(1)用equation结合aligned:\begin{equat…

springmvc(基础学习整合)

SpringMVC是Spring框架提供的构建Web应用程序的全功能MVC模块。 在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。 springMVC基本介绍: http://t.csdnimg.cn/TOzw9 MVC是一种设计思想,将一个应…

Web端专业级H264/H265 直播流播放器实现-JessibucaPro播放器

概况 这个主要是参加“深圳 liveVideoStack” 的ppt的文字版的分享。 深圳 liveVideoStack 讲师介绍 关于Jessibuca 官网地址:jessibuca.comDemo: DemoDoc:DocGithub地址:Github 关于JessibucaPro 地址:JessibucaProDemo: …

Retrofit中的注解

一、Retrofit中的注解有那些? 方法注解:GET ,POST,PUT,DELETE,PATH,HEAD,OPTIONS,HTTP标记注解:FormUrlEncoded,Multpart,Streaming参数注解:Query,QueryMap,Body,Field…