2. 核心概念:软标签 vs 硬标签,温度参数 T 的作用与直觉
蒸馏的核心,说白了就是让「学生」模仿「老师」的行为。但这里有个关键问题:到底模仿什么?是模仿老师最终的判断结果,还是模仿老师做判断时的「思考过程」?
这就引出了我们今天要聊的两个核心概念——硬标签和软标签,以及那个神奇的温度参数 T。
2.1 硬标签:非黑即白的答案
先说说硬标签。这是我们做分类任务时最熟悉的东西。
比如一张猫的图片,硬标签就是 [1, 0, 0](假设三类:猫、狗、鸟)。它告诉模型:这就是猫,100% 确定,其他类别概率为 0。
硬标签的特点很鲜明:
- 信息量少:只告诉模型「是什么」,没告诉「像什么」。
- 过于绝对:忽略了类别之间的相似性。
- 训练难度大:学生模型要从零开始学会这种「一刀切」的决策边界。
2.2 软标签:带有「犹豫」的答案
软标签就不一样了。它保留了老师模型在预测时的「犹豫」信息。
还是那张猫的图片。老师模型输出的 softmax 概率可能是:
- 猫:0.85
- 狗:0.12
- 鸟:0.03
这个分布告诉我们:老师觉得它「很像猫,但有一点点像狗,几乎不像鸟」。这种「像与不像」的程度,就是软标签的价值所在。
软标签的核心优势:
- 信息更丰富:包含了类别间的相似性结构。
- 训练更平滑:学生模型可以学到「猫和狗有点像,猫和鸟不太像」这种知识。
- 泛化更好:因为学到了决策边界附近的「模糊地带」。
2.3 温度参数 T:控制「犹豫」的程度
好,问题来了。老师模型输出的 softmax 概率,很多时候太「尖锐」了。比如一个训练得很好的老师,对猫的预测可能是 [0.999, 0.001, 0.000]。这跟硬标签有什么区别?
这时候就需要温度参数 T 出场了。
温度 T 的作用,就是「软化」softmax 的输出。公式很简单:
softmax(z_i / T) = exp(z_i / T) / Σ_j exp(z_j / T)
其中 z_i 是 logits(未归一化的输出),T 是温度参数。
当 T 变大时,softmax 的输出分布会变得更「平坦」;当 T 变小时,分布会变得更「尖锐」。
| T 值 | 效果 | 适用场景 |
|---|---|---|
| T → 0 | 趋近于 one-hot,几乎等于硬标签 | 几乎不用,失去了蒸馏的意义 |
| T = 1 | 标准的 softmax 输出 | 老师模型训练时常用 |
| T > 1 | 分布更平坦,类别间差异变小 | 蒸馏时常用,T=2~5 效果较好 |
| T → ∞ | 趋近于均匀分布,所有类别概率相等 | 信息完全丢失,不实用 |
2.4 温度 T 的直觉理解
为什么会这样?我换个角度解释。
想象一下,老师模型在特征空间中,对不同类别的「偏好程度」可以用 logits 来表示。logits 的绝对值越大,说明老师对这个类别的「信心」越强。
温度 T 的作用,就是「缩放」这些 logits:
- T 小:相当于放大 logits 的差异,让「强信心」的类别更突出,「弱信心」的类别被压制。
- T 大:相当于缩小 logits 的差异,让所有类别的概率都「拉近」一些。
你想想看,如果 T 很小,softmax 输出几乎就是 one-hot,那学生模型学到的跟直接用硬标签有什么区别?
如果 T 很大,所有类别的概率都差不多,那学生模型学到的就是「所有类别都一样」,这显然也不对。
所以,合适的 T 值,应该让 softmax 输出既保留类别间的「相对关系」,又不会过于尖锐。
2.5 软标签 vs 硬标签:对比总结
| 维度 | 硬标签 | 软标签 |
|---|---|---|
| 信息量 | 少,只有类别 ID | 多,包含类别间相似性 |
| 训练难度 | 高,需要大量数据 | 低,知识更「稠密」 |
| 泛化能力 | 一般 | 更好 |
| 对噪声的鲁棒性 | 差 | 好 |
| 是否需要温度 T | 不需要 | 需要,用于控制软化程度 |
| 典型应用 | 标准分类训练 | 知识蒸馏 |
2.6 知识体系图:软标签、硬标签与温度 T 的关系
下面这张图,帮你理清这几个概念之间的关系:
2.7 实际应用中的选择建议
说了这么多理论,到底怎么用?我给出几条实际建议:
- 什么时候用硬标签?
- 数据量足够大,模型容量也够大时
- 任务本身类别间差异非常明显(比如区分猫和汽车)
- 你只是想快速 baseline,不追求极致性能
- 什么时候用软标签?
- 学生模型比老师模型小很多(典型的蒸馏场景)
- 类别间有细粒度差异(比如区分不同品种的狗)
- 训练数据有限,需要「知识迁移」来弥补数据不足
- 温度 T 怎么调?
- 从 T=3 开始试,观察学生模型的收敛速度和准确率
- 如果学生模型过拟合,适当增大 T
- 如果学生模型欠拟合,适当减小 T
- 不同任务、不同模型,最优 T 值差异很大,别指望一个 T 走天下