知识蒸馏 Knowledge distillation(学习笔记)

news2025/1/20 4:31:50

知识蒸馏概述

蒸馏:把大的 复杂的东西变成小的纯净的东西

在知识蒸馏中 大的模型为 教师模型(teacher)臃肿 集成 牛逼 复杂的

                       小的       为 学生模型(student)小的精干的 轻量化

这里有一个知识的迁移

因为落地实现的终端边缘设备的算计十分有限

所以急需 将一个大的优秀的模型 压缩成一个小巧精干的轻量化 模型

这张图它背后的含义是预训练的大模型的增长速率时很恐怖的 比摩尔定律还大

而我们小设备的算力提升是很受限的,所以这个 知识蒸馏技术 就显得尤为重要

然而目前而言 要想调用大模型的功能 

就把大模型放在云端,通过api来调用(就会面临网络延迟网络的一系列问题)

  

 轻量化技术

1.压缩已经训练好的模型

知识蒸馏 权值量化 剪枝(权重剪枝 通道剪枝(结构化剪枝 非结构化剪枝)) 注意力迁移

2.直接设计训练轻量化网络

3加速卷积运算 (数值运算)

4.硬件部署

NIPS 2014 

Hinton (AI 教父)Jeff Dean(谷歌天才程序员)

如何让教师网络把知识教给学生网络

hard targets      soft targets

马 1                      马 0.7

驴 0                      驴 0.25

汽车 0                 汽车 0.05

hard targets 用来训练教师网络,缺点是不能反映出马和驴的相似之处

而soft targets课传递更多的信息供学生网络学习

 这里的hard targets 更像是死板的教科书

soft targets 就像是老师 能教授更多知识

所以 soft targets 用来训练学生网络

 

而知识蒸馏需要设定一个蒸馏温度 T 

当T= 1 的时候,就是学习普通的softmax 

但是softmax 的信息还不够丰富 曲线不够顺滑 

所以这里引入的蒸馏温度是想让每一个类别的相对大小更加明显

当然这里如果太极端的话 T取得很大 就会导致两极分化非常不明显 甚至有可能就是一条平行于x 轴的直线

这里学生模型想要学习的是没给类别的相对信息

 

知识蒸馏的好处

1.soft label可以防止过拟合

2.泛化性能very good

3.零样本学习(这里可以提及一嘴:没有标签的数据直接放进教师模型来获取标签。之后直接让学生模型去学习soft loss即可妈祖无监督训练需求)

4.学生模型是一个轻量化的网络

知识蒸馏的应用场景

1.模型压缩

2.优化训练 防止过拟合(潜在的正则化)

3.无限大的无监督数据集的数据挖掘

4.少样本 0样本的学习

这里给出迁移学习 知识蒸馏区别

迁移学习只是 domain领域知识的泛华  从猫狗分类到 x 光医学的分类

知识蒸馏 是模型到 模型的 从一个复杂 臃肿的 大模型 到一个小巧精干的 小模型完成轻量化的蜕变

知识蒸馏背后的机理

 

label smoothing 和 soft targets的区别

 

知识蒸馏的研究方向

1.教学相长 T-S S-T

2.助教 多个老师 多个学生 

3.知识的表示 (中间的featuremap(feature based) 或者是最原始的 softmax(response based) )

4.多模态(视觉语音文本)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相关性模型与回归模型(例题代码)

一、相关性模型(SPSS) 相关性模型涉及到两种最为常用的相关系数: 皮尔逊person相关系数斯皮尔曼spearman等级相关系数 1、皮尔逊相关系数 相关性可视化 总结: 1.如果两个变量本身就是线性的关系,那么皮尔逊相关系…

儿子小伟再婚,新儿媳紧锁眉头,农民歌唱家大衣哥有些过分了

虽然都知道大衣哥儿子小伟结婚,这一天早晚都要到来,但是却没有想到来得那么快,大衣哥儿子小伟的婚礼,在悄无声息中结束了。说起大衣哥儿子小伟,这已经不是第一次结婚了,因为结过婚有经验,这一次…

Linux CFS调度器之pick_next_task函数

文章目录前言一、pick_next_task二、pick_next_task_fair参考资料前言 在内核执行__schedule函数,进程任务切换的时候,__schedule函数函数会调用pick_next_task让调度器从就绪队列中选择最合适的一个进程运行,如下所示: static …

Nerdctl 原生支持 Nydus 加速镜像

文|李楠(GitHub ID : loheagn) 北京航空航天大学 21 级研究生 云原生底层系统的开发和探索工作。 本文 6369 字 阅读 16 分钟 OSPP 开源之夏是由中科院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动。旨在鼓励在…

