🫗 知识蒸馏

简介: 知识蒸馏是一种模型压缩技术,通过将大模型(教师)的知识迁移到小模型(学生),提升小模型性能。核心思想是模仿教师的输出分布或中间特征,常用KL散度和温度机制优化软标签学习,兼顾推理效率与泛化能力,广泛应用于轻量化模型部署。(238字)

🎯 概述
知识蒸馏(Knowledge Distillation,KD) 是一种模型压缩技术,旨在将一个大型、复杂的模型(通常称为 教师模型)的知识迁移到一个较小、更高效的模型(称为 学生模型)上。其核心思想是,学生模型通过模仿教师模型的输出或中间表示,学习到教师模型的知识,达到接近甚至超越教师模型性能的效果。
🤔 为什么需要知识蒸馏?
● 模型压缩: 大模型通常参数量巨大,占用大量计算资源。知识蒸馏可以将大模型的知识浓缩到一个小模型中,从而降低模型的存储和计算成本。
● 加速推理: 小模型的推理速度比大模型快得多,这在实时应用中非常重要。
● 提高泛化能力: 通过学习大模型的知识,小模型可以更好地泛化到未见过的数据上。

🏗️ 常见模型蒸馏策略
传统模型的训练是直接通过真实数据的 硬标签 计算损失的,硬标签即离散的、确定的类别标签,通常直接对应数据的真实类别或目标输出

经典蒸馏方法(Hinton 方法)
训练过程
● 使用传统方法训练一个高性能的教师模型
● 设计相对简单的学生模型结构,具体训练方式如下:
○ 输入样本 x 到教师模型,得到教师模型的软标签输出 $p_t$ (软标签指教师模型对样本的输出概率分布,是原始输出logits的归一化值)
○ 输入同样的样本 x 到学生模型,得到学生模型的软标签输出 $ps$
○ 定义损失函数,让学生的输出概率分布 p 尽可能接近教师模型的输出概率分布 q,同时考虑样本x的真实硬标签 y
损失函数
总损失为软损失与硬损失的加权和:$L = \alpha \times L
{soft} + (1-\alpha) \times L{hard}$
● $\alpha$:权重系数
● $L
{soft}$:软损失,即学生模型输出 $p_s$ 与教师模型软标签 $pt$ 之间KL散度(衡量分布差异,保证对教师模型的拟合),$L{soft} = KL( p_t || ps)$
● $L
{hard}$:硬损失,即学生模型输出与真实硬标签之间的交叉熵损失(保证对真实类别的拟合)
KL散度计算
在机器学习、信息论和概率统计中,KL 散度(Kullback-Leibler Divergence) 是一种衡量两个概率分布之间差异的指标,也被称为相对熵(Relative Entropy)
给定两个概率分布:
● 真实分布 P(ground truth 或 target)
● 近似分布 Q(model output 或 prediction)
KL 散度用来衡量“ 用近似分布 Q 来表示真实分布 P 时所损失的信息量”, 定义如下:
● 离散概率分布:$KL ( P || Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)}$
● 连续概率分布:$KL ( P || Q) = \int_x P(x) \log \frac{P(x)}{Q(x)} dx$
KL散度具有以下性质:
● 非负性:$KL(P||Q) \geq 0$,当前仅当对所有x , $P(x) = Q(x)$ 时,$KL(P||Q) = 0$
● 不对称性:$KL(P||Q) \neq KL(Q||P)$, 意味着 “用 Q 近似 P” 和 “用 P 近似 Q” 的损失可能不同
带温度的软标签
教师模型对输入 x 的 logits(未归一化输出)为 $z_t$,,通过带温度的 softmax 生成软标签 $p_t = softmax(z_t / T)$,其中 T 是温度参数( T>1 时分布更平滑,保留更多类别关联信息)。
🤔:为什么要加温度?
↩️:如果不加温度,当某个类别的得分 $z_i$ 原大于其他类别的得分时,softmax归一化后, $p_i$ 接近1,而其他类别的概率接近0,失去了其他类别的概率分布信息,因此引入一个温度参数 T,使输出分布更平滑,保留更多类别关联信息。

特征蒸馏(Feature Distillation)
经典蒸馏仅利用教师的输出层知识,而中间层特征(Transformer 隐藏状态、注意力权重)包含丰富的语义信息。此类方法通过对齐师生中间层特征传递知识。
实现方式:
● 选择关键特征层:从教师模型中选取对任务最关键的中间层,通常是语义信息丰富的深层
● 特征映射与对齐:由于学生模型结构可能与教师不同(如层数、维度更少),需设计 “映射函数”(如线性变换)将学生的特征转换为与教师特征兼容的维度。
● 定义特征损失:通过损失函数衡量师生特征的差异,常用MSE 损失(均方误差)或余弦相似度损失

🎯 蒸馏案例
import torch.nn.functional as F
class DistillationLoss(nn.Module):
def init(self, temperature=4.0, alpha=0.7):
super().init()
self.T = temperature
self.alpha = alpha

def forward(self, student_logits, teacher_logits, labels):
    # 蒸馏损失
    soft_targets = F.softmax(teacher_logits / self.T, dim=-1)
    soft_pred = F.log_softmax(student_logits / self.T, dim=-1)
    distill_loss = F.kl_div(soft_pred, soft_targets, reduction='batchmean') * (self.T ** 2)

    # 学生损失
    student_loss = F.cross_entropy(student_logits, labels)

    return self.alpha * distill_loss + (1 - self.alpha) * student_loss

