对知识蒸馏的一些理解

news2024/10/4 12:24:23

知识蒸馏是一种模型压缩技术,它通过从一个大模型(教师模型)中传输知识到一个小模型(学生模型)中来提高学生模型的性能,知识蒸馏也要用到真实的数据集标签。

软损失soft loss就是拿教师模型在蒸馏温度为T的情况下输出的预测标签和学生模型也在蒸馏温度为T的情况下输出的预测标签的交叉熵损失;
硬损失hard loss顾名思义就是很硬和,不太软柔放松,就是直接在蒸馏温度为1(也就是原生的softmax了)下,直接拿真实标签(one-hot编码,[0, 1, 0],是第二个种类)和学生模型也在蒸馏温度为1的情况下输出的预测标签的交叉熵损失。
总损失就是一个软损失和硬损失的加权求和。

一开始有点疑惑,知识蒸馏,大模型训练小模型,可是两者参数都不是一个级别的,为什么结果小模型,也就是student模型还是可以这么厉害?

后面想想我感觉是和大模型,也就是教师模型在蒸馏温度为T下输出的软标签有很大关系。
①:在知识蒸馏中,大模型的输出被视为“软目标”或概率分布,而不是硬标签。这意味着学生模型学习到如何模拟教师模型的不确定性和决策过程,而不仅仅是复制教师模型的硬标签。这种软目标训练可以帮助学生模型更好地泛化。很好理解,不输出真实标签,硬标签one-hot编码,比如:[0, 1, 0],是第二个种类,而输出[0.1, 0.8, 0.1]这样的软标签,这样可以说我结果是第二个种类概率最大,但是也有可能是第一或者第三。
②:并且我认为大模型是有很多无用的冗余参数的,而知识蒸馏可以使学生模型变得更加紧凑,去除一些冗余参数,从而提高模型的计算效率和泛化性能。这种模型简化应该可以弥补参数规模不同的差距。刚好对应了知识蒸馏里的蒸馏二字,类比到化学就是能从很多东西里蒸馏提取出最精华的“蒸馏水”的感觉(感觉比喻有点怪,不过是那个意思)。

下图是蒸馏温度T和softmax的关系。

下图是知识蒸馏的计算流程,一目了然。
下面两图中的教师模型是已经训练好的拥有庞大参数的大模型,见识过很多很多东西。
开始知识蒸馏,训练学生模型。可能会发生神奇的事情:明明训练学生模型的时候,没有让学生模型见过的样本数据(也就是给学生模型中的训练集没有某些样本数据)。通过下面的一通训练操作下来,学生模型这个小模型竟然也可能学习到了原先没有见识过的样本的标签。原因其实是有教师模型在教它嘛,可以理解。

下图是知识蒸馏的架构图

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

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

相关文章

Ai写作创作系统ChatGPT网站源码+图文搭建教程+支持GPT4.0+支持ai绘画(Midjourney)/支持OpenAI GPT全模型+国内AI全模型

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

map 和 set 的一起使用

map 和 set 一起使用的场景其实也蛮多的,最近业务上就遇到了。需求是这样的,一条路径(mpls中的lsp)会申请多个 id,这个 id 是独一无二的。这里很显然就就一个”一对多“的情况,合适用这个容器不保存这些信息…

【Java集合类面试九】、介绍一下HashMap的扩容机制

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:介绍一下HashMap的扩容机…

【Java集合类面试七】、 JDK7和JDK8中的HashMap有什么区别?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:JDK7和JDK8中的HashMap有…

【保姆级教程】:docker搭建MongoDB三节点副本集

容器可以理解为一个进程,镜像是把环境,组件等都配置好,运行成容器的,容器里面运行服务,也可以说是一个进程。镜像是模板,镜像是实例。 一个镜像可以创建多个实例。也就是多个容器,容器之间相互…

【已解决】vue项目之爆红红红红······

我是用npm update更新依赖的时候就开始爆红了... 这里显示是依赖问题,有多种解决方式:1,哪个依赖出问题就去提高或者降低依赖的版本;2,提高或者降低vue-cli的版本。 第一种: 我的报错信息提示eslint这个依…

Linux系统开发(1):IO多路复用