关于whl,你想知道的

一、whl是什么?whl文件时以wheel格式保存的python安装包,Wheel是Python发行版的标准内置包格式。WHL文件包含Python安装的所有文件和元数据,其中还包括所使用的Wheel版本和打包的规范。WHL文件使用Zip压缩进行压缩,实际上也是一种…

二、TCO/IP---Ethernet和IP协议

TCP/ip协议栈 OSI模型TCP/IP协议栈应用层,表示层,会话层应用层传输层主机到主机层(传输层)网络层网络层数据链路层,物理层网络接入层 Ethernet协议 以太网,实现链路层的数据传输和地址封装(MA…

【Qt】Qt中的拖放操作实现——拖放文件以及自定义拖放操作

文章目录Qt的拖放操作使用拖放打开文件自定义拖放操作文章参考《Qt Creator快速入门(第三版)》。 Qt的拖放操作 拖放操作分为拖动Drag和放下Drop,Qt提供了强大的拖放机制,可在帮助文档中通过Drag and Drop关键字查看。 在Qt中&a…

ArcGIS基础实验操作100例--实验78按栅格分区统计路网

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验78 按栅格分区统计路网 目录 一、实验背景 二、实验数据 三、实验步骤 (…

【数据结构】队列详解

前言 前面我们学习了一种数据结构:栈,栈是一种只允许在一端尽进行插入删除的数据结构,而今天我们将学习另一种数据结构:队列,队列是一种支持在一端进行插入,在另一端进行删除的数据结构。 一、队列的介绍…

PHP反序列化字符串逃逸

PHP反序列化字符串逃逸 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录PHP反序列化字符串逃逸前言一、关于反序列化和序列化二、[0ctf 2016]unserialize二、prize_p5[NSSCTF]前言 例如:最近日常刷题玩…

常用的传输码介绍

文章目录前导知识1.AMI码2.HDB3码3.PST码4.数字双相码5.CMI码6.nBmB码前导知识 在介绍常用的传输码之前,先简单介绍一下直流分量。 信号的直流分量就是信号的平均值,它是一个与时间无关的常数,直流分量的数学公式表示为: 判断有…

基于轻量级YOLOv5+Transformer的汽车车损检测识别分析系统

将传统NLP领域提出来的Transformer技术与yolo目标检测模型融合已经成为一种经典的做法,早在之前的很多论文里面就有这种组合应用的出现了,本文主要是借鉴前文的思路,开发基于yolov5transformer的汽车车损检测识别模型,首先看下效果…

光流相关总结

基于图像亮度恒定假设, 图像亮度:I(x⃗,t)I(\vec x, t)I(x,t), 其中x⃗[x,y]\vec x[x,y]x[x,y],那么亮度恒定假设: I(x⃗,t)I(x⃗δx⃗,tδt)(1)I(\vec x,t)I(\vec x \delta \vec x, t \delta t) (1)I(x,t)I(xδx,tδt)(1) 对上式…

2022年值得记录的一年,事与愿违的一年

年初带着对生活的不满、怀才不遇的傲慢; 愿即将到来的30岁不留遗憾; 你放下所有去追求向往的样子; 那时所有的空气都是清新的,即使它满是灰尘; 不再年少的你依然充满新奇; 用尽力气把自己钉在那个不属…

前端与后端的技术通性

一、后端的JDK相当于前端的Node.js, 后端的JVM相当于前端的V8引擎【作用示例图,如下所示】 【Nodejs、JDK分别是前后端的运行环境】 二、后端的Maven(基于项目对象模型-Project Object Model-POM的项目管理机制)相当于前端的npm(n…

FlinkCDC

目录1、CDC 简介1.1、什么是CDC1.2、CDC的种类1.3、Flink-CDC2、Flink CDC 网址3、运行原理5、简要安装6、开发案例7、扩展1、CDC 简介 1.1、什么是CDC CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动…

js实现网页特效

文章目录一、元素偏移量offest系列🥇offset与style的区别🎓案例1🦹🏽‍♂️案例2🐼案例3二、元素可视区client系列三、元素滚动scroll系列🏂🏿案例4:🔭补充 mouseenter事…

大数据分析案例-基于KNN算法对茅台股票进行预测

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

一个精美的主界面窗口功能的设计和实现原来如此简单,万字肝爆

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏 玩归玩闹归闹,别拿java开玩笑 —————————————————— ⭐相关文章⭐ -通过窗口看…

数据结构与算法:栈和队列的学习

1.栈 1.栈的定义 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&am…