论文笔记:Distilling the Knowledge in a Neural Network

论文笔记:Distilling the Knowledge in a Neural Network

背景

论文:Distilling the Knowledge in a Neural Network,Geoffrey Hinton、Oriol Vinyals、Jeff Dean(Google,Hinton 亦隶属多伦多大学),arXiv 预印本 2015 年 3 月。

这篇文章从一个人人都熟悉、却很少深究的经验出发:训练多个不同的模型、把它们的预测取平均,几乎是提升任意机器学习算法性能最简单有效的方法 。问题是,在真实业务里(尤其是语音搜索、图像识别这类面向海量用户的在线系统),用一整个模型集成做推理既笨重又昂贵。于是论文瞄准的核心矛盾是:训练阶段与部署阶段的需求根本不同,却被迫用同一个模型。

Hinton 用了一个很妙的类比:昆虫有专为"从环境中榨取能量与营养"优化的幼虫形态,和专为"移动与繁殖"优化的成虫形态,二者形态完全不同。大规模机器学习却通常对训练和部署使用极其相似的模型。这个类比直接给出了全文的立场:

  • 训练阶段:数据大而冗余,无需实时,可以挥霍算力------哪怕训练一个巨型模型也无所谓;
  • 部署阶段:延迟和算力预算严苛------必须轻量、高效。

一个长期阻碍这条研究路线的认知障碍是:我们倾向于把"知识"等同于学到的参数值,于是很难理解"改变模型的形式而保留知识"怎么可能。Hinton 给出的更抽象、也更关键的视角是:知识是学到的从输入向量到输出向量的映射,它不该绑定于任何具体的参数实例化。

还有一个更早的前置工作必须先说清楚:Caruana 及其合作者(即上一篇博客讨论的 Ba & Caruana 所沿用的 Model Compression)已经证明,一个大集成所学到的知识可以被压缩进一个极易部署的单模型。本文正是在此基础上做了关键性的技术升级------用"带温度的 softmax"这一更通用的压缩技术替代 Caruana 的 logit 匹配。

中心思想

全文的论证链条可以拆成四层:

  1. 参数不是知识,映射才是。 训练大型模型的目标是最大化正确答案的平均对数概率,但学习的副产品是模型给所有错误答案也分配了概率。即使这些概率极小,它们之间的相对大小携带了大量模型泛化方式的线索。
  2. 错误答案的相对概率是极难用小概率表达的"暗知识"(dark knowledge)。 一个 BMW 的图像被误判为垃圾车的概率极小,但比误判为胡萝卜的概率大得多。这个比值刻画了数据间丰富的相似结构,却因为过于接近零而在转移阶段的交叉熵里几乎没有影响。
  3. 软目标的熵远高于硬目标。 每条训练样本能携带的信息量远多于 one-hot 标签,且样本间的梯度方差小得多,因此学生模型可以用少得多的数据 、高得多的学习率进行训练。
  4. 把教师 softmax 的温度升高到 T T T,学生也在同一高温下学习软目标,训练完成后再回到 T = 1 T=1 T=1 推理。 高温让 softmax 输出更平坦,把压在小概率里的暗知识"放大"到可学的程度。

一句话概括:与其让一个小模型在原始标签上重新学一遍,不如让它去模仿一个学得很好的大模型对每个样本"是怎么想的"------包括它认为哪些错误答案是彼此相似的。

主要方法

1. 带温度的 softmax

标准 softmax 中每个类的概率为:

q i = exp ⁡ ( z i / T ) ∑ j exp ⁡ ( z j / T ) q_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)} qi=∑jexp(zj/T)exp(zi/T)

其中 z i z_i zi 是 logit, T T T 是温度,正常训练取 T = 1 T=1 T=1。抬高 T T T 会让概率分布变得更平坦、更均匀。注意两个阶段温度不同:生成教师软目标时用高温,训练学生匹配软目标时也用同一高温;学生训练完成后,推理阶段用 T = 1 T=1 T=1。

2. 双目标损失

当转移集里部分样本有真实标签时(作者发现直接用原始训练集效果就很好),最佳做法不是去修改软目标,而是对两个目标函数做加权:

  • 软目标交叉熵 :用学生模型在高温 T T T 下的输出与教师软目标计算交叉熵;
  • 硬目标交叉熵 :用同一组 logits 在 T = 1 T=1 T=1 下与真实标签计算交叉熵。

第二项的权重通常取得显著更低。原因有二:小模型往往无法精确匹配软目标,而朝正确答案方向的偏差恰好是有益的;硬标签仍提供教师没有的监督信号。

3. T 2 T^2 T2 补偿------为什么必须乘、如何理解

这是论文最容易被一笔带过、却必须讲透的技术点。每个样本对学生第 i i i 个 logit 的交叉熵梯度为:

