Distilling the Knowledge in a Neural Network(提炼神经网络中的知识)

蒸馏:把比较不纯净的水,通过加热,凝聚成水蒸气,然后再凝聚成纯净的蒸馏水。

知识蒸馏,也是把一个非常大的东西,蒸馏成一个小的,纯净的东西。

就是用大的教师网络,把知识传递给小的网络,去训练小的学生网络模型。最后学生取代教师。

img

把大模型,部署到小的电脑,电视,手机中。

img

总结:

我们用大模型时,它的计算量很大,需要很多的算力,我们没办法直接部署到手机上,在使用小模型时,它是由大模型来提取出来的信息,它并不准确,它的性能不如大模型。知识蒸馏就是把大模型的内容转移到小的模型中。

1.知识的表示与迁移

假设我们把马的照片喂给神经网络,他会有很多类别,比如猫的概率,马的概率, 汽车的概率。我们在训练时告诉模型这是一个马,那么马的概率为1,驴子和汽车的概率为0.这种我们称为硬目标,但是这并不科学,这样就是告诉神经网络,这就是一匹马,它等于汽车等于驴的概率都是零,是相等的,我们的模型只能区分马和汽车,驴子的差异,但是并不能去找到汽车和驴子的差异。我们现在需要让模型知道,它是一匹马,但是他和驴子有一点相似,和汽车完全不相似。于是就引入了软目标。

img

img

就是这个soft targets可以传递更多信息。

img

就是soft target,可以让我们的模型学习到更多的信息。

img

就是soft target,可以让我们的模型学习到更多的信息。就是那种有多像,多不像,像谁,不像谁,特别是非正确概率类别的相对大小。(驴和车)

img

现在我们觉得这个Soft Target,它还不够Soft,我们想让他的相对概率变得更大,更下Soft。

img

这个时候要去引入一个蒸馏温度T。引入这个公式。

如果T=1,就是原生SoftMax。这个公式可以让,高的地方更低,低的地方更高,但是他们的大小仍然保持不变。

img

按照新的公式之后,他变得更强大。

img

2.知识蒸馏的过程

我们先有一个训练好的教师模型,然后他会给每一个数据一个温度为t的时候的softmax。

然后我们再把数据喂给学生网络,然后用它用温度为t去做一个softmax,我们去对比学生网络温度为t时的softmax和教师的softmax去做一个对比,我们希望学生和教师的softmax越接近越好。

同时学生自己也做一个t=1的softmax,我们把结果和我们的样本硬标签去做一个对比,我们希望他俩也越接近越好。

img

.

公式如下:

img

最后我们把两个损失函数乘以一个权重,并且把两个权重相加得到总权重,我们希望总权重越小越好。

img

再去做一个简化的模型:

教师网络是比较大的,比较臃肿的,学生网络是比较轻巧的,两个网络综合训练,得到的就是一个特别轻巧的学生网络。

img

作者用手写数字题识别,预训练时做出了一个很好的效果,就是教师网络学了关于3的知识,然后让学生网络去学习一个手写数字体识别数据集(我们把所有的3扣掉),然后再测试集上加入3,学生网络仍然可以分辨3.(因为教师网络已经把关于3的知识传递给学生网络了)

最后结果对比,徒弟和老师其实他们的性能差不多,但是徒弟更轻量化,(教会徒弟 饿死师傅),这个东西以后也被用作了一些少样本和零样本学习。

img

知识蒸馏和迁移学习的区别:

迁移学习:举个例子,他把训练猫狗的数据集,然后去训练出一个猫狗的模型,然后我们把这个猫狗的模型去训练X胸片的数据集,然后达到一个领域前一段额效果。迁移学习更加倾向的是领域之间的迁移。

只是蒸馏:是把一个模型的知识迁移到另一个小的模型,通常把一个大模型的内容传递给小模型。模型蒸馏更加注重模型之间的迁移。

我们可以用知识蒸馏实现迁移学习,也可以两种没啥关系。

img

3.知识蒸馏背后的原理

假设,我们的教师模型的领域是绿色区域,我们的学生模型是蓝色区域,学生的知识是黄圈,教师的是红色圈,我们的知识蒸馏就是通过我们的红圈,慢慢引导我们的学生的黄泉去靠近红圈,收敛到橙色圈圈。

