共计 1996 个字符,预计需要花费 5 分钟才能阅读完成。
1. 背景与历史意义
2012 年,AlexNet 在 ImageNet 竞赛中以 15.3% 的 Top- 5 错误率(第二名为 26.2%)震惊学术界,标志着深度学习时代的正式开启。该模型由多伦多大学的 Alex Krizhevsky 等人提出,其成功可归结于三大突破:

- 硬件革新 :首次使用双 GPU(GTX 580)并行训练,5- 6 天完成训练
- 数据规模 :利用 ImageNet 的 120 万张图像(1000 类别)验证大数据价值
- 算法创新 :ReLU、Dropout 等技术的引入解决了传统 Sigmoid 的梯度消失问题
2. 网络架构解析
2.1 整体结构
graph LR
A[227x227x3 输入] --> B[Conv1 11x11 stride4] --> C[MaxPool] --> D[Conv2 5x5 pad2] --> E[MaxPool] --> F[Conv3-5 3x3] --> G[FC6-8]
2.2 核心创新点
- ReLU 激活函数
- 计算速度比 Sigmoid 快 6 倍
- 有效缓解梯度消失问题
-
公式:$f(x) = max(0,x)$
-
局部响应归一化 (LRN)
- 模拟生物神经元的侧向抑制机制
- 增强特征间对比度
-
后续研究发现 BatchNorm 效果更佳
-
重叠池化 (Overlapping Pooling)
- 使用 3 ×3 窗口 +stride2
- 比传统 2 ×2 stride2 提升 0.4% 准确率
- 增加特征多样性
3. 技术对比:AlexNet vs LeNet-5
| 特性 | LeNet-5 | AlexNet |
|---|---|---|
| 输入尺寸 | 32×32 | 227×227 |
| 卷积核 | 5×5 | 11×11/5×5/3×3 |
| 激活函数 | Sigmoid | ReLU |
| 正则化 | – | Dropout(0.5) |
| 训练数据 | MNIST(6 万) | ImageNet(120 万) |
4. 现代 CNN 演进脉络
- VGG:深化网络(19 层),全部采用 3 ×3 卷积
- ResNet:残差连接解决深层网络退化
- EfficientNet:复合缩放统一调整深度 / 宽度 / 分辨率
5. PyTorch 实现核心结构
import torch.nn as nn
class AlexNet(nn.Module):
def __init__(self, num_classes=1000):
super().__init__()
self.features = nn.Sequential(
# Conv1: 96 kernels 11x11 stride4
nn.Conv2d(3, 96, 11, stride=4, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(3, stride=2),
# Conv2: 256 kernels 5x5 pad2
nn.Conv2d(96, 256, 5, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(3, stride=2),
# Conv3-5: 384/384/256 kernels 3x3
nn.Conv2d(256, 384, 3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(384, 384, 3, padding=1),
nn.ReLU(inplace=True),
nn.Conv2d(384, 256, 3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPool2d(3, stride=2),
)
self.classifier = nn.Sequential(nn.Dropout(0.5),
nn.Linear(256*6*6, 4096),
nn.ReLU(inplace=True),
nn.Dropout(0.5),
nn.Linear(4096, 4096),
nn.ReLU(inplace=True),
nn.Linear(4096, num_classes),
)
def forward(self, x):
x = self.features(x)
x = torch.flatten(x, 1)
x = self.classifier(x)
return x
6. 现代项目实践建议
- 迁移学习 :
- 使用预训练权重初始化
-
仅微调最后全连接层
-
架构优化 :
- 用 BatchNorm 替代 LRN
-
使用更小的卷积核(如 3 ×3)
-
训练技巧 :
- 学习率预热 (Learning Rate Warmup)
- 混合精度训练
7. 思考题
- 为什么 AlexNet 在第一个卷积层使用 11×11 大核?(现代网络多采用 3 ×3)
- 如何改进 AlexNet 以适应现代高分辨率输入(如 512×512)?
- LRN 被 BatchNorm 取代的根本原因是什么?
参考文献
- Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[J]. NIPS 2012.
- Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. ICLR 2015.
正文完