∂ C ∂ z i = 1 T ( q i − p i ) \frac{\partial C}{\partial z_i} = \frac{1}{T}\left(q_i - p_i\right) ∂zi∂C=T1(qi−pi)

当温度 T T T 相对 logit 的量级足够高时, exp ⁡ ( z i / T ) ≈ 1 + z i / T \exp(z_i/T) \approx 1 + z_i/T exp(zi/T)≈1+zi/T,若进一步假设每个样本的 logits 各自零均值 ( ∑ j z j = ∑ j v j = 0 \sum_j z_j = \sum_j v_j = 0 ∑jzj=∑jvj=0),梯度可化简为:

∂ C ∂ z i ≈ 1 N T 2 ( z i − v i ) \frac{\partial C}{\partial z_i} \approx \frac{1}{NT^2}\left(z_i - v_i\right) ∂zi∂C≈NT21(zi−vi)

也就是说,在高温极限下,最小化交叉熵梯度等价于最小化 1 2 ( z i − v i ) 2 \frac{1}{2}(z_i - v_i)^2 21(zi−vi)2------即 Caruana 的 logit 匹配只是蒸馏在 T → ∞ T \to \infty T→∞ 时的特例 。注意这里有个方向性问题:梯度幅值正比于 1 / T 2 1/T^2 1/T2,所以若同时使用硬、软目标,必须把软目标的梯度乘以 T 2 T^2 T2,否则改变温度超参实验时,硬标签与软目标的相对贡献会发生漂移。

4. 实验与关键结论

MNIST 。大网络(2×1200 ReLU + dropout + 权重约束,输入随机抖动 2 像素)测试集 67 个错误;2×800 的小网络无正则化 146 个错误;但若让小网络仅 通过匹配大网络在 T = 20 T=20 T=20 下的软目标做正则,错误降到 74。更惊人的是迁移集里没有任何平移样本,学生却学到了大网络从平移数据中学到的泛化方式。温度选择呈现清晰的规律:隐藏单元 ≥300 时 T > 8 T>8 T>8 结果相近;骤降到每层 30 单元时, T ∈ 2.5 , 4 T \in 2.5, 4 T∈2.5,4 显著更优------学生容量越小,越该用较低温度,这支持了"低温会忽视那些远低于均值、因教师损失函数约束不足而可能充满噪声的负 logit"这一解释。

MNIST 缺类实验是全文最精彩的部分,直接演示了知识迁移而非记忆:

设置 测试错误率 备注
转移集中删除全部数字 3 --- 206 个错误,其中 133 个落在测试集 1010 个 "3" 上
对 3 类偏置 +3.5 109 个错误(14 个是 3) 学生从未见过 3,却答对了 98.6% 的测试 3
转移集只含 7 和 8 47.3% 错误 把 7、8 两类偏置下调 7.6 后降至 13.2%

语音识别。基线是 Android 语音搜索同款的 DNN 声学模型:8 隐层 × 2560 ReLU、14,000 个 HMM 状态标签、约 8500 万参数、26 帧 40 维 Mel 滤波器组输入,训练数据 2000 小时(约 7 亿样本)。

系统 帧准确率 WER
基线单模型 58.9% 10.9%
10 模型集成 61.1% 10.7%
蒸馏单模型 60.8% 10.7%

超过 80% 的集成增益被转移进了单个学生模型,而学生可以直接部署。作者还对比了 Li et al. 的相关工作( T = 1 T=1 T=1、用大量无标注数据),其最优结果只弥合了大/小模型在硬标签下差距的 28%。

专家集成(JFT) 。JFT 是 Google 内部数据集:1 亿张标注图、15,000 个类别,基线卷积网络用异步 SGD 训了约六个月------"等几年训一个集成"完全不可行。作者的方案是把集成的第二部分从"多个通用模型"换成大量专家模型(specialist) :用通用模型预测的协方差矩阵 做在线 K-means 聚类,自动发现易混淆类别簇(如"茶会/复活节/婚前派对/婴儿派对"、"悬索桥/斜拉桥/高架桥"、"花冠/Signum/Astra");每个专家从通用模型权重初始化,一半样本取自其专属子集、一半随机采样,其余类别并入单一 dustbin 类。推理分两步:先用通用模型取 top-1(实验中 n = 1 n=1 n=1)得到类集合 k \mathcal{k} k,再只运行与 k \mathcal{k} k 有交集的专家,最小化

K L ( p g ∥ q ) + ∑ m ∈ A k K L ( p m ∥ q ) KL(p_g \| q) + \sum_{m \in \mathcal{A}_k} KL(p_m \| q) KL(pg∥q)+m∈Ak∑KL(pm∥q)