img

论文部分

知识蒸馏可以实现从大模型浓缩到小模型。

比如豆包,gpt这些大模型,他们无法直接部署到小模型中。知识整理就是大模型非常重要的压缩到小模型的方法。

针对大模型,它的数据量足够大,他无法直接部署到移动设备中,针对小模型,他被部署之后,他需要保证一个实时性,以及轻量原则。所以就有了知识蒸馏。

知识蒸馏的核心思想就是把一个已经训练好的大模型,压缩成一个小模型。

摘要

在相同数据上训练不同的模型,然后对他们的预测结果取平均值可以显著提高任何机器学习算法的性能。

但是当我们使用一整套模型时就会导致模型的计算成本高,无法部署给本地。现在已经有研究证明可以将一个集成模型的知识压缩到单一模型中,这样可以实现轻量的部署。并且证明,这也部署效果非常好。作者做了一个新的模型集成,他由非常大的模型组成,然后再部署到一个小的模型中,这样可以保持很好的性能,并且足够轻量。

1.引言

昆虫幼年时注重从环境中获取营养,成年时注重繁殖和移动。他在不同时期需要做的事是不一样的,模型也是这样,在大规模机器学习中,在训练时我们需要非常庞大的计算资源,我们需要从銮舆的数据中提取结构,但是在部署阶段,我们需要它轻量,并且达到很好的性能。为了解决这个问题,目前已经有人先训练出一个非常大型的模型,里面包含各种知识,然后再用大模型把复杂的知识转移到轻量的小的模型中。这个过程我们称为知识蒸馏。

在大模型训练小模型时,我们的惯性思维就是直接把大模型中的参数直接转移到小模型中,但其实这样是不好的,机器无法理解大模型在浓缩成小模型时应该如何保留知识。对于那些大模型来说,他们就是这种硬目标,他们希望同一类相似度尽可能高,不同类相似度非常非常低。但是在实际情况中,只有这种软目标才能够学习更多的知识。(只有软目标才能够更好地帮助模型学习)

img

人们普遍认为,用于训练的目标函数应尽可能贴近用户的真实目标。尽管如此,模型训练通常是为了优化在训练数据上的表现,而真正的目标却是对新数据有良好的泛化能力。(我们目前认为的泛化,他是一个伪泛化),为了提高这个真正的泛化能力,我们需要正确的泛化信息,但是这类信息很难获取。我们的大模型取多个模型的平均值效果很好,然后让小模型按照同样的方式去进行泛化,也能达到一个很好的效果。(知识蒸馏就是把大模型的训练方式转移到小模型中)

(通俗一点:比如在图像识别任务中,大型模型集合平均后对不同类别的图像特征把握更全面。小型模型按常规训练,可能只记住了训练集中图像的部分表面特征;而按大型模型泛化方式训练的小型模型,能学到大型模型那种综合各类特征判断的能力,在面对新的测试图像时,就能更准确地识别。)

将复杂模型的泛化能力转移到小型模型的一种直观方法,是把复杂模型生成的类别概率当作训练小型模型的 “软目标”。我们的训练小模型的数据集可以使用相同的数据集也可以使用“子集”。当复杂模型是由大量较简单的模型组成的集合时,我们可以将这些简单模型各自预测分布的算术平均数或几何平均数作为软目标。软目标可以让小模型获得更多的信息。

img

我们小模型的训练集可以小样本甚至零样本。事实证明学习学习一些错误的样本是非常有用的。

2.蒸馏

img

在知识蒸馏中,知识被蒸馏的方式为:在迁移集上对其进行训练,并对迁移集中的每个样本使用软目标分布,该软目标分布是通过让复杂模型在其 softmax 函数中采用较高温度参数来生成的。在训练蒸馏模型时,也使用相同的高温参数,但训练完成后,蒸馏模型使用的温度参数为 1。

当迁移集中全部或部分样本的正确标签已知时,通过同时训练蒸馏模型以输出正确标签,这种方法可以得到显著改进。一种实现方式是使用正确标签来修改软目标,但我们发现更好的方法是简单地采用两个不同目标函数的加权平均值。第一个目标函数是与软目标之间的交叉熵,在计算该交叉熵时,蒸馏模型的 softmax 函数中使用的温度参数,与从复杂模型生成软目标时所用的温度参数相同。第二个目标函数是与正确标签之间的交叉熵。计算该交叉熵时,在蒸馏模型的 softmax 函数中使用完全相同的对数几率,但温度参数设为 1。

