状态:草案(2026-10-13)。 论文中的数值已通过查阅原文及条件进行了确认。亲自尝试的部分是在笔记本电脑 CPU 上运行的玩具示例(
code/04_distill_toy.py, 2–3分钟)。TT Score 的“录像版教师 → 实时学生”蒸馏仍处于 计划阶段, 尚未在实际乒乓球数据上进行测试(研究进行中,未实测)。 系列“阅读视觉模型 2”第 4 篇。第 2 篇中的 DINO 已经是“自蒸馏”: 自监督学习 1.
目录
1. 直觉:只告知正确答案的老师,连困惑原因也一并告知的老师
如果展示手写数字“2”并只说“正确答案是 2”,学生就会把 2 和其余九个数字同等视为不同的事物。然而,如果把同样的图片展示给已经学得很好的大模型,它会这样回答:“是 2 的概率为 0.97,是 3 的概率为 0.02,是 7 的概率为 0.009,其余几乎为 0。”这些小数字中蕴含着信息。 这个 2 与 3 或 7 有点相似,而与 4 完全不相似。 这是标准答案标签中所没有的信息。
Hinton 等人(2015)将这称作“暗知识(dark knowledge)”,并建议将大模型(教师)的概率输出用作小模型(学生)的目标。这就是 知识蒸馏(knowledge distillation) 。学生比教师小得多、速度也更快,同时继承了教师积累的“相似性地图”。
2. 如何进行训练
通过温度进行柔化
训练良好的教师的概率通常接近 0/1。上述例子中 0.009 这样的小值在损失函数中毫无存在感。因此,在输入 Softmax 之前,将 Logits 除以温度 T(与第 1 篇中的 τ 是同一个控制柄,但方向相反,这里使用较大的值)。
p_교사(T) = softmax(z_교사 / T), p_학생(T) = softmax(z_학생 / T)
L = (1 − α) · CE(정답, p_학생(1)) + α · T² · KL(p_교사(T) ‖ p_학생(T))
- 当 T 较大时,较小的概率会被激活,相似性信息便会在损失函数中显现出来。
- 乘以 T² 的原因:柔化后的梯度大小大约会缩减为 1/T²。为了即使改变 T 也能保持两项之间的平衡,需要将其重新放大(引自论文)。
- 如果用较小的权重混合标准答案项通常效果更好。因为教师有时也会犯错。
- 在测试时,学生的 T 会恢复为 1。
迁移集:无需标签
蒸馏项不需要标准答案标签。只需向教师展示任意输入,其输出即为目标。因此,用于训练学生的数据(迁移集)可以是 无标签数据。这一特性正是本篇结尾我们计划的核心。
拟合目标:输出、中间特征、Token
- 输出(Logits):上述的基本形式。
- 中间特征(FitNets, 2015):首先训练学生的中间层去模仿教师的中间层特征(提示),然后对整体进行蒸馏。这是一种旨在解决难以训练又瘦又深的学生模型的问题的方法。
- 蒸馏 Token(DeiT, 2021):在 ViT 学生模型中除分类 Token 外再加入一个“蒸馏 Token”,并让该 Token 去匹配教师的答案。
3. 图解:我们的计划
TT Score 的判定有两种用途:在比赛期间将分数显示在屏幕上的 实时判定,以及在比赛结束后重新分析视频的 录像分析。两者的约束条件不同。
| 实时学生 | 录像版教师 | |
|---|---|---|
| 可见时间范围 | 直到判断瞬间 + 短暂的预判(200ms 以下) | 整个多拍回合(前后兼顾) |
| 计算预算 | 在 60fps 单帧 16.7ms 中,新模块配额不超过 5ms | 充裕(在回合结束时一次性处理,或在夜间处理) |
| 模型 | 必须小 | 可以大 |
录像版由于能够看到触地后球的去向,因此判断会更加准确。如果该教师 为数百个无标签的录像片段打上标签, 实时学生就能用比人工标注更多的样本进行学习。该计划在研究笔记中记为“双轨(实时最佳·录像最佳)与蒸馏”,目前尚未实施(研究进行中)。
4. 亲自尝试
code/04_distill_toy.py 在笔记本电脑 CPU 上运行了(输出 code/04_distill_toy.out.txt).
A. 经典蒸馏的缩影
这是一个包含 10 类分类的任务,其中包含相互相似的配对(0和5,1和6……)。使用 3,000 个标签训练了教师(27.8 万个参数),测试准确率为 0.856。学生模型有 754 个参数(占教师的 0.27%)。
从不同温度下的教师输出中可以看出“暗知识”(测试图片,正确答案为 7)。
T=1 → [0. 0. 0. 0. 0. 0. 0. 1. 0. 0. ]
T=4 → [0.005 0.004 0.006 0. 0.001 0. 0.008 0.962 0.002 0.012]
在 T=1 时只能看到唯一答案,但当通过 T=4 进行柔化时,就会显现出数字 7 与 6、9 略有相似、而与 3、5 几乎不相似的信息。
| 学生训练方法(3 个随机种子平均值 [范围]) | 测试准确率 |
|---|---|
| (1) 仅 150 个标签 | 0.829 [0.828–0.831] |
| (2) 150 个标签 + 教师 T=1 | 0.833 [0.832–0.835] |
| (2) 150 个标签 + 教师 T=4 | 0.850 [0.846–0.853] |
| (2) 150 个标签 + 教师 T=8 | 0.844 [0.842–0.847] |
| (3) 0 个标签 + 3,000 个无标签迁移集(T=4) | 0.854 [0.850–0.861] |
如果直接使用 T=1 的教师输出,几乎没有效果,必须通过 T=4 进行柔化才能提升 2%p 左右。而且, 在完全不使用人工标签的情况下 , 仅通过教师对 3,000 个无标签数据打上的输出进行训练的学生模型达到了 0.854,几乎逼近了教师(0.856)。尽管学生的大小仅为教师的 0.27%。
我们还模仿了 Hinton 等人的一项著名实验。从迁移集中完整剔除了看起来像数字 3 的样本。学生从未将 3 作为“正确答案”见过一次。
전이 세트에서 3번을 뺀 학생: 3번 재현율 0.066, 전체 0.774
3번 출력의 치우침(bias)만 +8 올리면: 3번 재현율 0.905, 전체 0.845
虽然几乎认不出 3,但只要将关于 3 的输出偏置(bias)调高,就能答对 90%。学生通过混合在其他数字输出中的“与 3 的相似性”,学会了 3 长什么样。不过,偏置值是观察测试集后挑选的示例用法。原论文的 MNIST 实验也是相同的方向(见下表)。
B. 录像版教师 → 实时学生
这是一个在球高序列(60fps、位置噪声、10% 丢帧、模拟相机透视的缓慢抖动)中寻找弹地帧的问题。其中还混入了球击中球拍发生折射的击球,使得仅从折射形状无法确定是否为弹地。
- 教师:观察判定帧前后各 8 帧(录像版)。
- 学生:仅观察过去 16 帧以及 0 或 3 帧的未来预判(50ms)(实时)。
- 包含人工标签的多拍回合 20 个、无标签的多拍回合 300 个、验证集 40 个、测试集 200 个。阈值在验证回合中选取,评分标准是匹配 ±2 帧以内弹地的 F1 值。
- 标签为弹地帧 1,紧邻帧 0.5。由于弹地帧仅占 2.9%,因此对正样本进行了加权。
| 学生(3 个随机种子平均值 [范围]) | 预判 0 帧 | 预判 3 帧 |
|---|---|---|
| 教师(前后 8 帧,20 个回合标签) | 0.923 [0.915–0.929] | ← 相同 |
| 仅 20 个回合的人工标签 | 0.860 [0.852–0.871] | 0.875 [0.857–0.897] |
| + 教师标注的 300 个回合 | 0.886 [0.882–0.890] | 0.886 [0.879–0.897] |
| 参考:+ 人工标注的 300 个回合(上限) | 0.892 [0.885–0.895] | 0.886 [0.877–0.902] |
预判 0 帧的学生借助教师的标签从 0.860 提升到了 0.886,这几乎与同一 300 个回合由人工直接标注的情况(0.892)相当。 教师几乎完全替代了 300 个回合的人工标注。 预判 3 帧的学生也达到了 0.886,但由于起点更高,收益较小。
与教师(0.923)之间的差距并未通过蒸馏弥补。学生 无法看到的未来中包含的信息,再好的老师也无法传递。蒸馏所弥补的是“因数据不足而产生的差距”,而不是“因输入不足而产生的差距”。这一区别决定了我们在我们的计划中能够期望什么以及不能期望什么。
5. 论文数值
| 论文 | 内容 | 数值(论文) |
|---|---|---|
| Hinton 等人 2015 | MNIST:教师(1200-1200,正则化) / 学生(800-800) | 错误 67 个 / 146 个 → 对学生进行 T=20 蒸馏 74 个 |
| 〃 | MNIST:从迁移集中剔除数字 3 | 错误 206 个(其中 3 占 133 个)→ 通过 3 的偏置 +3.5 降至 109 个,测试集中数字 3 的准确率达 98.6% |
| 〃 | 语音识别:单模型 / 10 个集成 / 蒸馏后的单模型 | 帧准确率 58.9% / 61.1% / 60.8%, 词错率 10.9% / 10.7% / 10.7%。转移了集成收益的 80% 以上(T=2) |
| FitNets (2015) | CIFAR-10 | 又瘦又深的学生(19 层,约 250 万)以 91.61% 超过了教师(约 900 万)的 90.18% |
| DeiT (2021) | ImageNet, ViT-B 学生 | 匹配教师最终答案(hard)的方案(83.0%)优于概率(soft)(81.8%)。卷积教师(RegNetY-16GF)优于 Transformer 教师。包含蒸馏 Token 1000 个 Epoch 85.2%(384px)。无需外部数据,单台 8 卡 GPU 服务器 |
| Beyer 等人 2022 | ImageNet, ResNet-50 学生 | 在教师和学生中使用 相同的裁剪与相同的 mixup(一致性),并训练 9600 个 Epoch(耐心)→ 82.8%(双分辨率教师集成,单教师为 82.3%)。不使用标准答案标签,仅使用 KL 散度。预先计算教师输出反而会变差 |
| Noisy Student (2020) | ImageNet,教师为 3 亿张无标签图片打标签 | 使学生比教师更大,加入噪声(Dropout、随机深度、强增强)并重复 3 次 → EfficientNet-L2 88.4%, ImageNet-A 从 61.0 提升至 83.7% |
| EfficientAT (2023) | 声音标记,Transformer 集成 → MobileNetV3(488 万) | 基准 mAP .401,蒸馏 .458,蒸馏 + 预训练 .470. 标签损失权重 0.1 为最佳,为 0 时反而变差。比教师快 61 倍 |
| DWPose (2023) | 全身姿态,RTMPose-l 学生 | 64.8 → 66.5 AP,超越了教师 RTMPose-x(65.3) |
| DINOv2 (2023) | 从头训练 ViT-L / 从 ViT-g 蒸馏 | 线性评估 84.5% / 86.3% |
有几个现象值得注意。
- 学生超越老师的情况并不少见(FitNets、DWPose、Noisy Student)。这意味着老师的输出有时比标准标签更「适合学习」。
- 蒸馏耗时比想象中要长。 Beyer 等人将蒸馏视为“完整描摹老师的函数”,并总结认为需要让老师和学生看到相同的输入并进行极长时间的训练。
- 无标签数据才是真正的力量所在。 Noisy Student 和我们的玩具模型 B 说明了同一个道理。
6. 局限性
- 老师的错误也会被传递过去。 老师错误标记为“弹击”的数据会直接成为学生的标准答案。这也是 Noisy Student 过滤掉低置信度标签(排除 B0 置信度小于 0.3 的数据)的原因。
- 看不见的信息无法传递。 这就是上述实验 B 给我们的教训。我们不能指望实时学生掌握录像版老师的全部“预见未来的判断”。
- 领域不同会导致老师出错。 如果仅使用公开数据集(侧面固定相机)来训练老师,那么在用手机斜着拍我们的视频时,老师首先就会出错(推测)。
7. 与我们项目的联系
- 实时学生已经存在。 基于学习的弹击判定器是一个 1D 卷积模型,它观察球轨迹过去的 16 帧(前瞻为 0),参数量约为 1.8 万个。它会过滤掉规则引擎生成的弹击中该模型弹击概率较低的数据。在混合了 30fps 副本训练并用 5 个随机种子确定的版本中,当像录像一样对 OpenTTGames 的 7 场测试赛进行评分时,在 60fps 退化的 9 种条件组合下,对局胜者准确率提升了 +1.4%p(95% 区间 +0.3…+2.5),并且在 30fps 下没有下降。如果将同一个模型直接放入实际部署的流式传输路径中,在退化的 11 种条件和 627 个对局中,准确率提升了 +4.9%p(+2.9…+7.2),未经确认的错误判定从 50 起减少到 34 起。后者已被采纳并正在推进线上运行(截至 2026-10-13 研究负责人,进行中的研究——负责人代码尚在仓库之外)。由于初始结果在 30fps 下崩溃,我们更换了训练数据并重新进行了测量。在此一并说明:由于在 11 种条件下重新评估了相同的 57 个对局,因此区间较为乐观;并且由于规则引擎在观察测试赛的过程中进行了微调,基准线也较为乐观。
- 老师候选。 在录像端,我们计划测试片段级精细事件模型(第 10 篇)、抗遮挡球追踪器(第 11 篇)以及先提升至 3D 再进行判断的方法(第 9 篇)。在本次迭代中尚未运行这些模型。
- 音频领域的先例。 在通过声音听取弹击的研究中作为候选被看好的 EfficientAT,正是通过“大 Transformer → 小 CNN”蒸馏制作的模型(TT Score 模型剖析第 6 篇)。
- 姿态领域的先例。 TT Score 教练所使用的 RTMPose 系列是通过蒸馏进行扩充的 DWPose(第 8 篇)。
小结。 如果看完整场比赛的老师在数百个对局中标记出“这里是弹击”,那么只进行实时观察的学生也能学得相当好。尽管如此,它依然无法教给学生尚未发生未来的信息,因此学生的表现仍会略逊于老师。
参考文献
- Hinton, Vinyals, Dean, Distilling the Knowledge in a Neural Network, NIPS 2014 Deep Learning Workshop(arXiv 2015). https://arxiv.org/abs/1503.02531
- Romero et al., FitNets: Hints for Thin Deep Nets, ICLR 2015. https://arxiv.org/abs/1412.6550
- Touvron et al., Training data-efficient image transformers & distillation through attention(DeiT), ICML 2021. https://arxiv.org/abs/2012.12877
- Beyer et al., Knowledge distillation: A good teacher is patient and consistent, CVPR 2022. https://arxiv.org/abs/2106.05237
- Xie et al., Self-training with Noisy Student improves ImageNet classification, CVPR 2020. https://arxiv.org/abs/1911.04252
- Schmid et al., Efficient Large-Scale Audio Tagging via Transformer-to-CNN Knowledge Distillation(EfficientAT), ICASSP 2023. https://arxiv.org/abs/2211.04772
- Yang et al., Effective Whole-body Pose Estimation with Two-stages Distillation(DWPose), ICCV 2023 Workshop. https://arxiv.org/abs/2307.15880
- Oquab et al., DINOv2, TMLR 2024. https://arxiv.org/abs/2304.07193
- 示例代码与输出:
code/04_distill_toy.py,code/04_distill_toy.out.txt