图像分类
问题
CNN 和 ViT 分别如何做图像分类?经典架构是怎样演进的?
答案
一、架构演进
二、关键架构
| 模型 | 核心创新 | 深度 |
|---|---|---|
| AlexNet | GPU 训练、ReLU、Dropout | 8 层 |
| VGG | 小卷积核(3×3)堆叠 | 16/19 层 |
| ResNet | 残差连接(跳跃连接) | 50/101/152 层 |
| ViT | Transformer 用于视觉 | 12/24 层 |
ResNet 残差连接
x → [Conv → BN → ReLU → Conv → BN] → + → ReLU → 输出
└──────────────跳跃连接──────────────┘
解决了深层网络的梯度消失问题,使训练 100+ 层网络成为可能。
ViT(Vision Transformer)
三、CNN vs ViT
| 对比维度 | CNN | ViT |
|---|---|---|
| 感受野 | 局部(逐层扩大) | 全局(自注意力) |
| 归纳偏置 | 平移不变性、局部性 | 几乎没有 |
| 数据需求 | 中等 | 大量数据 |
| 小数据集 | 更好 | 更差(需预训练) |
| 大数据集 | 瓶颈 | 更好 |
常见面试问题
Q1: ResNet 残差连接为什么有效?
答案:
- 残差连接让梯度可以直接跳过多层传播,缓解梯度消失
- 学习残差 比直接学习 更容易
- 最差情况下 ,网络退化为恒等映射,不会变差
Q2: ViT 为什么需要大量数据?
答案:
- CNN 有归纳偏置(局部性、平移不变性),即使小数据也能学到有效特征
- ViT 没有这些先验假设,需要从数据中自行学习空间关系
- 因此 ViT 通常需要在大规模数据集(如 ImageNet-21K)上预训练,再迁移到下游任务