文章大概说的就是这个模型:

img

2.1 匹配对数几率是知识蒸馏的一种特殊情况

img

3.关于 MNIST的初步实验

为探究知识蒸馏效果,用 6 万样本训练大型双隐层神经网络(每层 1200 个 ReLU 单元),以 dropout 和权重约束正则化,输入图像可抖动。该网络测试错 67 个,无正则化的小网络(每层 800 个 ReLU 单元)错 146 个,小网络匹配大网络温度 20 时生成的软目标后,错 74 个,说明软目标能有效转移知识。

小网络隐层单元数不同,合适的温度参数不同:每层超 300 单元时,温度超 8 效果相似;每层 30 单元时,2.5 - 4 效果最佳。

此外,迁移集去掉数字 3 样本,蒸馏模型虽未见过 3 ,但调偏差后能高准确率识别;迁移集只有 7 和 8 样本时,调偏差也能降低测试错误率 。(它能够实现零样本学习)

4.语音识别方面的实验

本节研究用于自动语音识别(ASR)的深度神经网络(DNN)声学模型集成效果。提出的知识蒸馏策略能将模型集合知识提炼到单个模型,其性能优于同等规模直接从相同数据训练的模型。

当前先进 ASR 系统用 DNN 把波形特征的短时上下文,映射到隐马尔可夫模型(HMM)离散状态的概率分布。具体是 DNN 生成三音素状态簇概率分布,解码器找 HMM 状态路径,平衡高概率状态与语言模型下的转录结果。常见做法是,训练 DNN 通过最小化预测与强制对齐标签的交叉熵,做逐帧分类,而非考虑解码器和语言模型。

img

img

4.1结果

img

img

5结论

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI论文】MedVLM-R1:通过强化学习激励视觉语言模型(VLMs)的医疗推理能力

摘要:推理是推进医学影像分析的关键前沿领域,其中透明度和可信度对于赢得临床医生信任和获得监管批准起着核心作用。尽管医学视觉语言模型(VLMs)在放射学任务中展现出巨大潜力,但大多数现有VLM仅给出最终答案&#xff…

M4 Mac mini运行DeepSeek-R1模型

前言 最近DeepSeek大模型很火,实际工作中也有使用,很多人觉得需要很好的显卡才能跑起来,至少显存需要很高,但实际上一般的核显机器也能跑起来,只不过内存要求要大,对于个人而言,实际上Mac M芯片…

Chart.js 电商数据可视化实战:构建企业级销售仪表盘(附完整源码)

副标题:零配置开发多维度商业看板,掌握动态数据联动与性能调优 📝 文章摘要 本文通过 Chart.js 4.x 实现电商场景下的 多维度销售数据可视化看板,包含: ✅ 实时更新的柱状趋势图 ✅ 商品类目占比动态饼图 ✅ 企业级功能:自动刷新、响应式布局、内存管理 ✅ 生产环境最佳…

【常见BUG】Spring Boot 和 Springfox(Swagger)版本兼容问题

???欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

高频面试题(含笔试高频算法整理)基本总结回顾5

目录 一、基本面试流程回顾 二、基本高频算法题展示 三、基本面试题总结回顾 (一)Java高频面试题整理 (二)JVM相关面试问题整理 (三)MySQL相关面试问题整理 (四)Redis相关面试…

【数据挖掘】Pandas

Pandas 是 Python 进行 数据挖掘 和 数据分析 的核心库之一,提供了强大的 数据清洗、预处理、转换、分析 和 可视化 功能。它通常与 NumPy、Matplotlib、Seaborn、Scikit-Learn 等库结合使用,帮助构建高效的数据挖掘流程。 📌 1. 读取数据 P…

Linux相关概念和易错知识点(33)(基于阻塞队列和环形队列的生产消费模型实现、sem的应用)

目录 1.基于阻塞队列的生产消费模型 (1)生产消费模型实现的条件 (2)初始化模型 (3)生产和消费 (3)所有代码 ①test.cc ②myBlockQueue.hpp 2.基于环形的生产消费模型、sem的应…

