论文笔记:Distilling Knowledge via Knowledge Review
背景
论文:Distilling Knowledge via Knowledge Review(CVPR 2021,Pengguang Chen、Shu Liu、Hengshuang Zhao、Jiaya Jia,CUHK / SmartMore / Oxford;代码 Jia-Research-Lab/ReviewKD)。
知识蒸馏的已有谱系------KD 蒸 logit、FitNet 蒸单层特征、AT 蒸注意力图、PKT 蒸概率分布、CRD 蒸对比表示------一路都在回答"迁移什么知识、用什么损失度量",却共享一个从未被质疑的默认设定:师生之间的连接路径 。监督学生的第 4 个 stage 时,永远拿教师的第 4 个 stage(Fig.1(a)--© 全是同层路径)。本文第一次把"连接路径"本身当成研究对象,结论出人意料:把同层路径改成"用教师的浅层监督学生的深层",就能在分类、检测、实例分割上一致大幅提升。作者用人类学习曲线作类比:小孩当时只听得懂所教知识的一小部分,随着成长不断回顾,早年学过的东西才被逐渐消化------学生网络也需要"复习"教师早前(浅层)的知识。
中心思想
Review 机制:用教师网络的多个浅层,共同监督学生网络的一个深层。 形式化地说,学生第 i i i 层同时从教师第 1 , 2 , ... , i 1,2,\dots,i 1,2,...,i 层接收监督------多对一的跨层蒸馏,让学生"总在回顾学过的东西"。
这个方向性有扎实的实验动机(论文 Table 6,详见后文):学生的深层 stage 有能力从教师的浅层学到有用信息,收益甚至不低于同层监督;反过来,教师深层对学生浅层是灾难。因此"回顾"是单向的:只允许浅教深,不允许深教浅。
为什么这样更稳?论文的残差视角给出解释:让学生的 stage-4 特征(与 stage-3 融合后)去模仿教师的 stage-3,等价于让 stage-4 学习"学生 stage-3 与教师 stage-3 之间的残差"------这部分差值很可能正是教师质量更高的来源。相比直接拿学生深层去硬学教师浅层,残差式渐进学习更稳定。
主要方法
1. Review 机制的形式化
学生网络按降采样层切成 S 1 , ... , S n S_1,\dots,S_n S1,...,Sn 与分类头 S c S_c Sc,第 i i i 层特征 F i s = S i ∘ ⋯ ∘ S 1 ( X ) F_i^s = S_i\circ\dots\circ S_1(X) Fis=Si∘⋯∘S1(X)(教师同理)。单层/多层 KD 分别对若干同层对做距离;Review 机制把学生特征固定、让教师的浅层集体监督它(Eq.5):
L S K D R = ∑ j = 1 i D ( M i , j s ( F i s ) , M j t ( F j t ) ) \mathcal{L}{SKD}^{R}=\sum{j=1}^{i}D\!\left(M_{i,j}^{s}(F_i^{s}),\,M_{j}^{t}(F_j^{t})\right) LSKDR=j=1∑iD(Mi,js(Fis),Mjt(Fjt))
注意一个容易忽略的点:review 与传统 multiple-layers 蒸馏是互补概念 ------前者固定一个学生层、遍历教师浅层,后者遍历学生层、固定同层教师。最终框架(Eq.6)两者兼有:每个学生层 i i i 都被教师层 1.. i 1..i 1..i 监督。
2. 残差学习框架:从 n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2 对降到 n n n 对
朴素实现(Fig.2(b))要算 n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2 对特征距离,代价随深度平方增长。化简分三步:先交换双重求和的次序(Eq.9),固定教师第 j j j 层,这一项变成"教师 F j t F_j^t Fjt 与学生 F j s , ... , F n s F_j^s,\dots,F_n^s Fjs,...,Fns 的距离之和 ";再引入融合模块 U U U,把距离之和近似为融合特征的距离(Eq.10):
∑ i = j n D ( F i s , F j t ) ≈ D ( U ( F j s , ... , F n s ) , F j t ) \sum_{i=j}^{n}D(F_i^{s},F_j^{t})\;\approx\;D\!\left(U(F_j^{s},\dots,F_n^{s}),\,F_j^{t}\right) i=j∑nD(Fis,Fjt)≈D(U(Fjs,...,Fns),Fjt)
最后把融合做成递归的(Fig.2(d)):从最深层起步,学生第 n n n 层(经卷积 + 最近邻插值变换到教师尺寸;教师特征不做 变换)直接对齐教师第 n n n 层;此后向下逐层,学生第 j j j 层特征与"已融合的更深特征" F j + 1 , n s F_{j+1,n}^s Fj+1,ns 融合,再对齐教师第 j j j 层:
L M K D R = D ( F n s , F n t ) + ∑ j = n − 1 1 D ( U ( F j s , F j + 1 , n s ) , F j t ) \mathcal{L}{MKD}^{R}=D\!\left(F{n}^{s},F_n^{t}\right)+\sum_{j=n-1}^{1}D\!\left(U\!\left(F_j^{s},\,F_{j+1,n}^{s}\right),\,F_j^{t}\right) LMKDR=D(Fns,Fnt)+j=n−1∑1D(U(Fjs,Fj+1,ns),Fjt)
距离对数从 n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2 降到 n n n,且逐层递进的融合让"学生深层学教师浅层"变成"学生深层补一个残差",训练更稳。
3. ABF:注意力加权融合
两个不同 stage 的特征信息多样、关注分区不同,直接相加不合理。ABF(attention based fusion)流程:
- 高层特征 resize 到与低层特征相同的 H × W H\times W H×W;
- 两者按通道 concat,过一个 1 × 1 1\times1 1×1 卷积 + sigmoid,得到两张 H × W H\times W H×W 的空间注意力图(各负责一个输入特征,每个空间位置一个权重、通道间共享);
- 注意力图分别乘回原特征后相加: o u t = A 1 ⊙ F 低 + A 2 ⊙ F 高 \mathrm{out}=A_1\odot F_{\text{低}}+A_2\odot F_{\text{高}} out=A1⊙F低+A2⊙F高。
自适应权重让网络自己决定"这一层该多听低层还是多听高层"。
4. HCL:金字塔池化的分层上下文损失
融合特征是"复合的多层级信息",单一的全局 L2 距离太钝。HCL(hierarchical context loss)借鉴 PSPNet 的空间金字塔池化(SPP):把教师特征与学生侧融合特征各自按不同窗口大小分块做平均池化,得到多个尺度的上下文表示,逐 level 做 L2 距离后求和------不同抽象层级的知识被分开对齐。
总损失(Eq.7): L = L C E + λ L M K D R \mathcal{L}=\mathcal{L}{CE}+\lambda\mathcal{L}{MKD}^{R} L=LCE+λLMKDR。所有新模块(变换、ABF、SPP)只存在于训练期,推理图与原学生网络完全一致------测试零开销。
5. 动机实验:跨阶段蒸馏矩阵(Table 6)
ResNet20(学生,baseline 69.1)← ResNet56(教师),各有 4 个 stage,每次只用一个"学生 stage × 教师 stage"单对蒸馏:
| 学生\教师 | T1 | T2 | T3 | T4 |
|---|---|---|---|---|
| S1 | 69.5 | 69.0 | 68.2 | 66.3 |
| S2 | 69.6 | 69.6 | 61.4 | 61.1 |
| S3 | 69.2 | 69.8 | 71.0 | 50.4 |
| S4 | 69.2 | 69.3 | 70.3 | 70.3 |
三个结论:同层(对角线)确实最好 ;教师浅层监督学生深层同样有效 (S3←T2 得 69.8、S4←T3 得 70.3,均超 baseline);教师深层监督学生浅层有害(S2←T3/T4 跌到 61.4/61.1,S3←T4 崩至 50.4)------教师深层特征对学生早期阶段"太复杂、太抽象"。这正是"只回顾、不预习"单向机制的实验依据。
6. 实验结论
分类(CIFAR-100 / ImageNet,Top-1 %):
| 师生组合 | 学生 | KD | CRD | OFD | ReviewKD |
|---|---|---|---|---|---|
| WRN40-2→WRN16-2(同构) | 73.26 | 74.92 | 75.48 | 75.24 | 76.12 |
| ResNet32x4→ShuffleNetV1(异构) | 70.50 | 74.07 | 75.11 | 75.98 | 77.45 |
| ResNet50→MobileNetV2(异构) | 64.6 | 67.35 | 69.11 | 69.04 | 69.89 |
| ImageNet:ResNet50→MobileNet | 68.87 | 68.58 | 71.37 | 71.25 | 72.56 |
| ImageNet:ResNet34→ResNet18 | 69.75 | 70.66 | 71.17 | 70.81 | 71.61 |
ImageNet ResNet34→ResNet18 设定中,师生差距从此前最优的 2.14 缩到 1.70(相对提升 20%)。
检测(COCO2017,在 backbone 输出特征间蒸馏) :Faster R-CNN R101→R18:KD +0.61、FitNet +0.87、为检测定制的 FGFI +2.18,ReviewKD +3.49 (33.26→36.75 mAP);R101→R50:+2.43;R50→MobileNetV2:+4.24;RetinaNet:+2.33。通用框架把检测专用方法甩开一个身位。
实例分割(首次把 KD 用于该任务):Mask R-CNN R101→R18 mAP +2.37、R101→R50 +1.74(师生差距分别缩小 32% / 51%)、R50→MobileNetV2 +3.19。
消融(WRN16-2←WRN40-2) :同层 L2 基线 74.3 → +Review 机制 75.2 → +残差框架 75.6 → +ABF 76.0 / +HCL 75.8 → 全部合用 76.2 (方差还最小)------甚至超过了教师 WRN40-2 的 75.61。
特点(优缺点)
优点
- 开辟了"连接路径"这个新设计维度:此前所有方法只研究迁移什么,本文证明"从哪迁到哪"本身就有巨大红利,且动机实验(4×4 矩阵)证据充分。
- 残差式渐进融合既省算力又稳 : n ( n + 1 ) / 2 n(n+1)/2 n(n+1)/2 对距离降为 n n n 对,同时把"深层学浅层"改造成"深层补残差"。
- 测试零开销:ABF、SPP、变换层训练完即丢弃,部署与学生基线完全相同。
- 任务覆盖面罕见地广:分类、检测、实例分割三类任务全部 SOTA,是首个进入实例分割的蒸馏方法;跨架构设定同样稳定。
- 与 logit/特征蒸馏互补,可直接叠加;消融显示学生甚至能反超教师。
缺点
- 单向性是硬约束:教师深层→学生浅层被证明有害,机制只能"回顾"不能"预习";且隐含假设教师的 stage 数不少于学生,论文未讨论学生更深时的映射方式。
- 只使用各 stage 的输出特征,stage 内部的中间特征被放弃(作者自留的未来工作),路径设计粒度仍粗。
- Eq.10 的"距离之和 ≈ 融合特征的距离"是启发式近似 ,融合模块 U U U 越近似、信息损失越大,论文没有刻画这一误差。
- 训练开销并不为零:需要教师全程前向、逐层递归融合与 SPP,只是推理免费。
- 新引入 ABF/HCL 结构与 λ \lambda λ 等超参,换任务(检测/分割)时需按附录重新调参,便利性打折。
- 跨阶段矩阵实验只在 CIFAR-100 分类上验证,"浅教深"的方向性结论未在检测/分割任务上复验。