F.kl_div 介绍
假设 P 为目标分布,Q为正式分布(假设为离散型)
因为 $KL ( P || Q) = \sum_x P(x) \log \frac{P(x)}{Q(x)} = \sum_x P(x)\log{P(x)} - P(x)\log{Q(x)} = \sum_x P(x) ( \log{P(x)} -\log{Q(x)} )$
F.kl_div内部的KL散度的实现逻辑是 $KL(input,target) = \sum target \times (log(target) - input )$
所以输入给F.kl_div的input实际是已经经过log和softmax的logits,而输入给 F.kl_div的target只是softmax过的logits
蒸馏分类
黑盒蒸馏
黑盒蒸馏中,学生模型无法访问教师模型的内部结构或中间输出,仅能获取教师模型的最终预测结果(如输入样本对应的输出概率分布),通过模仿这些 “外部输出” 来学习知识,蒸馏主要依赖教师的最终输出(软标签)作为蒸馏信号,损失函数通常仅基于输出概率的匹配(如 KL 散度损失)。
白盒蒸馏
白盒蒸馏中,学生模型可以直接访问教师模型的内部结构和中间输出(如隐藏层特征、注意力权重、logits 等),并通过模仿这些内部信息来学习教师的知识
🎯 面试重点

  1. 知识蒸馏的三个层次?
  2. 温度参数的作用?
  3. 如何选择蒸馏目标?
  4. 蒸馏与剪枝、量化的区别?
相关文章
|
6月前
|
运维 Java Serverless
Serverless 架构模式深度解析
Serverless并非“无服务器”,而是开发者无需管理服务器,专注业务逻辑。具备按需付费、弹性伸缩、事件驱动等优势,适用于突发流量、定时任务等场景,结合FaaS与BaaS可构建高效应用,是云原生发展的重要方向。
859 1
|
6月前
|
人工智能 自然语言处理 安全
|
6月前
|
人工智能 Cloud Native 关系型数据库
云原生视角:AI数字人vs数字员工,玄晶引擎等工具的架构选型与落地实践
本文对比AI数字人与云原生AI数字员工的技术差异,揭示“交互组件”到“智能体”的进化路径。基于玄晶引擎与阿里云生态的实践案例,从功能闭环、架构设计、成本收益三维度解析,并提供开发者选型工具包,助力企业实现直播引流、智能下单、库存同步等全链路自动化,降低算力成本60%,提升业务转化率。
358 6
|
存储 SQL 大数据
dataCompare大数据对比之异源数据对比
dataCompare大数据对比之异源数据对比
1031 0
|
弹性计算 数据可视化 Serverless
函数计算FC3.0评测|2.0的蜕变
函数计算FC3.0评测|2.0的蜕变
120680 18
|
2月前
|
人工智能 缓存 Serverless
Serverless AI部署实践:低成本构建AI应用的工程化路径
阿里云Serverless GPU方案破解AI落地难题:冷热资源分离、ComfyUI节点化封装、按量计费(单图低至0.002元),助力中小团队低成本试错。已支撑毛绒生图、语音克隆等场景,GPU利用率提升显著。(239字)
|
7月前
|
人工智能 机器人 数据处理
ICLR2026 !SAM3重磅来袭:能“听懂人话”的分割模型,性能狂飙2倍
Lab4AI.cn覆盖全周期科研支撑平台,提供论文速递、AI翻译和AI导读工具辅助论文阅读;支持投稿论文复现和Github项目复现,动手复现感兴趣的论文;论文复现完成后,您可基于您的思路和想法,开启论文创新与成果转化。
1167 6
|
2月前
|
存储 弹性计算 人工智能
阿里云2核2G云服务器价格:轻量应用服务器38与经济型e实例99元可选
阿里云2核2G云服务器提供多款配置与优惠:轻量应用服务器2核2G,峰值带宽200M,40G ESSD云盘,抢购价38元/年,适合个人开发者及小微企业;ECS经济型e实例2核2G,3M带宽,40G ESSD Entry云盘,特惠价99元/年,适合轻量级应用;通用算力型u1实例2核2G,性能更强,企业用户专享价格199元/年,适合企业级应用,用户可根据需求选择。
|
人工智能 边缘计算 算法
DistilQwen2.5-R1发布:知识蒸馏助推小模型深度思考
DistilQwen2.5-R1通过知识蒸馏技术,将大规模深度推理模型的知识迁移到小模型中,显著提升了小模型的推理能力。实验结果表明,DistilQwen2.5-R1在数学、代码和科学问题等多个基准测试中表现优异,尤其在7B参数量级上超越了其他开源蒸馏模型。 本文将深入阐述 DistilQwen2.5-R1 的蒸馏算法、性能评估,并且提供在阿里云人工智能平台 PAI 上的使用指南及相关下载教程。
|
移动开发 前端开发 数据可视化
React 拖拽布局组件 Drag & Drop Layout
本文介绍了如何在React中构建拖拽布局组件,涵盖基础知识、常见问题及解决方案。首先解释了拖拽操作的三个阶段:开始、过程中和结束。接着推荐了几个常用的拖拽库,如`react-beautiful-dnd`,并详细展示了如何使用该库创建基础拖拽组件,包括安装依赖、初始化容器和处理拖拽结束事件。文章还探讨了常见问题,如拖拽不生效、性能优化、嵌套拖拽和跨浏览器兼容性,并提供了进阶技巧,如自定义样式、多列布局和集成其他UI组件。通过这些内容,读者可以掌握构建高效拖拽布局的方法。
1070 16