知识蒸馏的说明

news2024/11/29 2:28:01

本文参考:

ChatGPT 温度系数t与top-p, 超参怎么设置最优? - 知乎

 知识蒸馏系列(一):三类基础蒸馏算法_OpenMMLab的博客-CSDN博客

知识蒸馏算法汇总 - 知乎

知识蒸馏__Old_Summer的博客-CSDN博客 

目录

1、 ChatGPT温度系数temperature

 2、蒸馏概述

3、Response-based KD

4、为什么要“平滑标签”


1、 ChatGPT温度系数temperature

chatgpt生成文字序列是随机的。在模型生成最终序列的过程中,总过涉及到两个环节,分别是模型预测以及解码策略

举个例子:

假设输入为"汤姆猫喜欢",模型预测后续的字,根据语言模型P(y | x= 汤姆猫喜欢),先由模型预测下一个字是什么,且对应概率为多少,会产生N个候选序列,最后根据不同的解码策略(如贪心策略、BeamSearch等)解码出最优的序列进行输出。

 这其中温度系数temperature影响的就是模型预测的字符概率。

以Softmax函数说明,添加温度系数T的形式如下:

 当T趋于无穷大时,将趋于1,输出概率分布将趋于均匀分布,概率为1/K,此时信息不确定非常大,即信息量很大,即信息熵是最大的。

反过来,T趋于0时, 假如m为正确的序号,j为非正常的序号,则zj - zm小于0,此时当T趋近于0时,趋于0-。那么正确类别的概率接近1,输出结果就是确定的,信息熵为0,softmax的效果与argmax差不多。

 所以,温度系数T越大则输出越平滑,结果越不确定;T越小则越确定

 2、蒸馏概述

知识蒸馏(Knowledge Distillation,简称KD)是一种经典的模型压缩方法,核心思想是通过引导轻量化的学生模型“模仿”性能更好、结构更复杂的教师模型,在不改变学生模型结构的情况下提高其性能。

简单来说就是:轻量化模型达到复杂模型的一种压缩优化方案。

对比其他的模型压缩方法,参数裁剪、精度转换、神经网络结构搜索这些模型压缩方法会破坏原模型的结构,也就是会损坏原模型从数据中学习到的知识,而知识蒸馏通过蒸馏的手段保护原模型中学习到的知识,然后将这些知识迁移到压缩模型中,使压缩模型虽然相比原模型体积要小的多,但是也可以学习到相同的知识。

目前比较流行的三类蒸馏方法:

relation-based knowledge

feature-based knowledge

response-based knowledge

3、Response-based KD

 如上图所示,Response-based KD算法以教师模型的分类预测结果为“目标知识”,这里的分类预测结果指的是分类器最后一个全连接层的输出(称为logits,而非softmax之后的输出)。

与模型的最终输出相比,logits没有经过softmax进行归一化,非目标类别对应的输出值尚未被抑制。

在得到教师和学生的logits后,使用温度系数T分别对教师和学生的logits进行“平滑”,进而计算两个softmax之间的差异,具体的loss计算公式为:

其中z为logits,zi为logits中第i个类别的对应值,损失函数L一般使用KL散度计算差异。T一般取大于1的整数值,此时目标类与非目标类的预测值差异减小,logits被“平滑”。相反地,T小于1时会进一步拉大目标类与非目标类的数值差异,logits趋向于argmax(onehot)。

4、为什么要“平滑标签”

假设我们现在的任务是利用神经网络识别1~5的手写体数字图片,也就是将一张手写体数字图片输入到神经网络中,神经网络要判断出这张图片中的数字究竟是几。

假设我们将数字2的手写体图片输入到神经网络中,神经网络输出了A=,我们称A为Logits,然后我们会将Logits输入到SoftMax层,将Logits中的数字都转换为概率。

假设转换完后的值为B=[0.0001, 0.8, 0.1, 0.0002, 0.0997],然后我们一般的做法是取概率值最大的那个类别作为识别的结果,也就是我们取0.8对应的类别'2'作为识别的结果输出。

但是如果我们仔细思考,其实虽然0.0001这个概率值小到可以忽略,但是它也传递着神经网络学习到的知识:数字2以0.0001的概率和数字1很像。所以我们应该利用这些知识。

但是这些数字的大小相差太大,得先想办法在不改变它们原有分布得情况下,改变这些数值得大小,使其具有可比性。Hinton在这里引入了一个称为"温度"的参数,对Logits进行平滑处理,知识蒸馏这个词语也是来自于这个过程。

 当T趋于很大时,所有的概率值也会趋向于相等,也就是高温会抹掉原先因为数值大小不同而产生的差别。

 

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

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

相关文章

一文弄懂mysql事务

首先,什么是事务呢? 事务就是由单独单元的一个或多个sql语句组成, 在这个单元中, 每个sql的语句都是相互依赖的, 而整个单独单元作为一个不可分割的整体存在, 类似于物理当中的原子(一种不可分割的最小单位) 通俗的来讲就是, 事务就是一个整体, 里面的内容要么都执行成功, 要…

大学生找工作的个人简历模板(合集)

大学生找工作的个人简历模板1 个人基本简历 姓名:-国籍:中国 目前所在地:__ 民族:汉族 户口所在地:__ 身材: 婚姻状况:未婚年龄:__岁 培训认证:诚信徽章: 求职…

swagger 入门指南

