知识蒸馏的说明

2023-11-02

本文参考:

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趋于很大时,所有的概率值也会趋向于相等,也就是高温会抹掉原先因为数值大小不同而产生的差别。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

知识蒸馏的说明 的相关文章

随机推荐

  • Deep learning:三十五(用NN实现数据降维练习)

    前言 本文是针对上篇博文Deep learning 三十四 用NN实现数据的降维 的练习部分 也就是Hition大牛science文章reducing the dimensionality of data with neural netwo
  • 证书报错NET::ERR_CERT_AUTHORITY_INVALID

    因为百度的证书安装路径出错 导致每次打开百度都会报错 NET ERR CERT AUTHORITY INVALID 错误的证书认证 无效证书 报这个错误无非两种情况 证书安装错误 证书过期或有问题 1 证书过期 通过certmgr msc
  • WEB 前端面试题 (实战)(大全)

    文章目录 原生JS 1 什么是 JavaScript 2 简单介绍一下 JS 基本类型 3 字符串如何转换成布尔类型 4 数值类型是如何转换布尔类型 5 字符串是如何转换成数值的 6 都了解过哪些运算符 7 和 运算符区别是什么 8 给变量
  • FTP网盘小demo

    服务端 include
  • JDK1.8接口的默认实现

    很多时候 别人问我接口和类的区别的时候 我都会回答接口里面只能有抽象方法 而不能够有具体方法 但是今天看Mybatis源码的时候 发现了有一段代码是判断接口里面的默认方法的 于是我发现原来对接口的认识太过于肤浅了 JDK1 8之后 在接口里
  • 对未来人生的一些想法

    我现在是自己做 但我此前有多年在从事软件开发工作 当回过头来想一想自己 觉得特别想对那些初学JAVA DOT NET技术的朋友说点心里话 希望你们能从我们的体会中 多少受点启发 也许我说的不好 你不赞同但看在我真心的份上别扔砖头啊 一 在中
  • 如何把思维导图秒变成幻灯?

    场景 有一天给研究生上课 几个学生分别上讲台展示仿真建模作业 我打开笔记本电脑 一边开着仿真工具验证他们的代码 一边用思维导图软件记录他们讲解中出现的问题 问题过多的时候 我示意学生下来 走上讲台 插上优盘 打开了一个幻灯 幻灯图文并茂 针
  • 计算机表格斜杠怎么打,如何在excel表格中绘制斜线并上下打字

    利用excel或是wps做表格时 很多时候会要求做表头要划斜线来划分项目 并且在上面打上字 比如表头里项目 内容 日期做的表格 在做表头时 需要项目 内容和日期在同一个表格里面 并用斜线区分开来 那么怎么实现呢 一起来看看吧 本次所使用的软
  • Win11:如何删除D盘中的WindowsApps文件夹

    问题描述 Win11 如何删除D盘中的WindowsApps文件夹 问题截图 问题原因 WindowsApps是微软应用商店使用的文件夹 是可以删除的 有些windows版本也没有微软应用商店 删除后对系统并不会有太大影响 解决方案 1 W
  • Selector的使用

    文章目录 Selector 的使用 1 直接使用 2 Scrapy Shell 3 XPath 选择器 4 CSS选择器 5 正则匹配 Selector 的使用 我们之前介绍了利用Beautiful Soup pyquery 以及正则表达式
  • Vue实例选项之【computed】

    目录 computed 显示效果 methods 和 computed 选项的区别 computed 的 setter 和 getter 属性 computed 计算属性在处理一些复杂逻辑时是很有用的 div p 原始字符串 message
  • 颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.

    package com two public class ReverseWords 题目 颠倒一个句子中的词的顺序 比如 I am a student颠倒后变成 student a am I 词以空格分隔 要求 1 实现速度最快 移动最少
  • 单片机原理及应用 实验四 指示灯数码管的中断控制

    单片机原理及应用 C51 版 功能 开机后D1灭灯 LED1黑屏 随后单击K1 D1状态反转 单击K2 LED1从0开始循环显示0 F字符 实验目的及要求 1 掌握外部中断的工作原理 学会中断程序设计 2 按照实验报告要求图 绘制本实验电路
  • 全文检索Elasticsearch安装和配置

    一 ElasticSearch 介绍 1 1 为什么要用ElasticSearch 当我们访问购物网站的时候 我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容 这是怎么做到呢 这些随意的数据不可能是根据数据库的字段查询的 那是
  • 2021-08-12PHP面试笔试题记录

    1 编写函数function get duplicate num array in num 获取最大相同元素数组的返回结果数组 其中 in为输入数组 num为相同数组元素的重复上限数值 num gt 2 1 1 例如 in 1 20 20
  • dmmbus地址_www.dmmbus.us服务器iP

    2019 05 09 2020 12 15 69 171 237 26 2019 05 12 2020 12 15 31 13 82 1 2019 05 12 2020 12 15 74 86 142 55 2019 05 16 2020
  • flutter 对一个对象进行fromjson,tojson,encode和decode

    fromJson就是转成我们能app能用的数据 tojson就是转成服务器能用的数据 encode是列表 对象转json decode是json转列表 对象 存在下面的一个对象 RedEnvelopeModel redEnvelopeMod
  • EasyExcel详细教程

    目录 1 Excel导入导出的应用场景 2 EasyExcel特点 3 Excel进行写操作 4 Excel进行读操作 本篇文章为你详细介绍EasyExcel如何进行读取操作 1 Excel导入导出的应用场景 1 数据导入 减轻录入工作量
  • Linux_CGI_CGIC - 获取Get请求字符串

    获取Get请求字符串 Get请求就是我们在浏览器地址栏输入URL时发送请求的方式 或者我们在HTML中定义一个表单 form 时 把action属性设为 Get 时的工作方式 Get请求字符串就是跟在URL后面以问号 开始的字符串 但不包括
  • 知识蒸馏的说明

    本文参考 ChatGPT 温度系数t与top p 超参怎么设置最优 知乎 知识蒸馏系列 一 三类基础蒸馏算法 OpenMMLab的博客 CSDN博客 知识蒸馏算法汇总 知乎 知识蒸馏 Old Summer的博客 CSDN博客 目录 1 Ch