IO即输入输出,是主存和外部设备(磁盘驱动器、终端和网络)之间复制数据的过程。 IO过程 应用程序进程向操作系统发起IO调用请求;操作系统将外部设备的数据加载到内核缓冲区;操作系统将内核缓冲区的数据拷贝到进程缓冲…

Linux:firewalld防火墙-小环境实验(3)

环境介绍 本章为全纯手打,无任何复制,如果哪句命令出错,请评论出来我会快速修改 需求 图中防火墙区域为网关服务器上分区 ,在网站服务器上可以使用默认的或者别的 1)首先关闭全部的服务器的防火墙,实现全…

【GWO-BP预测】基于灰狼算法优化BP神经网络回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

YOLOv5项目实战(1)— 如何去训练模型

前言:Hello大家好,我是小哥谈。YOLOv5基础知识入门系列、YOLOv5源码中的参数超详细解析系列、YOLOv5入门实践系列、YOLOv5论文作图教程系列和YOLOv5算法改进系列学习完成之后,接着就进入YOLOv5项目实战系列了。🎉为了让大家能够牢固地掌握YOLOv5算法,本系列文章就通过一个…

高级二-十进制转换算法

输入二进制数字符串,按二进制数位权重计算,输出十进制数。 (本笔记适合熟悉二进制数和字符串的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程…

Excel多线程导入数据库

文章目录 Excel多线程导入数据库1. CountDownLatch2.多线程导入数据库 Excel多线程导入数据库 书接上文 Excel20w数据5s导入 1. CountDownLatch CountDownLatch 维护了一个计数器,初始值为指定的数量。当一个或多个线程调用 await() 方法时,它们会被阻…

Dapper中使用字符串作为动态参数查询时,结果不是预期的问题

1、如下图,c.industryId作为string类型当作参数传递,解析时会加单引号,即:”c.industryId“, 生成的查询语句就会变成 -- 这里把c.IndustryGroup 当成实际的值所以会查询不出数据 select b.Name,COUNT(c.Id) Num …

驱动作业10.23

现象 test.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include "head.h"in…

潮玩宇宙源码开发:开启全新的数字潮流时代

随着数字技术的飞速发展和人们对于娱乐需求的不断提升&#xff0c;潮玩宇宙源码开发逐渐成为了新的热门话题。潮玩宇宙是一个集潮流、艺术、科技于一体的数字娱乐新领域&#xff0c;通过将虚拟现实、增强现实等技术融入传统玩具设计中&#xff0c;为玩家们带来了全新的互动体验…

从零开始 Spring Cloud 15:多级缓存

从零开始 Spring Cloud 15&#xff1a;多级缓存 多级缓存架构 传统的缓存使用 Redis&#xff0c;大致架构如下&#xff1a; 这个架构存在一些问题&#xff1a; 请求要经过Tomcat处理&#xff0c;Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0c;会对数据库产生冲…

可在耳塞上记录大脑活动的3D打印传感器,未来或可用于诊断神经性疾病

原创 | 文 BFT机器人 加州大学圣地亚哥分校的研究人员探寻到一种方法&#xff0c;可以将日常耳塞变成可以记录大脑内部电活动的高科技设备。通过3D丝网打印的柔性传感器不仅能够检测来自大脑的电生理活动&#xff0c;还能收集人体的汗液乳酸——它是身体在运动和正常代谢活动过…

Risc0:使用Continunations来证明任意EVM交易

1. 引言 RISC Zero&#xff0c;设想了一个基于零知识证明的无限计算的未来。 2023年5月发布了RISC Zero zkVM v0.15版本&#xff0c;其中包含了一种重要feature&#xff1a; continuations。 在RISC Zero zkVM中&#xff0c;continuations为一种机制&#xff1a; 用于将大…

Apollo与TypeScript:强大类型检查在前端开发中的应用

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件

环境: rustdesk编译文件和文件夹 文件程序制作工具 问题描述: 如何制作.exe免安装绿色单文件程序,将源代码打包成可独立运行的exe文件,像官网那种呢? 将下面编译好的rustdesk文件夹制作成一个.exe免安装绿色单文件程序,点击exe就可以运行 在github上找了半天也没有…