1. 写在最前面 最近在负责的服务,出现了客户接二连三的投诉 api 参数难以理解的问题。本着从「根本上解决问题」的思路,笔者思考了以下方案: 简化难以理解的参数,重新设计一版 api 优化 api 文档,更易于用户理解 1…

代码随想录算法训练营第四十一天| 343. 整数拆分、96.不同的二叉搜索树

整数拆分 题目链接:力扣 确定dp数组(dp table)以及下标的含义 dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。确定递推公式 然后有两种渠道得到dp[i]: 一个是j * (i - j) 直接相乘。 一个是j * d…

unit4

目录 carpenterovertakeremainderobjectivepasturedespitegulfshepherdinteriorchorusoppressgrinprofessionalresistantfosterleapembarkneutralelasticcirculateintimidatechopprimarystirappraisallayoutsurvivalentertainmoanlocatepublishpacehearingexplosivecricketvolt…

stable-diffusion-webui 快捷安装教程

简介 stable-diffusion-webui 是一个用来装载Stable Diffusion 模型的网页,可以方便的调用模型生成图片。 stable-diffusion-webui的github地址为:https://github.com/AUTOMATIC1111/stable-diffusion-webui 这个库的依赖很多,虽然代码里面有…

NUCLEO-F411RE RT-Thread 体验 (1) - GCC环境 RT-Thread 的移植

NUCLEO-F411RE RT-Thread 体验 (1) - GCC环境 RT-Thread 的移植 1、准备工作 a、用stm32cubemx新建一个工程。 时钟配置 st-link提供8M的mco输出,所以配置hse 8m,sysclk最高100M,设置如下: 配置LED 连接pa5,设…

机器学习-进化算法

进化算法 遗传算法(Genetic Algorithm,GA)crossovermutation 进化策略(Evolutionary Strategies,ES)基因编程(Genetic Programming)Multi-objective Evolutionary Algorithms 遗传算…

certbot 申请免费SSL证书、自动续期

简介 Certbot是一个免费、开源的软件,是Let’s Encrypt的客户端,Let’s Encrypt是证书颁发机构,它们之间使用ACME协议通信,Certbot是Lets Encrypt众多客户端的其中之一,Let’s Encrypt官网推荐CertBot,它能…

AIGC:关于人工智能的那些事

文章目录 前言人工智能发展史起步阶段:20世纪50年代至70年代知识工程阶段:20世纪80年代至90年代数据驱动阶段:2000年至今 人工智能包括哪些技术学习人工智能需要掌握的知识如何开发一个人工智能系统如何开发一个人脸识别系统人工智能未来发展…

mysql密码登录失败、服务启动失败和1045-Access denied for user ‘root‘@‘localhost‘

一、问题: 1.打开 navicate,双击localhost_3306,出现报错2002 - Can’t connect to server on ‘localhost’(10061) 2.查看mysql是否启动 控制面板——管理工具——服务 找到mysql服务,发现无法启动。 3.winR运行cmd&#xf…

windows install pandoc

文章目录 下载安装测试使用 下载 https://github.com/jgm/pandoc/releases 安装 pandoc-3.1.3-windows-x86_64.msi 直接双击一路默认即可。 但安装后并没有得到该命令,我们需要配置环境变量,找到安装的命令位置 C:\Users\XH\AppData\Local\Pandoc\p…

驱动多文件编译和驱动命令行传参

目录 1. 驱动的多文件编译 1.1. 准备两个文件 1.2. 修改Makefile文件 1.3. 执行Make命令生成.ko文件 2. 驱动模块传递参数 2.1. 传递一个参数 2.1.1. 函数原型分析 2.1.2. 撰写.c文件 2.1.3. 撰写makefile 2.1.4. 编译makefile并验证 2.2. 传递多个参数并使用modeinf…

线程的创建和使用(二)

1、线程的类和方法 Thread类是JVM用来管理线程的一个类,换句话说,每个线程都有唯一一个的Thread对象与之关联。 1.1、Thread的常见方法 方法说明Thread()创建线程对象Thread(Runnable target)使用Runnable对象创建线程对象Thread(String name)创建线程…

【SpringCloud-5】gateway网关

网关是干啥用的就不用再说了。 sringcloud中的网关,第一代是zuul,但是性能比较差(1.x是阻塞式的,2.x是基于Netty的),然后有了第二代GateWay,基于Reactor模型 异步非阻塞。 springcloud网关就是一…

经理的工作岗位职责描述10篇

经理的工作岗位职责描述(篇1) 1、销售工具的开发和制作 2、负责各类媒体、渠道的软文撰写,产品信息推广; 3、筹办重点客户,潜在客户的讲座论坛会议; 4、市场推广活动:展会seminar oadshow等活动 5、产品上市沟通&#…

IIC协议通信解析,内附完整代码。

一:硬件接口 1.1:功能引脚 1.2:IIC总线通信注意事项 二:通信协议 (1)空闲状态: (2)起始位: (3)有效数据位 (4&#x…

最近跳槽,压力真大...

前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎…

【玩转Docker小鲸鱼叭】MacOS系统配置Docker镜像加速器

当我们通过 docker pull拉取镜像时,如果不指定仓库,默认从 Docker Hub (docker.io)获取镜像,而国内用户访问Docker Hub仓库时,通常速度很忙,经常超时导致拉取镜像失败,所以通常要通过…

上海亚商投顾:沪指震荡调整 CPO概念股持续大涨

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指今日震荡调整,保险等权重板块走低,上证50跌超1.5%,创业板指较为抗跌。CPO、…