得到全类别分布 q q q(无闭式解,逐图用梯度下降优化)。61 个专家带来 43.1% → 45.9% 的整体提升(条件准确率 25.0% → 26.1%),且覆盖某类的专家越多,增益越大(9 个专家时 +16.6%)。关键优势是所有专家可完全独立并行训练------这正是它优于 MoE 的地方:MoE 的门控网络要让每个专家的加权训练集随其他专家变化,还要在同一批样本上比较专家表现,无法并行。

软目标即正则化。把语音实验的数据砍到 3%(约 2000 万样本):用硬标签训练 85M 参数的基线会严重过拟合(早停后测试帧准确率仅 44.5%),而用软目标训练无需早停,直接收敛到 57.0%,几乎追平用全量数据训练的 58.9%。这说明软目标是把大模型学到的正则性传递给另一模型的高效通道,也顺带解释了专家模型为何容易过拟合。

特点(优缺点)

优点

  • 命名并形式化了"知识蒸馏"这一范式,把一个此前停留在工程直觉里的做法(小模型模仿大模型输出)变成有温度参数、有损失设计的完整框架,直接定义了整个 KD 领域此后十年的标准做法。
  • 理论自洽且优雅:§2.1 用四步推导证明了 logit 匹配是高温极限下蒸馏的特例,把 Caruana 的方法统一进同一框架,而不是并列成两种技巧。
  • 温度这个超参有清晰的行为规律和解释:温度越高暗知识暴露越多,但也会放大噪声;低温会忽视那些远低于均值、教师损失函数几乎不约束的负 logit。实验(MNIST 30 单元 vs 300 单元)与理论预测一致。
  • 论证极为充分:从 MNIST 的机制性实验(缺类、温度扫描)到工业级语音系统再到 JFT 专家体系,小中大三个尺度互相印证;并诚实对比了 Li et. al 等先前工作的差距。
  • 给出了关键的正则化证据:软目标在 3% 数据下无需早停就恢复 97% 以上的全量性能,这是"软目标携带信息量远大于硬标签"最有力的实证。
  • 工程价值立竿见影:语音实验里蒸馏单模型 WER 与 10 模型集成持平,而推理成本只有十分之一;专家体系还把"训不动集成"的问题转化为"可并行的多专家训练"。

缺点与局限

  • 教师质量与无标注数据的双重依赖。迁移集可以用无标注数据(Caruana 的做法),但论文也承认用原始训练集效果不错------这意味着在标注昂贵的场景下,你仍然得先有全量标注才能训出好教师。
  • 温度、硬标签权重都是经验超参,且最优温度随学生容量剧烈变化(MNIST 上 30 单元要 2.5--4,300 单元要 8 以上),论文没有给出选择原则,只能网格搜索。
  • T 2 T^2 T2 补偿依赖"逐样本 logits 零均值"的假设才能退化为 logit 匹配,实践中 logit 通常不严格零均值,这一步只是近似。
  • 学生容量下限明显。当学生远小于教师时,中间温度最佳,但"远小"到什么程度、损失多少知识,论文只给出定性证据。
  • 专家体系并未闭环。作者自己承认,还没有证明能把专家的知识蒸馏回单个大网络------JFT 上蒸馏的对象仍是"通用模型+专家"的混合体,部署时依旧要跑多个模型。
  • 报告为 arXiv 预印本,部分结果(如专家防过拟合的软目标方案、把专家蒸馏回单网)在文中标注为"正在探索",实验规模也受限于当时的 85M 参数声学模型。
相关推荐
soft_hub11 小时前
如何从采访录音中提取新闻重点?
人工智能
Allen_LVyingbo1 小时前
生命过程的分子语言:AI 解析范式与场景应用全景研究(下)
大数据·人工智能·知识图谱·健康医疗·数据库开发·数据库架构
豆角焖肉1 小时前
SpringBoot 集成腾讯 AI 人脸识别
人工智能·spring boot·后端·人脸识别·腾讯 ai·base64 图片
AI情绪识别开源1 小时前
检信 ALLEMOTION AI驱动振动感知健康分析平台多维度技术参数
人工智能·宽度优先·推荐算法
代码方舟1 小时前
Go数据工程:利用天远柠檬查出险优化二手车批发拍卖车源出险核查合规体验
人工智能·go
杰克的技术随笔1 小时前
00_从模型推理到生产运行:2026 年 Agent、Harness 与 Runtime 总体架构
人工智能
AI情绪识别开源1 小时前
检信ALLEMOTION自主研发的FH256高精度频谱技术
人工智能·深度学习
救救孩子把1 小时前
AI面试八股文-02_2-Prompt Engineering 面试题
人工智能·面试·llm·prompt·agent·agent记忆·agent面试题
zhidian_AI1 小时前
约束编码智能体:4 个杠杆,只有 1 个能拒绝
人工智能