阶段二:数据准备与增强策略
本文定位与前置知识
本文是「知识蒸馏工程化流程」四阶段系列的第二篇,紧接《阶段一:教师模型选型》。教师确定之后,下一步是准备蒸馏所用数据。与传统监督训练不同,蒸馏的数据需求有其特殊性:它既要喂给学生,也要先过一遍教师以生成软标签。
前置知识:了解”软标签”概念(见 Hinton 2015)以及伪标签(pseudo-label)思路(见 Bucilă 2006)。
1. 蒸馏数据为何特殊
在标准监督学习中,数据 = 样本 + 硬标签。在蒸馏中,数据 = 样本 + 教师生成的软标签(对教师 logits 做温度软化后的概率)。因此数据准备的核心任务有两项:
- 收集能过教师、从而获取高质量软标签的样本;
- 保证这些样本的分布与学生未来部署的分布一致。
Bucilă 等人(2006)在《Model Compression》中最早展示了这一思路的工程可行性:他们用无标签数据配合一个集成大模型生成伪标签,再训练单个小模型去拟合,从而在几乎不损失精度的前提下大幅压缩模型。这比 Hinton 等人(2015)提出温度软化软标签早了约九年,是知识蒸馏的工程先驱。
2. 无标签 / 弱标签数据的重要性
蒸馏最大的工程红利之一,就是可以大量使用无标签或弱标签数据。原因很直接:
- 生成软标签只需教师前向,不需要人工标注;
- 教师越强,软标签信息量越大,学生从海量无标签数据中获益越多;
- 当目标领域标注稀缺(如医学、工业缺陷)时,用无标签领域数据 + 强教师伪标签,往往比硬啃少量标注更有效。
Hinton 等人(2015)也强调,软标签本身携带了类间相似性等丰富信息,因此相比硬标签,蒸馏对数据量的需求更友好、对学习率也更鲁棒。这也是为什么”用无标签数据扩张蒸馏集”成为常见实践。
补充一点:当目标领域的无标签数据本身也稀缺时,Bucilă 等人(2006)在原论文中进一步提出 MUNGE 方法,基于已有数据合成逼近原分布的新样本以扩充蒸馏集(该方法的分布匹配质量依赖原始数据覆盖度,具体细节见原论文)。这说明”无标签数据”既包括真实采集的未标注数据,也包括经合理合成得到的数据——前提是合成分布必须与部署分布对齐。
3. 数据量与分布
- 分布匹配优先于数量:与教师、学生分布错位的海量数据,生成的软标签会带偏学生。应优先保证数据覆盖部署场景的真实分布,而非盲目堆量。
- 覆盖长尾:若部署中存在罕见类别,蒸馏数据应尽量覆盖,否则学生从未从教师处学到这些类的软关系。
- 与教师训练分布的一致性:教师在其训练分布内给出的软标签最可靠;把教师不熟悉的样本硬塞给它生成伪标签,噪声会放大。
实践中常做”数据审计”:把候选无标签数据按主题/来源分桶,确认每个桶都有对应教师能力支撑,再合并成蒸馏集。
4. 数据增强策略
增强(augmentation)在蒸馏中承担双重角色:
- 扩充软标签样本:同一张图做多种增强,教师对每种增强给出软标签,等价于用不同视角”提问”教师,学生学到更稳健的类间关系。
- 提升学生鲁棒性:增强后的硬输入 + 教师软标签,能减少学生过拟合到增强伪影的风险。
需注意的陷阱:
- 增强过强可能让教师自己给出不一致甚至错误的软标签,反而引入噪声;
- 软标签与增强视图应配对生成,避免”教师看原图、学生看增强图”的不对齐;
- 具体增强强度与比例应作为超参在验证集上扫描(具体最优值因任务而异,本文不给出固定数字,标注为(待核实)若需引用某数据集上的确切比例)。
5. 构建蒸馏数据集的步骤(伪代码)
输入: 教师 teacher, 无标签池 D_pool, 温度 T
输出: 蒸馏数据集 D_distill = [(x, soft_label(x))]
D_distill = []
for x in D_pool:
z_t = teacher.logits(x) # 教师前向
p_soft = softmax(z_t / T) # 温度软化
D_distill.append( (x, p_soft) )
# 可选:对 x 做增强得到 x_aug,配对生成 p_soft_aug
return D_distill
随后学生训练时,D_distill 既可单独使用(纯软标签),也可与少量带硬标签的数据混合(见阶段三的硬损失加权)。
6. 常见误区
- 误区一:蒸馏必须用标注数据。 事实上无标签数据 + 教师伪标签是蒸馏的核心优势。
- 误区二:数据越多越好,不管分布。 分布错配比数量不足更致命。
- 误区三:增强随便加。 过强增强会污染教师软标签。
7. 软标签的离线缓存 vs 在线生成
生成软标签有两种工程组织方式:
- 离线缓存:一次性用教师对所有样本前向,把软标签存盘,训练时直接读取。优点是学生训练极快、可多轮复用;缺点是占用存储,且教师更换后需重新生成。
- 在线生成:训练时每个 batch 实时调用教师前向。优点是无需存储、教师可随时替换;缺点是训练吞吐受教师推理速度制约,且教师本身大模型时成为瓶颈。
实践中,教师固定、数据量大时优先离线缓存;做教师对比实验或数据持续扩充时,在线生成更灵活。无论哪种,软标签与样本必须严格配对,避免错位。此外,蒸馏数据应做版本管理:记录软标签对应的教师版本与生成脚本,确保学生可复现;教师升级后旧软标签缓存即失效,需重新生成并标注版本。
8. 数据质量与去重
无标签数据虽易得,但质量参差。建议在做软标签前先做基本清洗:剔除损坏样本、去除与训练集严重重复的近重复项(防止学生过拟合到少数样本的软标签),并过滤掉教师置信度极低、疑似分布外(OOD)的样本——这类样本生成的软标签噪声大,反而伤害学生。蒸馏数据不是”越多越脏越好”,质量红线比数量更重要。
延伸阅读 / 参考文献
- Bucilă, Caruana, Niculescu-Mizil (2006),《Model Compression》, KDD 2006(用无标签数据 + 集成伪标签训练单个小模型,本文第 1、2 节的依据)。
- Hinton, Vinyals, Dean (2015),《Distilling the Knowledge in a Neural Network》, arXiv:1503.02531(软标签携带类间信息、对数据量更友好的论述,本文第 1、2 节的依据)。