30u30 中文导读 / 30 天目录 / 第 8 天

第 8 天 · 两块 GPU 加大数据,深度学习翻身

第 2 单元ImageNet Classification with Deep Convolutional Neural NetworksAlex Krizhevsky, Ilya Sutskever, Geoffrey E. HintonNeurIPS 2012(当时名为 NIPS) · 2012
这是导读,不是翻译。先用 10 分钟拿到这篇论文的思想地图,再去读 原论文 →,去原仓库的 08_alexnet/ 目录 → 动手写代码。
给孩子讲:这一天有 10 岁孩子能听懂的讲义,带猜字游戏和动手活动,可打印。打开儿童讲义 → · PDF 简体 · PDF 繁體

一句话

AlexNet 用 5 个卷积层和 3 个全连接层,在 2 块 GPU 上训练,把 ILSVRC-2012 的 top-5 错误率降到 15.3%,第二名是 26.2%。ReLU、dropout、数据增强和 GPU 训练从此成为深度学习的标准配置。

论文讲了什么

结论先行:一个 8 层卷积神经网络(CNN),在 2 块 GPU 上训练 5 到 6 天,把 ILSVRC-2012 的 top-5 错误率降到 15.3%。第二名用手工特征,错误率是 26.2%。

问题。ImageNet 竞赛有 1000 个类别、约 120 万张训练图片。当时主流做法是手工设计特征(例如 SIFT),再接线性分类器。CNN 早在 LeNet 时代就有,但缺少足够的算力和标注数据,在大图片上训练不动。

方法。

关键结果。

关键概念

卷积神经网络(Convolutional Neural Network, CNN)
用小卷积核在图上滑动提取局部特征,同一个核在所有位置共享权重。浅层学到边缘和颜色,深层组合出物体部件和整体。
ReLU(Rectified Linear Unit)
f(x) = max(0, x)。正半轴梯度恒为 1,不像 tanh 那样在两端饱和,所以训练快得多。AlexNet 让它成为默认激活函数。
数据增强(data augmentation)
对训练图片做随机裁剪、翻转、颜色扰动,人为扩大数据集。标签不变,模型被迫学到对这些变化不敏感的特征。
dropout
训练时随机让一部分神经元输出为 0,防止神经元互相依赖。AlexNet 用在前两个全连接层,详细原理见第 12 天。
top-5 错误率(top-5 error rate)
模型给出概率最高的 5 个类别,正确答案不在其中才算错。ImageNet 类别很细,例如上百种狗,所以竞赛以 top-5 为主要指标。

历史位置:为什么值得读

它终结了一个时代的争论。2012 年以前,计算机视觉的主流是手工特征,神经网络被很多人认为难训练、难解释。AlexNet 在 ILSVRC-2012 上领先第二名约 11 个百分点。这个差距大到无法忽视,视觉领域在两三年内全面转向深度学习。

三个条件同时成熟。2009 年李飞飞团队发布 ImageNet,提供了足够的标注数据。NVIDIA 的 CUDA 让 GPU 可以做通用计算。Krizhevsky 自己写了高效的 GPU 卷积代码(cuda-convnet)。作者在论文里明确说:更快的 GPU 和更大的数据集会带来更好的结果。

它开启了一条清晰的后续路线。2013 年 ZFNet 可视化并调优了 AlexNet;2014 年 VGG 把大卷积核换成多层 3×3 小核;2015 年 ResNet(第 9 天)把深度推到 152 层。dropout 的完整论文是第 12 天。2013 年 Google 收购了三位作者创办的 DNNresearch。Sutskever 后来参与创办 OpenAI,这份论文清单就出自他。

学前准备

在原仓库怎么学

  1. 读 README.md,它分为历史背景、结构、实现、训练技巧 4 部分。对照原论文第 3 节读。
  2. 读 implementation.py。它包含原始结构和 ReLU、dropout、LRN 三个部件。逐层核对卷积核数量、尺寸和步长是否和论文一致。
  3. 看 data/README.md,确认数据放在哪里。没有 ImageNet 时用 CIFAR-10,torchvision 会自动下载。
  4. 运行 train_minimal.py 跑一次小规模训练,再用 visualization.py 画结构图、特征图和训练曲线。
  5. 打开 notebook.ipynb,按 Part 顺序走一遍结构和关键创新。
  6. 做 exercises/ 的 5 个练习:01 从零搭 AlexNet;02 消融实验,逐个去掉创新点;03 特征可视化;04 迁移学习;05 加入现代改进。答案在 exercises/solutions/。
  7. 想多练可以做 assessments/exercises.md,含 GPU 影响模拟、ReLU 对比 Sigmoid、学习率调度、数据增强 4 题。参考答案在 assessments/solutions.md。

今天再看

活下来的:ReLU 家族(大语言模型里换成了 GELU、SwiGLU)、dropout、数据增强、GPU 训练、端到端学习。还有一个更重要的遗产:用大网络加大数据,替代人工设计。

被取代的:LRN 很快被批归一化取代,今天几乎没人用。11×11 大卷积核被多层 3×3 小核取代。按 GPU 切分卷积核是被显存逼出来的权宜之计,但它是模型并行的早期形态。今天训练大语言模型用的张量并行和流水线并行(第 24 天 GPipe),解决的是同一个问题。

和大语言模型的联系:AlexNet 证明了“规模加数据就能赢”。2020 年的规模定律(第 25 天)把这个经验写成了公式。AlexNet 的倒数第二层特征可以迁移到其他任务,这也是今天“预训练加微调”范式的源头。

容易卡住的地方

延伸阅读