7.2 知识蒸馏


7.2 知识蒸馏

本节摘要:当一个强大的大模型难以部署,可以把它的"判断方式"蒸馏到一个小模型里。本节讲解知识蒸馏用"软标签"传递知识的原理、温度参数的作用,以及它与迁移学习的区别和适用边界。

让老师面对面,把"过程"也教给你

阅读完本节,你应当能够:

  1. 用"老师给学生交底细"解释软标签为何比硬标签承载更多信息。
  2. 解释蒸馏里的温度参数如何让概率分布更平滑可学。
  3. 说清蒸馏与迁移学习的差别,判断哪种缩身方案适合你的场景。

大模型求准,小模型要扛得住

上一节迁移解决"借力",这一节解决"瘦身后别掉太多"。现实场景:你训练出一个很准的大模型,但它在手机上推理太慢、内存装不下。知识蒸馏的思路不是"把小模型从头再训一遍",而是让大模型(老师)把自己的知识"一对一"教给小模型(学生)

这会引出一个关键前提:能蒸馏的前提,是先有一个已经足够准的大模型。也就是说,知识蒸馏不会替你把模型从烂变好,它的本职是把"已经很好、但太大"的好给尽量保住。所以做蒸馏之前,务必先确认你的大模型在验证集上是真可信的——如果连老师都是半吊子,再好的"转移"也只是在传递垃圾。

软标签比硬标签更有料

陷阱要先点破:若只拿老师的最终答案(硬标签)去训学生,学生学到的只是"答案是什么",可老师真正值钱的是它对各候选接近程度的偏好——比如看到一张图,老师给猫 0.7、狗 0.2、兔 0.1,这种"0.7 比 0.2 更接近"的相对偏好,才是知识。软标签正是把这种连续偏好传下去,学生学得比单纯分类目标更细腻。

用一个具体数字把它说明白。假设老师在判断一张"很像狗的猫"时,输出硬标签是"猫",但它内心的概率分布其实是猫 0.60、狗 0.35、兔 0.05。如果拿硬标签(猫=1,其余=0)训学生,学生完全不知道"这图跟狗也有点像";而拿软标签(0.60/0.35/0.05)训,学生就学会了"猫和狗在这里接近、和兔子远得多"。正是这层"相似关系"让学生模型学到了比标签本身更丰富、更容易泛化的结构知识。

温度:把"接近程度"放大出来

但软标签往往太"尖"(接近 one-hot,好查不出来)。蒸馏引入一个温度参数 T:把 logits 先除以 T 再做软化,让分布更平、大小关系被放大。T 越大,分布越平滑,学生越能学到"这类到底为什么不是另一类"的微妙知识;但 T 太大会把有用的判别信息也抹平。实践中配一个损失 = 蒸馏损失(软标签,配高T) + 学生自带分类损失(硬标签,保正确),两者加权。

T 的实际取值通常落在 1 到 10 之间,太小等于没蒸馏、太大又抹平细节。不少实践建议对同一张图先画出"不同 T 下老师预测分布的平坦程度"来感受一下——T 越大分布压得越平,你要找的是一个"既保留了类间差异、又不过尖"的中间档。这个 T 其实也像超参数一样可以搜索,但它影响的是学生学到的"细腻度",而不是直接的精度曲线,观察时要看学生最终的压缩后验证分。

一次蒸馏的实操配方

把原理落到脚本上,蒸馏通常四步走:第一,先把你信任的老师模型完整训练好(或直接用已有的强模型),并在验证集上确认它确实可信;第二,选定学生结构的规模——它要比老师小得多才值得蒸,但又不能小到表达力彻底不足;第三,同时算两笔损失——学生以自己的硬标签分类损失报出"它自己会怎么判",再以老师软标签 + 温度 T 的蒸馏损失学"老师怎么判、为什么偏向这种接近程度",二者加权求和;第四,把 T、以及两个损失的权重系数当超参,在蒸馏的验证集上做一次小而快的搜索。

训练时有个常见的实现细节:老师的前向往往在最开始就把整个数据集跑一遍,把软标签一次性缓存下来,学生训练时直接读缓存,而不用每步都再喂一次老师——这样能省下大量重复计算。学生"边学老师边自摸"(在线蒸馏)在个别场景更准但成本更高,而"把老师输出先算好、离线蒸馏"是绝大多数情况下的性价比之选。要不要更新老师、多久更新一次,也是一道实打实的成本账:离线蒸馏里老师固定不动,最省事也最可复现。

什么时候蒸馏帮不上忙

蒸馏不是万能的瘦身术,有几种情况要提前想清楚。一是学生的容量比任务的复杂度还低——如果问题本身很难、你的小结构在没蒸馏时就已经表达力见底,那再好的蒸馏也只是"矮子里拔将军",压下去就真回不来了;此时该先考虑换更大一点的学生结构,而不是硬蒸。二是老师自己就不稳定——对同一张图老师每次给出的软标签抖动很大,那蒸馏传下去的就是噪声偏好,学生学不到稳定的"接近程度"。三是大模型本身在验证集上就只能算及格——这时蒸馏的价值不大,你的第一优先级应该是先救老师,而不是急着复制它。判断一次蒸馏值不值得做,核心一条:老师是否足够强、且学生的压缩依然守得住任务需要的精度

蒸馏与迁移的分工:起重 vs 压缩

两者常被搞混,但分工很清楚:

维度 迁移学习 知识蒸馏
动机 数据/算力不足 模型太大难部署
传递物 网络的通用特征(结构) 老师的判断偏好(软标签)
起点 复用预训练权重 训练一个小模型
关注 学起得快 学完省推理

一句话:迁移给"起重能力",蒸馏给"压缩能力"。实践中常可叠加——先迁移借特征,再蒸馏把大而准的模型压成小而快的学生。

⚠️ 常见坑:T 开太大,蒸馏损失主导,学生学歪了只顾"姿态像"而丢了"答案对";加油时要观察学生自己的硬标签任务损失别跑飞。

💡 直觉:把蒸馏当成"老师全职家教、手把手讲过程,而不是只告诉你答案"。硬件标签给标准答案,软标签+温度像老师把"我为什么这么判"的原因也讲给你听。

本节要点回顾

  • 要点一:蒸馏用软标签传递老师对候选接近程度的偏好,比硬标签信息更足.
  • 要点二:温度 T 平滑分布、放大可学细节,与硬标签损失加权使用。
  • 要点三:蒸馏解决"模型太大难部署",迁移解决"数据/算力不足"。
  • 要点四:两者可叠加:先迁移借力,再蒸馏瘦身。
  • 要点五:T 过大可能只求"姿态像"而丢了"答案对",需盯学生自己的分类损失。

蒸馏压缩的是"知识",下面要压缩的是"模型本身"——剪枝与量化。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U