🫗 知识蒸馏

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 知识蒸馏是一种模型压缩技术,通过将大模型(教师)的知识迁移到小模型(学生)中,实现高效推理与良好性能的平衡。核心思想是利用教师模型的输出概率分布(软标签)指导学生模型训练,结合温度机制平滑分布,保留类别间关联信息。常用KL散度衡量软标签差异,并融合硬标签损失提升泛化能力。可分为黑盒(仅用输出)与白盒(用中间特征)蒸馏,广泛应用于模型轻量化场景。

🎯 概述

知识蒸馏(Knowledge Distillation,KD) 是一种模型压缩技术,旨在将一个大型、复杂的模型(通常称为 教师模型)的知识迁移到一个较小、更高效的模型(称为 学生模型)上。其核心思想是,学生模型通过模仿教师模型的输出或中间表示,学习到教师模型的知识,达到接近甚至超越教师模型性能的效果。

🤔 为什么需要知识蒸馏?

  • 模型压缩: 大模型通常参数量巨大,占用大量计算资源。知识蒸馏可以将大模型的知识浓缩到一个小模型中,从而降低模型的存储和计算成本。
  • 加速推理: 小模型的推理速度比大模型快得多,这在实时应用中非常重要。
  • 提高泛化能力: 通过学习大模型的知识,小模型可以更好地泛化到未见过的数据上。


🏗️ 常见模型蒸馏策略

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


经典蒸馏方法(Hinton 方法)

训练过程

  • 使用传统方法训练一个高性能的教师模型
  • 设计相对简单的学生模型结构,具体训练方式如下:
  • 输入样本 x 到教师模型,得到教师模型的软标签输出 (软标签指教师模型对样本的输出概率分布,是原始输出logits的归一化值)
  • 输入同样的样本 x 到学生模型,得到学生模型的软标签输出
  • 定义损失函数,让学生的输出概率分布 p 尽可能接近教师模型的输出概率分布 q,同时考虑样本x的真实硬标签 y

损失函数

总损失为软损失与硬损失的加权和:

  • :权重系数
  • :软损失,即学生模型输出 与教师模型软标签 之间KL散度(衡量分布差异,保证对教师模型的拟合),
  • :硬损失,即学生模型输出与真实硬标签之间的交叉熵损失(保证对真实类别的拟合)

KL散度计算

在机器学习、信息论和概率统计中,KL 散度(Kullback-Leibler Divergence) 是一种衡量两个概率分布之间差异的指标,也被称为相对熵(Relative Entropy)

给定两个概率分布:

  • 真实分布 P(ground truth 或 target)
  • 近似分布 Q(model output 或 prediction)

KL 散度用来衡量“ 用近似分布 Q 来表示真实分布 P 时所损失的信息量”, 定义如下:

  • 离散概率分布:
  • 连续概率分布:

KL散度具有以下性质:

  • 非负性: ,当前仅当对所有x , 时,
  • 不对称性: , 意味着 “用 Q 近似 P” 和 “用  P 近似 Q” 的损失可能不同

带温度的软标签

教师模型对输入 x 的 logits(未归一化输出)为 ,,通过带温度的 softmax 生成软标签 ,其中 T 是温度参数( T>1 时分布更平滑,保留更多类别关联信息)。

🤔:为什么要加温度?
↩️:如果不加温度,当某个类别的得分 原大于其他类别的得分时,softmax归一化后, 接近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为正式分布(假设为离散型)
因为

F.kl_div内部的KL散度的实现逻辑是
所以输入给F.kl_div的input实际是已经经过log和softmax的logits,而输入给 F.kl_div的target只是softmax过的logits

蒸馏分类

黑盒蒸馏

黑盒蒸馏中,学生模型无法访问教师模型的内部结构或中间输出,仅能获取教师模型的最终预测结果(如输入样本对应的输出概率分布),通过模仿这些 “外部输出” 来学习知识,蒸馏主要依赖教师的最终输出(软标签)作为蒸馏信号,损失函数通常仅基于输出概率的匹配(如 KL 散度损失)。

白盒蒸馏

白盒蒸馏中,学生模型可以直接访问教师模型的内部结构和中间输出(如隐藏层特征、注意力权重、logits 等),并通过模仿这些内部信息来学习教师的知识

🎯 面试重点

  1. 知识蒸馏的三个层次?
  2. 温度参数的作用?
  3. 如何选择蒸馏目标?
  4. 蒸馏与剪枝、量化的区别?
