深度学习—近年来流行的卷积神经网络(一)
近年来流行的卷积神经网络
- 1. 回顾与目标
- 2. 近年来流行的卷积神经网络
- 2.1 VGGNet
- 2.1.1 感受野的概念
- 2.1.2 感受野的计算
- 2.2 GooleNet
- 2.3 ResNet
- 3. 结尾
- 参考资料
1. 回顾与目标
前面几讲,我们以LeNet
和AlexNet
为例,详细讲解了卷积神经网络的结构。从2012年AlexNet
在ImageNet
数据集上获得远超传统算法识别率以来,学术界在卷积神经网络方面进行了一系列的改进型研究工作,这一讲我们将描述这些重要的改进。
下图1是截至2015年卷积神经网络的发展图。
图1 各种不同网络在ImageNet上的结果
2012年AlexNet
将ImageNet
数据集的Top5错误率降低到16.4%。
2014年VGGNet
和GooleNet
分别将Top5错误率降低到7.3% 和 6.7%。
2015年ResNet
将这个错误降低到3.57%,首次达到和真人不相上下的错误率。
在这一讲中,我们将大致讲解VGGNet
、GooleNet
和ResNet
的结构。同时我们将这三个网络的论文链接附在参开资料中,供大家下载学习。
2. 近年来流行的卷积神经网络
2.1 VGGNet
首先是VGGNet
,下图2是16层和19层的VGGNet
(VGG16
和VGG19
)以及它们与AlexNet
的对比图。
图2 VGG16、VGG19以及AlexNet的对比图
VGGNet
对AlexNet
的改进包括两个方面:
- 增加了网络的深度
- 用多个3×3卷积核叠加代替更大的卷积核,用以增加感受野(
Receptive Field
)
2.1.1 感受野的概念
在卷积神经网络中,感受野(Receptive Field
)的定义是卷积神经网络每一层输出的特征图(Feature Map
)上的像素点在输入图片上映射的区域大小。在通俗一点的解释是特征图上的一个点对应输入图上的区域,如下图3所示。
图3 感受野
图3最右边绿色特征图上左上角的一个点对应的感受野是最左边原图像上5×5
的方格。
2.1.2 感受野的计算
下面我们通过两个例子来介绍感受野是如何计算的。
例1:两层3×3的卷积核卷积操作之后,第三层特征图上的每一个点的感受野是5×5,其中卷积核(filter
)的步长(stride
)为1、padding
为0。其计算的方式如下图所示。
图4 感受野的计算演示
例2:如果步长stride=2,则两层3×3
卷积核操作之后,第三层特征图上每一个点的感受野是15×15。
计算感受野的一般公式为:
RFi=(RFi−1−1)×stridei−1+KSIZEiRF_i=(RF_{i-1}-1)×stride_{i-1}+KSIZE_iRFi=(RFi−1−1)×stridei−1+KSIZEi
其中,RFiRF_iRFi第iii层的感受野,strideistride_istridei第iii层的步长,KSIZEiKSIZE_iKSIZEi是iii层的卷积核大小。
可见,在步长stride=1
的情况下,两个3×3
的卷积核叠加后的感受野和5×5
的卷积核相同,这也就是VGGNet
为什么要用多个3×3
的卷积核叠加取代AlexNet
中较大卷积核的原因。
更详细的分析一下,2个3×3
的卷积核待求参数18个,而1个5×5
的卷积核待求参数25个。因此用更小的卷积核叠加代替大的卷积核可以起到降低待估计参数的作用。但是多层卷积需要更大的计算量,中间过程过程特征图也需要更多的储存空间,因此VGGNet
是一个计算和存储开销都较大的网络。
2.2 GooleNet
2014年提出的GooleNet
也采用了这种利用小卷积核叠加来代替大卷积核的思路,GooleNet
提出了Inception
结构,Inception
结构是用一些1×1
,3×3
和5×5
的小卷积核用固定方式组合到一起来代替大的卷积核,达到增加感受野和减少参数个数的目的。
下图是GooleNet
的结构。
图5 GooleNet网络结构
共有22层,利用Inception
结构,GooleNet
将参数个数缩小到500万个左右,比AlexNet
小了12倍,同时GooleNet
获得了ILSVRC'14
测试冠军(6.7%top 5 error
)
2014年研究人员分析了深度神经网络,并从理论和实践上证明更深的卷积神经网络能够达到更高的识别准确率(L.J. Ba and R.Caruana,Do deep nets really need to be deep? NIPS 2014.)。因此,如何构建让更深的卷积神经网络收敛成了研究领域共同关注的问题。
2.3 ResNet
在2015年,Kaiming He
等人发明了ResNet
,使得训练深层的神经网络成为了可能(K. He,X. Zhang S. Ren and J.sun, Deep residual learning forimage recognition,cVPR2016.)。ResNet
的作者首先发现训练一个浅层的网络无论是在训练集还是测试集上都比深层网络表现得好,而且是在训练的各个阶段持续的表现得好。如下图6所示,20层的卷积神经网络在不同的数据集上都比56层的卷积神经网络要好。
图6 20层与56层网络性能对比
于是作者产生了一个很简单的想法,竟然20层的网络表现比56层要好,那么我们大不了另外36层什么都不做,直接将第20层的输出加入到第56层中,因此就产生了ResNet
的核心思想,如下图7所示。
图7 ResNet的核心思想
将浅层的输出直接加到深层当中去,当然在实际的添加中,由于浅层和深层的特征图在维度上有可能不一致导致无法直接相加,我们可以用一个线性变换直接把浅层特征图的维度变为深层特征图的维度。例如假设浅层特征图用向量 XXX 表示,那么用一个线性变换X′=wTX+BX'=w^TX+BX′=wTX+B可以使变化后的向量X′X'X′与生成的特征图维度一致,而矩阵 www 和 BBB 可以作为待求变量被学习。这是2015年提出的ResNet50
的结构,如下图8所示。
图8 ResNet50的网络结构
共有50层,可以看到中间有很多浅层加入深层的操作,训练技巧如下:
-- Batch Normalization
-- Xavier initialization
-- SGD + Momentum (0.9)
-- Learning Rate:0.1
-- Batch size 256
-- Weight decay 1e-5
-- No dropout
经过前面的学习能够相对容易的看懂这些技巧。
ResNet
在2015年将ImageNet
测试集错误率降低到3.57%。到目前为止,ResNet
这种将浅层的输出直接加入到深层的结构被广泛应用于深度学习的训练中,运用ResNet
的结构已经可以训练成百上千层的卷积神经网络了。
寻找更好的神经网络结构的努力一直在持续,严格的说这是一个需要在识别精度、计算量、存储量三个方面平衡取舍的问题。近年来,流行的趋势是利用紧凑的、小而深的网络代替以往稀疏的、大而浅的网络,同时在具体的实践过程中加入一些创意和技巧。近年来流行的例如ShuffleNet
、MobileNet
等都是其中的典型代表,另一方面,网络结搜索(Network Architecture Search
),即如何从一大堆网络结构中搜索适合具体的网络结构成为领域内另一个热点问题。
本讲最后,给出截至2016年各种不同的卷积神经网络在ImageNet
上的计算量和识别率的对比图。横坐标是网络的计算量,纵坐标是网络的Top1识别率。
图9 不同网络计算量和识别率的联合比较
图10 不同网络识别率比较
可以看到,近年来涌现出了很多在计算量和识别精度上都远远超过AlexNet
的卷积神经网络。
3. 结尾
本讲主要讲了继AlexNet
之后的卷积神经网络的发展历史,我们以VGGNet
为例介绍了感受野的概念,也讲到了训练深层卷积神经网络常用的ResNet
结构。
最后有一道讨论题:
如果大家对卷积神经网络感兴趣,可以查询最近几年流行的卷积神经网络的论文,总结这些神经网络的优势与劣势,同时,请大家讨论为什么这些网络结构能够流行?其中是否有一些设计网络结构的技巧和规律呢?
参考资料
- 浙江大学《机器学习》课程—胡浩基老师主讲
- Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).
- Christian Szegedy, Wei Liu, Yangqing Jia et al “Going Deeper with Convolutions.” arXiv:1409.4842
- K. He,X. Zhang S. Ren and J.sun, Deep residual learning forimage recognition,cVPR2016.
- L.J. Ba and R.Caruana,Do deep nets really need to be deep? NIPS 2014.
如果文章对你有帮助,请记得点赞与关注,谢谢!
深度学习—近年来流行的卷积神经网络(一)相关推荐
- 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战
深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战 神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络 ...
- 深度学习笔记其五:卷积神经网络和PYTORCH
深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...
- 【深度学习】Tensorflow搭建卷积神经网络实现情绪识别
[深度学习]Tensorflow搭建卷积神经网络实现情绪识别 文章目录 1 Tensorflow的基本使用方法1.1 计算图1.2 Feed1.3 Fetch1.4 其他解释 2 训练一个Tensor ...
- 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)
目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...
- 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层
目录 0. 前言 1. 最大池化(max pooling) 2. 平移不变形 3. 其他池化函数 4. 卷积和池化作为一种无限强的先验 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常 ...
- 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层
目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...
- 图像处理神经网络python_深度学习使用Python进行卷积神经网络的图像分类教程
深度学习使用Python进行卷积神经网络的图像分类教程 好的,这次我将使用python编写如何使用卷积神经网络(CNN)进行图像分类.我希望你事先已经阅读并理解了卷积神经网络(CNN)的基本概念,这里 ...
- 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇
学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...
- 深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类
文章目录 一.前期工作 1. 设置GPU 2. 导入预处理词库类 二.导入预处理词库类 三.参数设定 四.创建模型 五.训练模型函数 六.测试模型函数 七.训练模型与预测 今天给大家带来一个简单的中文 ...
最新文章
- EventBus的使用(一看就懂)
- Centos运行级别和开机过程
- rbac权限管理 php,thinkPHP3.2使用RBAC实现权限管理的实现
- 线程池底层工作原理?
- linux文件本编辑,Linux就该这么学 -- 命令 -- 文本文件编辑命令
- 用启动易合并启动光盘图解教程
- java制造null异常_Java中NullPointerException的完美解决方案
- 大神是如何装逼的 之 vim插件使用taglist和nerdtree
- 数据结构笔记(十一)串
- Mysql官网下载教程
- 从零学Java(1)之面向对象
- CSDN日报20170224——《程序员该用哪种姿势来理财》
- [原创] Bandwagon 追加 swap 大小
- 网络通信技术--设置IP地址
- java之学习记录 5 - 1 - 模拟拉勾项目介绍与后台系统搭建
- 关于DPABI头动参数问题
- python爬取网店数据_如何爬虫天猫店铺数据python
- mysql配置修改_mysql配置修改
- lenovo L480 进入bios_NVIDIA显卡刷BIOS教程,秒变超频显卡,将显卡性能发挥到极致!...
- 广东联通UNT400G_S905L3_XR819_双内存_线刷固件包
热门文章
- 自定义bootstrap样式-9行样式自定义漂亮大气bootstrap导航栏
- 一个女孩儿写的【婚后感言】
- python编写函数,计算两个矩阵的乘积。
- 前端三剑客之 CSS - JavaEE初阶 - 细节狂魔
- 杭州第一世界大酒店暖冬节,泡温泉、吃火锅邂逅温暖冬日
- android 天气软件的动态天气效果怎么实现的,超炫动态效果的安卓天气软件 《GO天气》...
- php高德定位,PHP根据ip获取地理位置(通过高德地图接口)
- 计算机主机主板电池,主板电池没电,教您电脑主板电池没电怎么办
- 图形学进阶——Early-Z和Z-prepass
- 如果计算机是中国人发明的