4. 知识类型与蒸馏信号
在知识蒸馏中,“知识”并不是一个抽象口号,而是教师模型在前向传播过程中产生的、可被学生模型学习利用的各种信号。不同信号对应不同的蒸馏方式,也决定了学生模型能学到什么、学不到什么。理解这些知识类型,是设计蒸馏损失函数和选择蒸馏位置的前提。
一、五类蒸馏信号的核心原理
响应蒸馏(Response Distillation)是最经典的形式。教师模型对输入样本给出 logits 或 softmax 概率,学生模型直接模仿这些输出。Hinton 提出的温度软化 softmax 就是典型代表:高温下概率分布更平滑,类别间的“暗知识”被放大,学生能学到“这张图像猫也像狗,但更像猫”的细粒度信息。
特征蒸馏(Feature Distillation)让学生模仿教师中间层的特征图。由于教师和学生通道数、空间尺寸可能不同,通常需要 1×1 卷积或全连接层做维度对齐,再计算 L2 或余弦相似度损失。它传递的是“中间表示长什么样”,适合学生容量不足、需要强引导的场景。
关系蒸馏(Relational Distillation)不关心单个样本的输出,而是关心样本之间、层之间或通道之间的关系。例如 RKD 计算样本对之间的距离结构或角度结构,让学生保持教师的关系图。它传递的是“谁和谁像、谁和谁远”的结构知识,对类别不平衡和少样本场景更鲁棒。
注意力蒸馏(Attention Distillation)让学生模仿教师的注意力图,如空间注意力(AT)或通道注意力。它告诉学生“看哪里”,在检测、分割等密集预测任务中尤其有效,因为空间位置信息比单纯类别概率更关键。
结构化知识表示(Structured Knowledge Representation)是更高层的抽象,包括图结构、原型、聚类中心、逻辑规则或提示向量。它把教师知识组织成可迁移的结构,而不是逐点模仿,常用于跨模态、跨任务和持续学习场景。
二、方法流程:如何组合多种蒸馏信号
实际工程中很少只用一种蒸馏信号。典型流程是:先确定教师和学生的层对应关系,再为每类信号设计损失项,最后加权求和联合训练。一个常见的组合配置如下:
total_loss = alpha * CE(y, student_logits)
+ beta * KL(softmax(teacher/T), softmax(student/T)) * T^2
+ gamma * MSE(proj(student_feat), teacher_feat)
+ delta * RKD(teacher_rel, student_rel)
+ eta * MSE(student_attn, teacher_attn)
其中 T 为温度,alpha、beta、gamma、delta、eta 为各项权重。权重需要根据任务和容量差距调参:容量差距大时,特征和关系蒸馏权重可适当提高;容量接近时,响应蒸馏往往已足够。
三、案例场景:不同任务如何选信号
| 任务场景 | 推荐主导信号 | 辅助信号 | 原因 |
|---|---|---|---|
| 图像分类压缩 | 响应蒸馏 | 特征蒸馏 | 类别概率已含丰富暗知识,特征可加速收敛 |
| 目标检测 / 分割 | 注意力蒸馏 | 特征蒸馏、关系蒸馏 | 空间位置和像素关系比类别概率更关键 |
| 少样本 / 长尾分类 | 关系蒸馏 | 结构化知识 | 样本间结构比单点输出更鲁棒 |
| 跨模态检索 | 结构化知识 | 关系蒸馏 | 需要对齐模态间的语义结构而非逐点特征 |
| 持续学习 | 结构化知识 | 响应蒸馏 | 原型和规则可缓解灾难性遗忘 |
四、误区与复盘
总结来看,响应蒸馏传递“答案”,特征蒸馏传递“中间表示”,关系蒸馏传递“结构”,注意力蒸馏传递“关注位置”,结构化知识传递“组织方式”。五类信号各有适用边界,工程中应根据任务、容量差距和部署约束进行组合与取舍。