教师网络架构设计:经典CNN与Transformer的博弈
做知识蒸馏,第一步就是选老师。老师选不好,学生学歪了,后面全白干。我个人习惯把教师网络分成三大流派:经典CNN、Transformer、轻量级架构。今天咱们就把这三类掰开揉碎了聊。
经典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% | 强教师 |
VGG:简单但有效
VGG的结构极其简单——就是堆卷积层。但它的参数量大得吓人。VGG-16有138M参数,VGG-19有144M。你想想看,这比ResNet-152还多一倍多。
为什么还要用VGG做教师?因为它的特征图非常"干净"。没有残差连接,没有注意力机制,就是纯粹的卷积特征。我在一个工业质检项目里,用VGG-16当教师,学生是一个3层的轻量CNN,蒸馏后学生居然达到了教师95%的精度。
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
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 |
轻量级架构: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 | 轻量级架构 |
|---|---|---|---|
| 教师能力 | 中等 | 强 | 较弱 |
| 训练成本 | 低 | 高 | 极低 |
| 特征丰富度 | 中等 | 高(全局+局部) | 低 |
| 适合学生 | 任意 | 中等以上容量 | 轻量级网络 |
| 蒸馏难度 | 低 | 高(需对齐注意力) | 低 |
| 推荐指数 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |