终于有个能看懂的CS231n经典CNN课程了:AlexNet/VGG/GoogLeNet(上)
消息来源:baojiabao.com 作者: 发布时间:2026-05-20

原标题:终于有个能看懂的CS231n经典CNN课程了:AlexNet/VGG/GoogLeNet(上)
大家好,我是禅师的助理兼人工智能排版住手助手条子。
今天由条子给大家推送。其实条子对人工智能不是很了解,但是禅师说:你去看看斯坦福的 CS231n 教程就了解了。
快拉倒吧。我要是能看懂还给你当助手?
不过好在还是有明白人,对 CS231n 的 CNN 课程进行了翻译,并加入了译者对课程的理解和解读。
条子表示看过以后,确实对 CNN 有了一点点新的认识,不再像以前那样只能分清美国媒体 CNN 和神经网络 CNN …
本文由译智社的小伙伴翻译。这是一群来自全国多所顶级高校、很有理想的年轻人,因为热爱人工智能,组成了一个社团(字面意义的社团),努力推进人工智能的普及。
全文大约3500字。看完大概需要好几首这首歌的时间??
文章 | gdymind
编辑 | strongnine
本文翻译总结自CS231n Lecture 9:
https://youtu.be/DAOcjicFr1Y
本篇将深入介绍当前的应用和研究工作中最火的几个CNN 网络架构 —— AlexNet、VGGNet、GoogLeNet 和ResNet,它们都在ImageNet 分类任务中有很好的表现。另外,本篇也会粗略介绍一些其他的架构。
LeNet-5 回顾
我们先来回顾一下最基本的LeNet,它可以说是首个效果比较好的CNN。它使用了5 x 5 的卷积核,stride 为1。池化层卷积核是2 x 2 的,stride 为2。最后还有几个全连接层。网络结构很简单也很容易理解。
AlexNet
接下来讲的是AlexNet,它是第一个在ImageNet 分类上表现不错的大规模的 CNN,在2012 年一举碾压其他方法获得冠军,于是开启了一个新的时代。
它的基本架构组成如下图,它是由若干卷积层、池化层、归一化层和全连接层组成的。左边方括弧里的内容为数据的形状,右边有卷积核的详细参数。总体来说AlexNet 和LeNet 很像,只不过网络层数大大增加。
整个网络架构可视化出来是这样的(输入层的224 x 224 应为227 x 227):
下面总结一下这个网络的一些特点和小细节:
1. 它是第一个使用ReLU 的网络;
2. 它使用了局部响应归一化层(Local Response Normalization Layers,LRN),。不过要注意,这种层现在已经不常用了,因为研究发现它的作用不是很大;
3. 它使用了很多数据增广(data augmentation)技术,比如翻转(flipping)、PCA Jittering、随机裁切(cropping)、颜色归一化(color normalization)等等;
4. 使用了0.5 的dropout;
5. batch size 为128;
6.SGD Momentum 为0.9;
7. 学习率为0.01,每次loss 不降的时候手动除以10,直到最后收敛;
8. L2 weight decay 为5e-4;
9. 使用7 个CNN ensemble(多次训练模型取均值),效果提升为18.2% → 15.4%。
另外提一句,从上面的架构图中,CONV1 层的96 个kernel 分成了两组,每组 48 个,这主要是历史原因,当时用的GPU 显存不够用,用了两块GPU。CONV1、CONV2、CONV4 和CONV5 在每块GPU 上只利用了所在层一半的 feature map,而CONV3、FC6、FC7 和FC8 则使用了所在层全部的feature map。
AlexNet 是第一个使用CNN 架构在ImageNet Large Scale Visual Recognition Challenge(ILSVRC)上取得冠军的网络,它能力挺不错,不过后面讲到的一些网络架构更加优秀,也是在我们实际应用中可以优先考虑使用的。
ZFNet 赢得了2013 年ILSVRC 的冠军,它所做的是对AlexNet 的超参数进行了一些改进,网络架构没什么太大变化。但在2014 年,有两个新的很厉害的网络架构被提出来 —— VGGNet 和GoogleNet。它们与之前网络的主要差异在于网络深度大大增加,相比于AlexNet 的8 层,它们分别有19 层和22 层。下面我们分别具体讲一下两个网络。
VGG
VGG 主要有两点改进:
1. 显著增加了网络层数(16 层到19 层)
2. 大大减小了kernel size,使用的是3 x 3 CONV stride 1 padding 1 和2 x 2 MAX POOL stride 2 这样的filter。
VGG 和AlexNet 的对比如下:
加深网络很好理解,但为什么要缩小filter 到3 x 3 呢?我们来小小地计算一下:
当使用一个7 x 7 的filter 时,它的感受野是7 x 7 的。但如果我们使用三个 3 x 3 的filter 来替换这一个7 x 7 的filter 呢?
从输入经过第一个3 x 3 filter,感受野为3 x 3,第一个filter 的输出再经过第二个3 x 3 filter,感受野为5 x 5(三个3 x 3 的相邻的区域综合起来是5 x 5),经过第三个filter 之后,感受野为7 x 7。这样,经过替代后,在感受野不变的情况下:
- 网络更深了,大大增加了网络的非线性能力;
- 网络参数变少了: 其中,为分别为输入、输出的 feature map 数。
VGG16 的具体参数如下:
可以看到,每张图片forward 的过程中需要占用约100M 的内存,这确实是个很大的数字。另外138M 的参数量,也比AlexNet 的60M 多出不少。其中占用内存大的主要是最前面的卷积层(因为网络前面部分数据量还比较大)和全连接层(之后我们可以看到一些架构通过去掉全连接层来节省内存)。
下面总结一下这个网络的一些特点和小细节:
1. 它赢得了ILSVRC’14 的冠军;
2. 它使用了和AlexNet 类似的训练方法;
3. 它没有使用AlexNet 中用的LRN 层(因为实验发现LRN 用处不大);
4. 它分为VGG16 和VGG19(其中VGG19 只是多了三层,效果稍好一些,占用内存也更多)。实际使用中VGG16 用的更多;
5. 为了提升效果使用了ensemble(多次训练模型,最后取均值);
6. FC7 中得到的feature map(也就是一个1 x 4096 的向量)提取出了很好的feature,可以用来做其他任务。
接下来讲一下同样在2014 年提出的网络GoogleNet。
GoogLeNet
GoogleNet 是ILSVRC’14 中的分类冠军,它除了使用更深的网络(22 层),还有一个更大的亮点——注重计算效率(Computational Efficiency)。GoogLeNet 中没有使用全连接层,这大大减少了参数量。此外,它还使用了“Inception 模块”(后面详细讲)。这样一来,整个网络只需要 5M 的参数量,仅仅是AlexNet 的十二分之一!
现在讲一下这个神奇的“Inception模块”。它的主要思想是设计一种效果好的局部网络拓扑结构(local network topology),也就是在网络中嵌套网络,最后把这些网络堆叠成一个网络,示意图大概是这样的:
举个Inception 模块的最naive 的栗子(见下图),输入被分别送到不同kernel size 的卷积核中(1 x 1, 3 x 3, 5 x 5),另外还加了一个池化。各部分分别产生输出之后,再把它们连成一个整体作为输出。
但是直接这样做会有问题,把各部分输出联系来之后,feature map 的数量成数倍的增长。我们的解决方案是引入“bottleneck”层,这种层使用1 x 1的卷积层,不过使用的filter 数目更少,也就是说减少了feature map 的数量,新的架构举例如下图:
注意图中的红色部分,它们将256 个feature map 减少到了64 个,也就大大降低了参数量。改进后的Inception 模块只需要358M 次操作(之前需要854M 次)。
在GoogLeNet 中,网络的开头部分是一个主干形的stem network,这个部分和之前AlexNet 和VGG 中的差不多,是卷积池化之类的层的叠加(见下图蓝框)。之后把上面说的Inception 模块串到了一起,最后加上用于分类的层形(注意没有全连接层)成了整个网络。
其中需要注意下图中框出来的部分,它们和网络的最后做了类似的工作,也输出了分类标签。最终使用三处输出一起计算loss。这样做的原因是网络层数很多,中间的结果也很有用。此外中间的这两处输出也会计算梯度,这有助于缓解这种层数很多的网络中的梯度消失的问题。
到这里,整个网络我们就介绍完啦,总体来说,网络之所以这样设计、之所以效果这么好有两方面原因。一是前面提到的Inception Model 很有用。此外还有一个重要原因,就是Google 财大气粗有钱任性,可以用大量的机器验证各种各样奇奇怪怪的网络架构,最后挑选出效果好的就行了(有钱真好.jpg)。
接下来我们的目光转向2015 年的冠军 ——ResNet,具体请看下一篇文章~
LRN 链接:
https://blog.csdn.net/u014296502/article/details/78839881
https://prateekvjoshi.com/2016/04/05/what-is-local-response-normalization-in-convolutional-neural-networks/
相关文章
B站怎么炸崩了哔哩哔哩服务器今日怎么又炸挂了?技术团队公开早先原因2023-03-06 19:05:55
苹果iPhoneXS/XR手机电池容量续航最强?答案揭晓2023-02-19 15:09:54
华为荣耀两款机型起内讧:荣耀Play官方价格同价同配该如何选?2023-02-17 23:21:27
google谷歌原生系统Pixel3 XL/4/5/6 pro手机价格:刘海屏设计顶配版曾卖6900元2023-02-17 18:58:09
科大讯飞同传同声翻译软件造假 浮夸不能只罚酒三杯2023-02-17 18:46:15
华为mate20pro系列手机首发上市日期价格,屏幕和电池参数配置对比2023-02-17 18:42:49
小米MAX4手机上市日期首发价格 骁龙720打造大屏标准2023-02-17 18:37:22
武汉弘芯遣散!结局是总投资1280亿项目烂尾 光刻机抵押换钱2023-02-16 15:53:18
谷歌GoogleDrive网云盘下载改名“GoogleOne” 容量提升价格优惠2023-02-16 13:34:45
巴斯夫将裁员6000人 众化工巨头裁员潮再度引发关注2023-02-13 16:49:06
人手不足 韵达快递客服回应大量包裹派送异常没有收到2023-02-07 15:25:20
资本微念与李子柒销声匿迹谁赢? 微念公司退出子柒文化股东2023-02-02 09:24:38
三星GalaxyS8 S9 S10系统恢复出厂设置一直卡在正在检查更新怎么办2023-01-24 10:10:02
华为Mate50 RS保时捷最新款顶级手机2022多少钱?1.2万元售价外观图片吊打iPhone142023-01-06 20:27:09
芯片常见的CPU芯片封装方式 QFP和QFN封装的区别?2022-12-02 17:25:17
华为暂缓招聘停止社招了吗?官方回应来了2022-11-19 11:53:50
热血江湖手游:长枪铁甲 刚猛热血 正派枪客全攻略技能介绍大全2022-11-16 16:59:09
东京把玩了尼康微单相机Z7 尼康Z7现在卖多少钱?2022-10-22 15:21:55
苹果iPhone手机灵动岛大热:安卓灵动岛App应用下载安装量超100万次2022-10-03 22:13:45
苹果美版iPhone可以在中国保修 从哪看怎么查询iPhone的生产日期?2022-09-22 10:00:07










