知识蒸馏的说明

文章探讨了ChatGPT中的温度系数如何影响模型预测的不确定性,解释了知识蒸馏的概念,特别是响应基KD算法,以及为何需要平滑标签来优化模型学习。此外,提到了知识蒸馏在模型压缩中的作用,允许小型模型模仿大型教师模型的知识。
摘要由CSDN通过智能技术生成

本文参考:

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、设计目的 本课程设计旨在通过理论和实践相结合的方式,使学生掌握知识蒸馏的基本概念、原理和方法,培养学生的独立思考和解决实际问题的能力,提高学生的综合素质和实践能力。 二、设计内容 1. 知识蒸馏的基本概念和原理 - 知识蒸馏的概念和定义 - 知识蒸馏的原理和分类 - 知识蒸馏的应用领域和前景 2. 知识蒸馏的方法和技术 - 模型压缩方法 - 数据增强方法 - 策略裁剪方法 - 模型蒸馏方法 3. 知识蒸馏的实践应用 - 图像分类任务的知识蒸馏 - 语音识别任务的知识蒸馏 - 自然语言处理任务的知识蒸馏 4. 知识蒸馏的评价和优化 - 模型蒸馏的评价方法 - 知识蒸馏的效果和性能评价 - 知识蒸馏的优化方法 三、教学方法 1. 理论授课:通过讲授知识蒸馏的概念、原理、方法和应用等方面的内容,使学生掌握知识蒸馏的基本概念和实现方法。 2. 实践操作:通过实践操作,让学生亲自动手实现知识蒸馏,并通过实验结果评价知识蒸馏的效果和性能。 3. 讨论研究:通过讨论研究,让学生了解知识蒸馏的最新进展和应用领域,培养学生的独立思考和解决实际问题的能力。 四、实验项目 1. 图像分类任务的知识蒸馏实验 - 实验目的:通过实现图像分类任务的知识蒸馏,掌握知识蒸馏的基本方法和技术。 - 实验内容:使用CIFAR-10数据集进行实验,比较蒸馏前后的模型性能和效果差异。 - 实验要求:熟悉Python编程和深度学习框架,具备良好的实验设计和结果分析能力。 2. 语音识别任务的知识蒸馏实验 - 实验目的:通过实现语音识别任务的知识蒸馏,掌握知识蒸馏在语音处理领域的应用。 - 实验内容:使用TIMIT数据集进行实验,比较蒸馏前后的模型性能和效果差异。 - 实验要求:熟悉Python编程和深度学习框架,具备良好的实验设计和结果分析能力。 3. 自然语言处理任务的知识蒸馏实验 - 实验目的:通过实现自然语言处理任务的知识蒸馏,掌握知识蒸馏在自然语言处理领域的应用。 - 实验内容:使用IMDB数据集进行实验,比较蒸馏前后的模型性能和效果差异。 - 实验要求:熟悉Python编程和深度学习框架,具备良好的实验设计和结果分析能力。 五、评分标准 1. 实验报告(60%):包含实验设计、实验步骤、实验结果和分析等内容。 2. 实验操作(20%):包括实验操作流程、代码编写和实验调试等内容。 3. 学术论文阅读和报告(20%):包括阅读学术论文、撰写学术报告和答辩等内容。 六、参考教材 1.《深度学习基础教程》 2.《深度学习与自然语言处理》 3.《深度学习优化方法》 4.《深度学习模型压缩与蒸馏》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值