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 → ∞ 趋近于均匀分布,所有类别概率相等 信息完全丢失,不实用
我曾经踩过的坑: 一开始我习惯把 T 设得很大(比如 T=10),觉得「软化得越彻底越好」。结果学生模型学到的全是「模糊知识」,准确率反而下降了。后来才明白——T 太大,类别间的差异信息会被「稀释」掉。合适的 T 值,需要根据任务和模型规模来调。

2.4 温度 T 的直觉理解

为什么会这样?我换个角度解释。

想象一下,老师模型在特征空间中,对不同类别的「偏好程度」可以用 logits 来表示。logits 的绝对值越大,说明老师对这个类别的「信心」越强。

温度 T 的作用,就是「缩放」这些 logits:

  • T 小:相当于放大 logits 的差异,让「强信心」的类别更突出,「弱信心」的类别被压制。
  • T 大:相当于缩小 logits 的差异,让所有类别的概率都「拉近」一些。

你想想看,如果 T 很小,softmax 输出几乎就是 one-hot,那学生模型学到的跟直接用硬标签有什么区别?

如果 T 很大,所有类别的概率都差不多,那学生模型学到的就是「所有类别都一样」,这显然也不对。

所以,合适的 T 值,应该让 softmax 输出既保留类别间的「相对关系」,又不会过于尖锐。

我的习惯: 做图像分类蒸馏时,我一般从 T=3 开始试。如果学生模型收敛太快但准确率不高,就降低 T;如果收敛太慢,就升高 T。对于 NLP 任务,T 可以稍微大一点(4~6),因为词级别的分布通常更「稀疏」。

2.5 软标签 vs 硬标签:对比总结

维度 硬标签 软标签
信息量 少,只有类别 ID 多,包含类别间相似性
训练难度 高,需要大量数据 低,知识更「稠密」
泛化能力 一般 更好
对噪声的鲁棒性 差 好
是否需要温度 T 不需要 需要,用于控制软化程度
典型应用 标准分类训练 知识蒸馏

2.6 知识体系图:软标签、硬标签与温度 T 的关系

下面这张图,帮你理清这几个概念之间的关系:

软标签、硬标签与温度 T 的关系 老师模型 输出 logits 硬标签 (one-hot) 软标签 (概率分布) argmax softmax(z / T) 温度参数 T 控制软化程度 学生模型 直接监督 蒸馏损失 硬标签只告诉学生「是什么」,软标签告诉学生「像什么」——温度 T 控制这个「像」的程度

2.7 实际应用中的选择建议

说了这么多理论,到底怎么用?我给出几条实际建议:

  1. 什么时候用硬标签?
    • 数据量足够大,模型容量也够大时
    • 任务本身类别间差异非常明显(比如区分猫和汽车)
    • 你只是想快速 baseline,不追求极致性能
  2. 什么时候用软标签?
    • 学生模型比老师模型小很多(典型的蒸馏场景)
    • 类别间有细粒度差异(比如区分不同品种的狗)
    • 训练数据有限,需要「知识迁移」来弥补数据不足
  3. 温度 T 怎么调?
    • 从 T=3 开始试,观察学生模型的收敛速度和准确率
    • 如果学生模型过拟合,适当增大 T
    • 如果学生模型欠拟合,适当减小 T
    • 不同任务、不同模型,最优 T 值差异很大,别指望一个 T 走天下
一句话总结: 硬标签是「标准答案」,软标签是「参考答案」。温度 T 决定了参考答案的「详细程度」。蒸馏的本质,就是让学生模型从「参考答案」中学习,而不是死记硬背「标准答案」。