AlexNet:用深度卷积网络拿下 ImageNet
ImageNet Classification with Deep Convolutional Neural Networks|Alex Krizhevsky、Ilya Sutskever、Geoffrey Hinton|NIPS 2012
Ilya 为什么选它
这份书单里的大多数篇目,是 Ilya Sutskever 读过并深受影响的名作;而这篇格外特别——他自己就是作者之一。书单里「作者在场」的情况并不多见,把一篇自己署名的论文放进推荐列表,几乎等于直接告诉你:这是我人生的转折点,也是整个领域的转折点。
2012 年之前,图像识别的主流做法是「手工设计规则」:研究者凭经验设计各种特征,再把这些特征交给分类器去判别。AlexNet 在当年的 ImageNet 大规模视觉识别竞赛上,把 top-5 错误率从第二名的 26.2% 一口气打到 15.3%。领先幅度大到让整个领域不得不重新思考:也许正确的路不是更好的手工规则,而是更深的网络、更多的数据、更强的算力。
这三件套——深度、数据、GPU——正是此后十年深度学习爆发的配方。读懂这篇论文,就读懂了这份书单后续所有篇章的共同起点。
从生活说起
假设你要教一个从没见过猫的外星人认猫。第一种办法是写规则:「猫有尖耳朵、长胡须、竖瞳孔」。可你很快会发现,规则越写越长却总也写不全——折耳猫的耳朵并不尖,黑猫在暗处连眼睛都看不清,一张侧光照片就能让整套规则集体失灵。这就是手工设计规则认图的真实处境:世界的变化永远比规则快。
第二种办法完全不同:不写任何规则,搬来几百万张已经标好名字的照片,让外星人反复看、反复猜,猜错了就被纠正。看得多了,它脑子里会自己长出「什么是猫」的判断。这就像教小孩认字——没有人是靠背字典学会认字的,都是一笔一画见得多了,自然就认得了。
AlexNet 用的正是第二种办法,而且它在「看照片」这件事上动了一个关键手术:不再由人来规定该看哪些特征,而是让网络自己一层一层学出该看什么。浅层学会看线条和色块,深层把线条拼成眼睛、耳朵,再把眼睛耳朵拼成整只猫——判断标准从「人教」变成了「自悟」。
核心思想拆解
先把舞台交代清楚。ImageNet 是一个超大规模图像识别竞赛:数据集达到千万级图片、上千个类别,规模远超此前学术界常用的数据集。在这个大舞台上,AlexNet 用一个很深的卷积神经网络(Convolutional Neural Network, CNN)参赛,拿下了当年第一名。
它手里的关键武器有四件。第一件是 ReLU 激活函数:可以把它想成每个神经元门口的「单向门槛」,低于门槛的信号一律归零,超过门槛的信号原样通过。这个看似简单的开关让网络训练快了许多,深网络这才真正训得动。第二件是 Dropout(随机失活):训练时随机让一部分神经元「请假」,逼着剩下的神经元个个都能顶事,而不是整个团队依赖个别明星员工——这是防止网络死记硬背训练集的绝招。
第三件是数据增广(Data Augmentation):把一张照片左右翻转、裁一块、变变色,一张就当成好几张用,变相把数据集又扩大一圈。模型见多了各种姿势,就不容易只记住固定模样。第四件是工程硬功夫:当年单块消费级显卡的显存装不下这么大的网络,他们用两块 GTX 580 显卡把网络拆开并行训练,硬是把约 6000 万个参数的大模型喂了进去。这提醒我们,深度学习从一开始就不只是算法故事,也是算力与工程的故事。
四件武器合在一起,成绩就是最有说服力的语言:top-5 错误率 15.3%,把第二名的 26.2% 远远甩在身后。
动手算一算
top-5 错误率的意思是:模型给出前五个猜测,只要正确答案不在这五个里,这张图就算错。我们用小学算术感受一下 26.2% 到 15.3% 的差距。
假设测试集是 10000 张图。第二名错 26.2%,约等于 2620 张图的正确答案没进前五;AlexNet 错 15.3%,约 1530 张。两者相差约 1090 张——相当于每 10 张图就多答对 1 张以上,在顶尖选手之间,这是碾压级的差距。换个角度看,错误率相对下降的幅度是 (26.2 − 15.3) ÷ 26.2 ≈ 41.6%,接近四成。
再感受一下参数规模。6000 万个参数,如果每个参数是一格数字格子,排成每页 1000 格的本子,需要 6 万页。这么一大本「笔记」要反复誊写修订,靠人力手算毫无可能——这正是 GPU 必须登场的原因:它把无数次重复的乘法加法打包成大规模并行运算,相当于从「一个会计打算盘」变成「一整层楼的会计同时开工」。
它改变了什么
第一,研究风向整个掉头。2012 年之后,图像识别领域几乎全面转向「深网络 + 大数据 + GPU」的路线,手工特征设计迅速退出主舞台。此后数年在 ImageNet 上刷新纪录的工作,大多沿着这条赛道继续奔跑。
第二,它催生了系统化的知识整理。卷积网络从此成为显学,斯坦福的 CS231n 课程把这些新技术编排成一条清晰的学习路径,成为无数人入门卷积网络的第一课(见 i07 CS231n)。
第三,它抛出了新的问题:网络越深就越好吗?深到几十层、上百层之后会遇到什么?对这些问题的回答,直接引出了几年后的残差网络(见 i08 ResNet)。从这份书单自己的编排也能看出端倪:紧跟着 AlexNet 的,正是教你怎么学 CNN 的课程,和教你怎么把网络做深的 ResNet。
术语小词典
- ImageNet
- 超大规模图像数据集与年度竞赛,千万级图片、上千个类别,2010 年代图像识别的「高考考场」。
- top-5 错误率
- 模型前五个猜测里不含正确答案的图片占比,数值越低越好。
- 卷积神经网络(Convolutional Neural Network, CNN)
- 用小模板在图上滑动扫描局部花纹的网络结构,本篇与后续多篇的主角。
- ReLU(修正线性单元)
- 一种激活函数:负数归零、正数照传,像给每个神经元装了单向门槛。
- Dropout(随机失活)
- 训练时随机关闭一部分神经元,防止网络过度依赖个别通路而死记硬背。
- 数据增广(Data Augmentation)
- 通过翻转、裁剪、变色等办法把一张图变成多张训练样本,变相扩充数据集。
原文与代码
提示:本系列各篇只链接原文或官方页面;如想动手实现,建议先读完 i07 CS231n 再回头复现这篇,会顺利得多。