[SAP MM] 标准价格和移动平均价格

在SAP MM模块中,移动平均价格与标准价格是两种重要的物料计价方式 1.标准价格(S价格) 以一个固定的价格表示物料在一段期间的价值 如果物料主数据维护了标准价格(S价格),那么不论物料的采购订单价格与标准价格的差异有多大,都不会改变物料…

计算机毕业设计Python+DeepSeek-R1大模型期货价格预测分析 期货价格数据分析可视化预测系 统 量化交易大数据 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【AIGC系列】5:视频生成模型数据处理和预训练流程介绍(Sora、MovieGen、HunyuanVideo)

AIGC系列博文: 【AIGC系列】1:自编码器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介绍(内含扩散模型介绍) 【AIGC系列】3:Stable Diffusion模型原理介绍 【AIGC系列】4&#xff1…

推进断裂力学:深入研究工程模拟中的 UMM

揭秘高级断裂分析:UMM 在 Ansys Mechanical 中的作用 工程模拟已成为产品设计和开发中不可或缺的一部分,尤其是用于评估材料在各种条件下的行为和耐久性。该领域的前沿是断裂分析,它在确保从日常工具到桥梁和飞机等复杂结构的安全性和耐用性…

dify绑定飞书多维表格

dify 绑定飞书和绑定 notion 有差不多的过程,都需要套一层应用的壳子,而没有直接可以访问飞书文档的 API。本文记录如何在dify工具中使用新增多条记录工具。 创建飞书应用 在飞书开放平台创建一个应用,个人用户创建企业自建应用。 自定义应…

C++ ++++++++++

初始C 注释 变量 常量 关键字 标识符命名规则 数据类型 C规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存 整型 sizeof关键字 浮点型(实型) 有效位数保留七位,带小数点。 这个是保…

如何通过rust实现自己的web登录图片验证码

在进行web系统开发时,为保障系统登录安全,登录页面中的验证码必不可少。在java中,我们可以利用相应的2D图像库快速生成图形验证码,而对于rust,我们没有合适的标准库进行图像验证码的生成。今天,我们通过使用…

Python中文自然语言处理库SnowNLP

SnowNLP 介绍 SnowNLP 是一个基于 Python 的中文自然语言处理库,专为处理中文文本而设计。它受到 TextBlob 的启发,但与 TextBlob 不同的是,SnowNLP 没有使用 NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字…

【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透

文章目录 1. 数据链路层2. 以太网帧格式3. MTU3.1 认识MTU3.2 MTU 对于 TCP 协议的影响 4. 局域网通信原理5. ARP协议5.1 基本概念5.2 原理5.3 ARP 数据报的格式 6. NAT技术7. 内网穿透8. 内网打洞9. 代理服务器9.1 正向代理9.2 反向代理9.3 NAT VS 代理服务器 10.网络总结 1. …

【异常】—— 我与C++的不解之缘(二十四)

一、异常是什么? 异常,这个十分陌生的名词; 试想一下,在我们之前写代码的过程中,程序运行出现了一些问题(就比如AVL树更新平衡因子的过程中,平衡因子出现了不可能的现象,这说明这个…

VSCode离线安装插件

最近在其他电脑设备上部署vscode环境出现问题,在vscode里直接安装插件失败,软件提示如下:(此前已经用此方法安装过中文插件) 这里我们选择手动下载,会自动在浏览器中跳转到该插件的下载链接并自动下载插件&…

服务端驱动UI架构解析:React Server Components与流式渲染的革命

引言:重新定义前后端边界 Shopify采用React Server Components后,动态模块加载速度提升340%,客户端Bundle减少62%。Discord重构消息流服务,通过流式渲染使首屏TTI从4.2s降至1.1s。Vercel生产数据显示,混合渲染技术让L…

关于mysql 表中字段存储JSON对象对JSON对象中的bolean字段进行查询的方式

业务场景如题 JSON对象为 表为客诉表中的 发现利用原有的xml中的 and a1.order_list ->‘$[*].isZg’ request.isZg 后续发现需要更改为有效 本文作为自己日常工作记录用,有遇到相同问题的可以作为参考。