卷积神经网络的网络结构——ResNet
- 《Deep Residual Learning for Image Recognition》
- 2015,kaiming He et al,ResNet。
ResNet由微软研究院的kaiming He等4名华人提出,通过使用Residual Unit成功训练152层深的神经网络,在ILSVRC 2015比赛中获得了冠军,取得3.57%的top5错误率,同时参数量却比VGGNet低,效果非常突出。ResNet的结构可以极快地加速超深神经网络的训练,模型的准确率也有非常大的提升。
ResNet最初的灵感出自这个问题:在不断增加神经网络的深度时,会出现一个Degradation(退化)的问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为不光在测试集上误差增大,训练集本身误差也会增大。
假设有一个比较浅的网络达到了饱和的准确率,那么后面再加上几个y=x的全等映射层,起码误差不会增加,即更深的网络不应该带来训练集上误差上升。而这里提到的使用全等映射直接将前一层输出传到后面的思想,就是ResNet的灵感来源。假定某段神经网络的输入是x,期望输出是H(x),如果我们直接把输入x传到输出作为初始结果,那么此时我们需要学习的目标就是F(x) = H(x) - x。如图所示,这就是一个ResNet的残差学习单元(Residual Unit),
ResNet相当于将学习目标改变了,不再是学习一个完整的输出H(x),只是输出和输入的差别H(x)-x,即残差。
这个Residual block通过shortcut connection实现,通过shortcut将这个block的输入和输出进行一个element-wise的加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。
接下来,作者就设计实验来证明自己的观点。
下图为VGGNet-19,以及一个34层深的普通卷积神经网络,和34层深的ResNet网络的对比图。可以看到普通直连的卷积神经网络和ResNet的最大区别在于,ResNet有很多旁路的支线将输入直接连到后面的层,使得后面的层直接学习残差,这种结构也被称为shortcut或skip connections。
传统的卷积层或全连接层在信息传递时,或多或少会存在信息丢失、损耗等问题。ResNet在某种程度上解决了这个问题,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络则只需要学习输入、输出差别的那一部分,简化学习目标和难度。
模型构建好进行实验,在plain上观察到明显的退化现象,而ResNet上不仅没有退化,34层网络的效果反而比18层的更好,而且收敛速度更快。
对于shortcut的方式,作者提出了三个选项:
A. 使用恒等映射,如果residual block的输入输出维度不一致,对增加的维度用0来填充;
B. 在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;
C. 对于所有的block均使用线性投影。
对这三个选项都进行了实验,发现虽然C的效果好于B的效果好于A的效果,但是差距很小,因此线性投影并不是必需的,而使用0填充时,可以保证模型的复杂度最低,这对于更深的网络是更加有利的。
模型结构图中,我们可以清楚的”实线“和”虚线“两种连接方式,
1)实线的的Connection部分都是3x3x64的特征图,他们的channel个数一致,所以采用计算方式:
y=F(x)+x
2)虚线的的Connection部分分别是3x3x64和3x3x128的特征图,他们的channel个数不同(64和128),所以采用计算方式:
y=F(x)+Wx
其中W是卷积操作,用来调整x的channel维度的。
在ResNet的论文中,除了两层的残差学习单元,还有三层的残差学习单元。两层的残差学习单元中包含两个相同输出通道数(因为残差等于目标输出减去输入,即H(x) - x,因此输入、输出维度需保持一致)的33卷积;而3层的残差网络则使用了11卷积,并且是在中间33的卷积前后都使用了11的卷积,有先降维再升维的操作。另外,如果有输入、输出维度不同的情况,我们可以对x做一个线性映射变换维度,再连接到后面的层。
两层和三层的ResNet残差学习模块:
三层结构拥有相同数量的层又减少了参数量,因此可以拓展成更深的模型。于是作者提出了50、101、152层的ResNet,而且不仅没有出现退化问题,错误率也大大降低,同时计算复杂度也保持在很低的程度。
ResNet在不同层数时的网络配置,其中基础结构很类似,都是前面提到的两层和三层的残差学习单元的堆叠。
ResNet在ImageNet上的结果:
在使用了ResNet的结构后,可以发现层数不断加深导致的训练集上误差增大的现象被消除了,ResNet网络的训练误差会随着层数增加而逐渐减少,并且在测试集上的表现也会变好。在ResNet推出后不久,Google就借鉴了ResNet的精髓,提出了Inception V4和Inception ResNet V2,并通过融合这两个模型,在ILSVRC数据集上取得了惊人的3.08%的错误率。可见,ResNet及其思想对卷积神经网络研究的贡献确实非常显著,具有很强的推广性。
注:博众家之所长,集群英之荟萃。
卷积神经网络的网络结构——ResNet相关推荐
- 卷积神经网络的网络结构——以LeNet-5为例
卷积神经网络的网络结构--以LeNet-5为例 2016-03-29 天狼舰 文章来源 阅 497 转 9 转藏到我的图书馆 微信 分享: QQ空间 QQ好友 新浪微博 腾讯微博 推荐给朋友 ...
- 深度学习(7): 卷积神经网络2——网络结构
文章目录 1 卷积神经网络的结构 1.1 输入层 1.2 卷积层 1.3 Pooling层 1.4 全连接层 1.5 输出层 2 卷积操作 2.1 Padding操作 2.2 滑动窗口卷积操作 2.3 ...
- 卷积神经网络AlexNet和ResNet比较[2021论文]
本文是一篇人工智能前沿算法课设小论文,主要内容是对于经典模型AlexNet和ResNet的比较.整体上比较完整,由于是从文档上搬上来,所以在排版上有一些不规范,需要完整论文或者参考文献私信可免费提供. ...
- 卷积神经网络的网络结构——VGGNet
######<Very Deep Convolutional Networks for Large-scale Image Recognition> 2014,牛津大学计算机视觉组(Vis ...
- CNN卷积神经网络的网络结构和学习原理
卷积神经网络,主要是对图片进行处理.假如需要对一个1000*1000的图片进行分类,如果用传统的机器学习或者DNN,如要输入1000000个特征,当然也可以提前用一些方法进行降维,但是处理还是不方便. ...
- RegNet——颠覆常规神经网络认知的卷积神经网络(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
RegNet的博客的准备我可谓是话费了很多的时间,参考了诸多大佬的资料,主要是网上对于这个网络的讲解有点少,毕竟这个网络很新.网上可以参考的资料太少,耗费了相当多的时间,不过一切都是值 ...
- 卷积神经网络——Alexnet8网络结构及python实现
简介: 上一节介绍了比较简单的LeNet-5网络结构,随着GPU的发展,电脑运算速度也越来越快,这就会让人去挖掘更复杂更深层次的卷积结构,于是有了双GPU运行的Alexnet8网络结构,包含了五个卷积 ...
- 卷积神经网络(CNN)综述
目录 1. 卷积神经网络概念 2. 卷积神经网络的特点 2.1 局部区域连接 2.2 权值共享 2.3 降采样 3. 卷积神经网络的结构 3.1 卷积层 3.2 池化层 4. 卷积神经网络的研究进展 ...
- CS231n课程笔记翻译9:卷积神经网络笔记
译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客和猴子翻译完成,堃堃和李艺颖进行校对修改. 原文如下 内容列 ...
最新文章
- 分布式文件系统(HDFS)与 linux系统文件系统 对比
- 为什么java需要静态类_java – 为什么OOP中静态类的最佳实践有所不同?
- ​MobileViT 它来了!Apple 提出轻量、通用、适用于移动设备的Transformer!
- PowerDesigner(四)-业务处理模型
- mysql 小写null 大写null_mysql中的null字段值的处理及大小写问题
- 修改蓝牙耳机按键映射_拆解报告:QCY T4 TWS蓝牙耳机
- 手机的寿命到底是多久,你多长时间换一次手机?
- 自动化测试十大疑问解答 软件测试人必看
- 数据恢复的学习旅程开始
- hdu-5673 Robot(默次金数)
- Oracle 定时任务(dbms_jobs)、expdp 与 impdp 数据泵导入导出
- linux 蓝牙测试程序下载,Linux下蓝牙测试软件包和命令介绍
- 宗成庆《自然语言理解》第二章作业
- JSONObject.fromObject 日期类型转换问题
- MATLAB篇之层次分析法
- linux oel7没有网络,OEL7.2下Oracle11.2.0.4RAC部署
- EAN13条形码校验公式及代码实现
- x264去方块滤波函数解析(二)
- 「罗马人的故事 II 汉尼拔战记」读后感
- 深度学习图片分类实战学习