目录
相关文章
|
7月前
|
存储 传感器 人工智能
AI 十大论文精讲(八):知识蒸馏如何让大模型 “瘦身不减能”
本篇解读DistilBERT,一篇解决大模型落地难题的里程碑论文。面对BERT等大模型参数多、耗能高、部署难的问题,DistilBERT提出预训练阶段知识蒸馏,结合三重损失与轻量化设计,在保留97%性能的同时,模型缩小40%,推理提速60%,推动NLP迈向高效、绿色、边缘化应用。
986 8
DataFrame(13):DataFrame的排序与排名问题(一)
DataFrame(13):DataFrame的排序与排名问题(一)
DataFrame(13):DataFrame的排序与排名问题(一)
|
5月前
|
数据采集 自然语言处理 监控
你的模型真的“学”会了吗?微调效果评估实战指南
本文系统讲解大模型微调效果评估的核心方法论:强调评估比训练更重要,涵盖目标对齐、技术指标(Loss/PPL/BLEU/ROUGE)、人工评估四维度、业务验证(A/B测试、端到端场景)、泛化性检验及四步实战流程,并提供避坑指南与工具建议。重在目标驱动、多层验证、快速闭环。(239字)
581 1
|
4月前
|
机器学习/深度学习 人工智能 机器人
大模型应用:稀疏注意力 vs 滑动窗口:大模型扩窗技术完全解析.58
本文详解大模型“扩窗”核心技术:滑动窗口注意力(快而局部,适合中短文本)与稀疏注意力(兼顾局部+跨步+首尾,支持超长上下文)。二者均通过降低O(n²)计算复杂度至线性,解决大模型长文本处理的内存与算力瓶颈,推动其从聊天工具升级为长文档分析、代码全量理解等实用AI。
787 26
|
4月前
|
存储 数据采集 机器学习/深度学习
大模型应用:大模型越大越好?模型参数量与效果的边际效益分析.51
本文揭示大模型“参数量越大效果越好”的误区,详解边际效益递减规律:小模型(1B→7B)提升显著,中等模型(7B→13B)仍具性价比,而超大模型(70B→175B)效果几无增长却大幅增加算力与存储成本。通过控制变量、量化指标与曲线分析,指导读者科学选型——找到效果与成本平衡的最优参数阈值。
1115 14
|
8月前
|
机器学习/深度学习 人工智能 缓存
面试官21问:深入剖析Transformer原理与测试工程!
本文整理了21个Transformer高频面试题,从测试开发视角解析其核心原理。通过理解多头注意力、位置编码等关键机制,帮助测试人员建立对大模型的可测试性认知,为设计AI系统验证方案打下基础。
|
7月前
|
算法
🗜️ 模型压缩与量化
模型压缩通过量化、稀疏化、知识蒸馏等技术,减小大模型体积与计算开销,提升推理效率。涵盖INT8/INT4量化、GPTQ、SmoothQuant等方法,支持在资源受限设备高效部署,平衡精度与性能。
240 0
|
6月前
|
机器学习/深度学习 数据采集 人工智能
如何赋予大语言模型以“灵魂”?深度解析增量预训练(Continual Pre-training)逻辑与实战代码
本文深入解析大模型增量预训练(CPT/DAP/CFT)三大路径,厘清RAG、微调与预训练的适用边界;结合eBay、AWS等实战案例,详解低成本高效CPT方法,并提供Unsloth框架下Qwen-3-4B金融领域实操代码。
1019 1
如何赋予大语言模型以“灵魂”?深度解析增量预训练(Continual Pre-training)逻辑与实战代码
|
7月前
|
数据采集 人工智能 监控
如何在技术面试中自信应对“大模型微调”话题?
本文整理了测试开发在面试中常见的大模型微调相关问题。涵盖了从显存需求、数据构建到训练策略等35个关键点,重点分析了SFT与预训练的区别、领域适应与灾难性遗忘等核心挑战。文章强调测试开发人员需掌握模型评估、数据质量控制和训练监控等技能,以适应AI时代对质量保障提出的新要求。
|
7月前
|
人工智能 监控 物联网
当技术面试聊到“大模型微调”,你应该怎么回答?
近两年测试开发跳槽常遇“大模型微调”面试题。AI已深入测试领域,从数据生成到智能分析,均需掌握微调机制。本文梳理35个高频问题,涵盖显存计算、SFT实践、数据构建、灾难性遗忘等核心知识点,助你理解预训练与微调差异、LoRA应用及评测集设计。测试人应聚焦模型可控性、质量评估与训练监控,掌握AI时代新竞争力。