2. 教师网络架构设计

做知识蒸馏,第一步就是选老师。老师选不好,学生学歪了,后面全白干。我个人习惯把教师网络分成三大流派:经典CNN、Transformer、轻量级架构。今天咱们就把这三类掰开揉碎了聊。

核心观点:没有最好的教师网络,只有最合适的。选型取决于你的学生网络结构、部署场景和计算预算。
教师网络架构三大流派 教师网络架构 经典CNN Transformer 轻量级架构 ResNet VGG ViT Swin MobileNet ShuffleNet 选型原则:教师网络容量 ≥ 学生网络 3~10 倍,且特征表示能力要强

经典CNN架构:ResNet与VGG

经典CNN做教师,最大的优势是稳定。你想想看,ResNet和VGG在ImageNet上跑了多少年了?各种trick都被研究透了。我最早做蒸馏时,用的就是ResNet-50当老师,学生是MobileNet,效果出奇的好。

ResNet:残差连接的威力

ResNet的核心是残差块。说白了,就是让网络可以"跳过"一些层,直接传递梯度。这解决了深层网络退化的问题。做教师时,ResNet-101或ResNet-152是常见选择。

模型 参数量 Top-1准确率 适合做教师?
ResNet-50 25.6M 76.0% 中等规模教师
ResNet-101 44.5M 77.4% 推荐
ResNet-152 60.2M 78.6% 强教师
我的经验:ResNet-101是我最常用的教师。参数量适中,蒸馏时不会因为教师太强导致学生学不动。ResNet-152虽然准确率更高,但训练成本翻倍,收益却只有1%左右。

VGG:简单但有效

VGG的结构极其简单——就是堆卷积层。但它的参数量大得吓人。VGG-16有138M参数,VGG-19有144M。你想想看,这比ResNet-152还多一倍多。

为什么还要用VGG做教师?因为它的特征图非常"干净"。没有残差连接,没有注意力机制,就是纯粹的卷积特征。我在一个工业质检项目里,用VGG-16当教师,学生是一个3层的轻量CNN,蒸馏后学生居然达到了教师95%的精度。

注意:VGG做教师时,中间层的特征图尺寸变化剧烈(224→112→56→28→14→7)。设计特征迁移策略时,要特别注意对齐学生和教师的特征图尺寸。

Transformer架构:ViT与Swin

Transformer做教师,是近两年的趋势。ViT直接把图像切成patch,用自注意力建模全局关系。Swin则在ViT基础上加了窗口注意力,降低了计算复杂度。

我个人觉得,Transformer教师最大的优势是特征表示能力强。它的中间层特征包含了全局上下文信息,这对学生网络特别有帮助。但要注意,Transformer的训练成本比CNN高很多。

ViT:视觉Transformer的开山之作

ViT把图像分成16x16的patch,然后像处理词向量一样处理这些patch。它的教师能力很强,但有个问题——需要海量数据预训练。ViT-L/16在ImageNet上需要JFT-300M预训练才能达到88.5%的Top-1准确率。

# ViT作为教师网络的典型配置
teacher = ViT(
    image_size=224,
    patch_size=16,
    num_classes=1000,
    dim=1024,          # 每个patch的embedding维度
    depth=24,          # Transformer block数量
    heads=16,          # 多头注意力头数
    mlp_dim=4096,      # FFN中间层维度
    dropout=0.1,
    emb_dropout=0.1
)
# 参数量:约307M
关键点:ViT的[CLS] token输出可以作为全局特征,而所有patch token的均值可以作为局部特征。蒸馏时,我建议两者都用上。

Swin Transformer:窗口注意力的胜利

Swin解决了ViT的两个痛点:计算复杂度高、缺乏层级特征。它用窗口注意力(W-MSA)和移位窗口注意力(SW-MSA)交替,既降低了计算量,又实现了跨窗口信息交互。

我记得在一个遥感图像项目中,用Swin-B当教师,学生是ResNet-18。Swin的层级特征(4个stage)天然适合做多尺度特征迁移。每个stage的输出都可以作为蒸馏目标,学生学起来特别顺畅。

模型 参数量 计算量(GFLOPs) 特征层级
Swin-T 28M 4.5 4个stage
Swin-S 50M 8.7 4个stage
Swin-B 88M 15.4 4个stage
避坑指南:我曾经在Swin教师蒸馏时,直接用了ViT的蒸馏策略,结果效果很差。后来发现,Swin的窗口注意力特征和ViT的全局注意力特征分布不同。建议对Swin的每个stage单独设计蒸馏损失,权重可以设为[0.1, 0.2, 0.3, 0.4]。

轻量级架构:MobileNet与ShuffleNet

你可能会问:轻量级网络也能当教师?当然可以。在某些场景下,比如移动端部署,教师网络本身也要考虑推理效率。轻量级架构做教师,适合学生也是轻量级网络的情况。

MobileNet:深度可分离卷积

MobileNet的核心是深度可分离卷积。它把标准卷积拆成深度卷积和逐点卷积,参数量直接降到原来的1/8到1/9。MobileNetV3-Large有5.4M参数,但准确率能达到75.2%。

用MobileNet做教师,我一般推荐MobileNetV3-Large或MobileNetV2。它们的特征图尺寸变化规律,适合做特征迁移。但要注意,MobileNet的深度卷积层特征比较稀疏,蒸馏时建议用逐点卷积层的输出。

ShuffleNet:通道混洗的智慧

ShuffleNet用分组卷积加通道混洗,解决了分组卷积中信息流通不畅的问题。ShuffleNetV2在计算复杂度上做了极致优化,FLOPs只有ResNet-50的1/10左右。

ShuffleNet做教师有个好处——它的特征图通道数少,蒸馏时计算开销小。我在一个实时检测项目里,用ShuffleNetV2当教师,学生是更轻量的ShuffleNetV2-0.5x,蒸馏后mAP提升了3.2%。

轻量级教师适用场景:
  • 学生网络也是轻量级架构(同族蒸馏)
  • 计算资源有限,无法训练大模型
  • 需要快速迭代实验
  • 特征迁移的中间层维度容易对齐

三大流派对比总结

维度 经典CNN Transformer 轻量级架构
教师能力 中等 强 较弱
训练成本 低 高 极低
特征丰富度 中等 高(全局+局部) 低
适合学生 任意 中等以上容量 轻量级网络
蒸馏难度 低 高(需对齐注意力) 低
推荐指数 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐
重要提醒:选教师不是越大越好。我见过有人用ViT-L当教师,学生是MobileNetV3,结果蒸馏后学生反而比直接训练还差。为什么?教师太强,学生学到的特征过于复杂,反而泛化能力下降。一般建议教师参数量是学生的3-10倍。