关系基蒸馏:样本间结构即知识
本文定位与前置知识
本文属于「主流方法体系」中的**关系基蒸馏(Relation-Based Distillation)**分支,适合已了解知识蒸馏基本框架(软标签、温度软化 softmax)的读者。若你还不熟悉 Hinton 等人提出的经典 KD 范式,建议先阅读基础知识:用温度 $T$ 软化教师网络的 softmax 得到软标签(soft targets),再以软损失与硬损失的加权和训练学生网络(Hinton et al. 2015, arXiv:1503.02531)。
经典 KD 把”单个样本的输出概率分布”当作知识来迁移。但 Park 等人(2019, RKD, arXiv:1904.05068)指出:网络学到的不只是”某个样本是什么”,还包括”样本与样本之间的结构关系”。这种关系本身就是一种可迁移的知识——这就是关系基蒸馏的核心思想。
一、为什么样本间关系也是知识
考虑一批输入样本 ${x_1, x_2, \dots, x_N}$,经过教师网络某个隐层得到特征表示 ${h_1^T, h_2^T, \dots, h_N^T}$。即便我们不知道每个样本的真实标签,这些特征点之间的几何结构(谁离谁近、三点之间的夹角)已经编码了教师的”世界观”。
关系基蒸馏的直觉是:
- 同类样本在特征空间应彼此靠近,异类样本应远离;
- 这种”相对结构”比绝对坐标更鲁棒,也更易于迁移到结构不同的学生网络;
- 学生只要复现教师特征空间中的关系结构,就能继承教师的判别能力。
因此,关系基方法不再要求学生的特征逐点对齐教师,而只要求学生复现样本之间的相对关系。
二、RKD 的两类关系损失:距离与角度
RKD(Relational Knowledge Distillation, Park et al. 2019)定义了两种最基础的关系:
1. 距离关系(Distance-wise Relation)
对任意样本对 $(i, j)$,定义其欧氏距离:
$$d_{ij} = \big| h_i - h_j \big|_2$$
为消除尺度影响,RKD 先对距离做归一化(除以所有样本对距离的平均值),得到 $\hat d_{ij}$。距离损失要求学生与教师的距离结构一致:
$$L_{\text{RKD-D}} = \frac{1}{N^2}\sum_{i,j} \left( \hat d_{ij}^{S} - \hat d_{ij}^{T} \right)^2$$
注:归一化常数与求和形式遵循 Park et al. 2019 原文约定,具体系数以原论文为准。
2. 角度关系(Angle-wise Relation)
对任意三元组 $(i, j, k)$,定义由三个特征点构成的夹角余弦:
$$\cos\theta_{ijk} = \frac{(h_i - h_j)\cdot(h_k - h_j)}{|h_i - h_j|_2,|h_k - h_j|_2}$$
角度损失要求学生复现教师特征空间中的夹角结构:
$$L_{\text{RKD-A}} = \frac{1}{N^3}\sum_{i,j,k} \left( \cos\theta_{ijk}^{S} - \cos\theta_{ijk}^{T} \right)^2$$
距离捕捉”谁更近”,角度捕捉”三点的相对朝向”,二者互补刻画整体几何结构。
三、RKD 损失组合与训练
RKD 的总关系损失是距离损失与角度损失的加权和:
$$L_{\text{relation}} = \lambda_D, L_{\text{RKD-D}} + \lambda_A, L_{\text{RKD-A}}$$
最终训练目标通常再与任务损失(如交叉熵)结合:
$$L_{\text{total}} = L_{\text{task}} + \beta, L_{\text{relation}}$$
其中 $\lambda_D, \lambda_A, \beta$ 为超参数。典型训练流程如下(伪代码):
for batch (x1..xN) in dataloader:
H_T = teacher(x).detach() # 教师特征,冻结
H_S = student(x) # 学生特征
L_rel = λD * dist_loss(H_S, H_T) + λA * angle_loss(H_S, H_T)
L_task = CrossEntropy(student_logits, y_true)
loss = L_task + β * L_rel
loss.backward(); optimizer.step()
关键点:教师仅需一次前向得到特征并 detach,学生通过最小化关系损失来拟合教师的几何结构。
四、关系知识的变体与适用场景
关系基蒸馏的优势在于对特征空间的绝对位置不敏感,因此特别适合以下场景:
- 师生结构差异较大(通道数、层数不同),逐点特征对齐困难;
- 图数据、点云、度量学习等本身以”关系”为语义的任务;
- 与响应基(输出 logits)、特征基(中间层)蒸馏互补使用,构成多层级知识迁移。
需要注意的局限(待核实其定量结论):关系损失通常需与任务损失配合,单独使用在小数据集上可能欠约束;关系损失的计算复杂度为 $O(N^2)$(距离)或 $O(N^3)$(角度),大 batch 下需采样三元组控制开销。
五、实践要点小结
- 特征层选择:关系知识通常取教师/学生的某一中间层或池化后特征,层数越深语义越抽象。
- 归一化不可省:距离务必先做尺度归一化,否则师生特征量级差异会淹没关系信号。
- 超参优先调 β:先固定关系损失内部权重,再调任务损失与关系损失的总平衡系数。
- 与经典 KD 互补:关系基蒸馏是对”软标签”之外的结构化补充,可与 Hinton 式软标签损失叠加,而非二选一。
六、与其他范式的组合策略
关系基蒸馏最大的工程价值在于”可叠加性”。它不与响应基(输出 logits)、特征基(中间层/注意力)冲突,反而能在不同抽象层级同时提供监督:
- 关系 + 响应:先用 Hinton 式软标签对齐输出分布,再用 RKD 约束特征空间结构,学生在”预测”和”内部几何”两个层面同时逼近教师。
- 关系 + 特征:特征基要求逐点对齐,对结构差异敏感;关系基只要求相对结构一致,可作为特征基在异构师生下的替代或补充。
- 分阶段训练:常见做法是前若干轮以关系损失预热(让学生先学结构),再引入软标签损失精修输出。
需要提醒:多个损失叠加会带来更多超参(各自权重),建议用”单损失基线 → 逐一加项 → 网格搜索权重”的顺序排错,避免所有损失同时上线导致无法定位问题来源。另外,关系损失对 batch 内样本构成敏感,若每批样本同质化严重(如单一类别),距离/角度信号会退化,训练时应保证 batch 内样本多样性。此外,关系基蒸馏作为一种结构化正则,本身也可独立用于”无教师”的表征学习预训练,再在其上微调,这种用法已超出严格 KD 定义,但思路同源。需要强调的是,关系损失只是”软约束”,并不能替代真实标签提供的绝对语义;在标注充足时,始终建议保留硬损失作为主监督,关系损失仅作辅助,避免学生为拟合几何结构而牺牲分类正确性。
延伸阅读 / 参考文献
- Park et al. (2019), Relational Knowledge Distillation, arXiv:1904.05068, CVPR 2019.(本文关系基蒸馏与 RKD 的核心来源)
- Hinton, Vinyals, Dean (2015), Distilling the Knowledge in a Neural Network, arXiv:1503.02531, NIPS 2014 Deep Learning Workshop.(软标签与温度软化 softmax 基础范式)