跳到主要内容

AlexNet 深度卷积神经网络

一、历史背景

为什么AlexNet重要?

  • 时间: 2012年
  • 成就: 在ImageNet图像识别挑战赛中以巨大优势夺冠
  • 意义: 首次证明学习到的特征可以超越手工设计的特征,开启了深度学习革命

深度学习复兴的两个关键因素

1. 数据的突破

  • ImageNet数据集(2009年发布):
    • 100万个训练样本
    • 1000个不同类别
    • 规模前所未有

2. 硬件的突破

  • GPU的应用:
    • GPU拥有100-1000个处理核心(vs CPU的4-64核)
    • 浮点运算性能比CPU高几个数量级
    • 卷积和矩阵乘法可以高效并行化
    • 使用的硬件: 两个NVIDIA GTX 580 GPU(各3GB显存)

二、AlexNet架构设计

整体结构

8层网络: 5个卷积层 + 2个全连接隐藏层 + 1个输出层

详细层次结构

输入: 224×224×1 (或3通道彩色图像)

第1层: Conv(11×11, stride=4) -> 96通道 -> ReLU -> MaxPool(3×3, stride=2)
输出: 26×26×96

第2层: Conv(5×5, padding=2) -> 256通道 -> ReLU -> MaxPool(3×3, stride=2)
输出: 12×12×256

第3层: Conv(3×3, padding=1) -> 384通道 -> ReLU
输出: 12×12×384

第4层: Conv(3×3, padding=1) -> 384通道 -> ReLU
输出: 12×12×384

第5层: Conv(3×3, padding=1) -> 256通道 -> ReLU -> MaxPool(3×3, stride=2)
输出: 5×5×256

第6层: Flatten -> FC(4096) -> ReLU -> Dropout(0.5)

第7层: FC(4096) -> ReLU -> Dropout(0.5)

第8层: FC(10) - 输出层

三、关键技术创新

1. 使用ReLU激活函数

优势:

  • 计算简单(无需复杂的指数运算)
  • 梯度恒为1(在正区间),避免梯度消失
  • 训练更容易,收敛更快

对比sigmoid:

  • Sigmoid在接近0或1时梯度几乎为0
  • 容易导致梯度消失问题

2. Dropout正则化

  • 在两个全连接层使用Dropout(p=0.5)
  • 有效防止过拟合
  • 增强模型泛化能力

3. 数据增强

  • 图像翻转
  • 随机裁剪
  • 颜色变换
  • 扩大样本量,减少过拟合

4. 更深更宽的网络

  • 卷积通道数是LeNet的10倍
  • 全连接层参数接近1GB

四、与LeNet的对比

特性LeNet-5AlexNet
层数7层8层
深度较浅更深
激活函数SigmoidReLU
正则化权重衰减Dropout
数据增强大量使用
输入尺寸28×28224×224
应用场景小数据集大规模数据集

五、PyTorch实现示例

import torch
from torch import nn

net = nn.Sequential(
# 第1层卷积
nn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=3, stride=2),

# 第2层卷积
nn.Conv2d(96, 256, kernel_size=5, padding=2),
nn.ReLU(),
nn.MaxPool2d(kernel_size=3, stride=2),

# 第3-5层卷积
nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),
nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),
nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),
nn.MaxPool2d(kernel_size=3, stride=2),

# Flatten
nn.Flatten(),

# 全连接层
nn.Linear(6400, 4096), nn.ReLU(), nn.Dropout(p=0.5),
nn.Linear(4096, 4096), nn.ReLU(), nn.Dropout(p=0.5),
nn.Linear(4096, 10) # 10类输出(Fashion-MNIST)
)

查看每层输出形状

X = torch.randn(1, 1, 224, 224)
for layer in net:
X = layer(X)
print(layer.__class__.__name__, 'output shape:\t', X.shape)

六、训练技巧

优化器配置

  • 使用SGD优化器
  • 学习率: 0.01
  • 动量: 0.9
  • 权重衰减: 0.0005

批量大小

  • 批量大小: 128
  • 受限于当时GPU显存(3GB)

学习率调度

  • 当验证集错误率不再下降时,学习率除以10
  • 训练过程中调整3次学习率

七、性能与影响

ImageNet竞赛成绩

  • Top-5错误率: 15.3% (第二名26.2%)
  • 巨大领先优势: 证明了深度学习的强大潜力

深远影响

  1. 开启深度学习革命: 激发了学术界和工业界对深度学习的兴趣
  2. GPU成为标配: GPU成为深度学习训练的必备硬件
  3. 启发后续研究: VGG、ResNet等模型都受其启发
  4. 迁移学习: 预训练的AlexNet成为迁移学习的基础模型

局限性

  • 全连接层参数过多(占总参数90%)
  • 对输入尺寸要求严格
  • 双GPU并行训练设计复杂

八、总结

AlexNet的成功证明了三个关键要素:

  1. 大数据: ImageNet的规模让深度网络充分学习
  2. 深度: 更深的网络能够学习更复杂的特征
  3. 算力: GPU使得训练深度网络成为可能

虽然现代模型已经超越了AlexNet,但它在深度学习历史上的地位不可撼动。它开启了一个新时代,让研究者们相信:更深、更大的网络 + 更多数据 + 更强算力 = 更好的性能

参考资料