说到深度学习一般网络结构越深网络的效果就会越好。因为越深的网络可以得到更多的语义信息。

上图可以看出来随着网络结构的加深网络的分类,识别效果也就越好。事实是这样吗?人们对chan常规的网络直接堆叠很多层,经对图像jin进行检测,训练集,测试集的误差结果如下图:

通过下图可以看出来随着网络的加深50层的效果要比20层的效果差很多。通过实验可以发现:随着网络层级的不断增加,模型精度不断得到提升,而当网络层级增加到一定的数目以后,训练精度和测试精度迅速下降,这说明当网络变得很深以后,深度网络就变得更加难以训练了。

问题:为什么随着网络的加深跟踪效果会越来越差呢?

网络是由输入层,隐藏层,输出层组成,误差值的定义为:

根据误差结果,利用著名的“链式法则”求偏导,使结果误差反向传播从而得出权重w调整的梯度。

通过不断迭代,对参数矩阵进行不断调整后,使得输出结果的误差值更小,使输出结果与事实更加接近。

从上面的过程可以看出,神经网络在反向传播过程中要不断地传播梯度,而当网络层数加深时,梯度在传播过程中会逐渐消失(假如采用Sigmoid函数,对于幅度为1的信号,每向后传递一层,梯度就衰减为原来的0.25,层数越多,衰减越厉害),导致无法对前面网络层的权重进行有效的调整。

为解决以上问题就需要我们的深度残差网络(Deep Residual Network,简称DRN)

前面已经提到随着网络的加深,我们的网络的准确率会不断地提升然后达到饱和,最后会逐渐地降低。如下图所示·:

那么我们作这样一个假设:假设现有一个比较浅的网络已达到了饱和的准确率,这时在它后面再加上几个恒等映射层(Identity mapping,也即y=x,输出等于输入),这样就增加了网络的深度,并且起码误差不会增加,也即更深的网络不应该带来训练集上误差的上升。而这里提到的使用恒等映射直接将前一层输出传到后面的思想,便是著名深度残差网络ResNet的灵感来源。

ResNet引入了残差网络结构(residual network),通过这种残差网络结构,可以把网络层弄的很深(据说目前可以达到1000多层),并且最终的分类效果也非常好,残差网络的基本结构如下图所示,很明显,该图是带有跳跃结构的:

回想前面的假设,如果已经学习到较饱和的准确率(或者当发现下层的误差变大时),那么接下来的学习目标就转变为恒等映射的学习,也就是使输入x近似于输出H(x),以保持在后面的层次中不会造成精度下降。

在上图的残差网络结构图中,通过“shortcut connections(捷径连接)”的方式,直接把输入x传到输出作为初始结果,输出结果为H(x)=F(x)+x,当F(x)=0时,那么H(x)=x,也就是上面所提到的恒等映射。于是,ResNet相当于将学习目标改变了,不再是学习一个完整的输出,而是目标值H(X)和x的差值,也就是所谓的残差F(x) := H(x)-x,因此,后面的训练目标就是要将残差结果逼近于0,使到随着网络加深,准确率不下降。

34层网络结构:

从图中我们可以看出来他们的捷径有实线还有虚线,他们之间的区别是什么?

  • 实线的Connection部分,表示通道相同,如上图的第一个粉色矩形和第三个粉色矩形,都是3x3x64的特征图,由于通道相同,所以采用计算方式为H(x)=F(x)+x
  • 虚线的的Connection部分,表示通道不同,如上图的第一个绿色矩形和第三个绿色矩形,分别是3x3x64和3x3x128的特征图,通道不同,采用的计算方式为H(x)=F(x)+Wx,其中W是卷积操作,用来调整x维度的

除了上面提到的两层残差学习单元,还有三层的残差学习单元,如下图所示:

两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),其目的主要就是为了降低参数的数目。左图是两个3x3x256的卷积,参数数目: 3x3x256x256x2 = 1179648,右图是第一个1x1的卷积把256维通道降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,右图的参数数量比左图减少了16.94倍,因此,右图的主要目的就是为了减少参数量,从而减少计算量。

最后经检验,深度残差网络的确解决了退化问题,如下图所示,左图为平原网络(plain network)网络层次越深(34层)比网络层次浅的(18层)的误差率更高;右图为残差网络ResNet的网络层次越深(34层)比网络层次浅的(18层)的误差率更低。

经典网络结构梳理:Resnet深度残差网络结构相关推荐

  1. 深度学习经典网络(4)ResNet深度残差网络结构详解

    0.引言 ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它"简单与实用"并存,之后很多方法都建立在ResNet50或者Re ...

  2. 7 Resnet深度残差网络实现102种花卉分类

    Resnet(Deep residual network, ResNet),深度残差神经网络,卷积神经网络历史在具有划时代意义的神经网络.与Alexnet和VGG不同的是,网络结构上就有很大的改变,在 ...

  3. 详解ResNet(深度残差网络)

    引言 深度残差网络(Deep residual network, ResNet)的提出是CNN图像史上的一件里程碑事件,让我们先看一下ResNet在ILSVRC和COCO 2015上的战绩: ResN ...

  4. 【PyTorch】Resnet/深度残差网络

    1 模型描述 深度残差网络(Resnet)是由来自Microsoft Research的4位学者(Kaiming He等人)提出的卷积神经网络,在2015年的ImageNet大规模视觉识别竞赛(Ima ...

  5. Caffe 议事(一):从零开始搭建 ResNet 之 残差网络结构介绍和数据准备

    声明:Caffe 系列文章是我们实验室 黄佳斌 大神所写的内部学习文档,已经获得他的授权允许. 本参考资料是在 Ubuntu14.04 版本下进行,并且默认 Caffe 所需的环境已经配置好,下面教大 ...

  6. ResNet深度残差网络

    ResNet 论文:"Deep Residual Learning for Image Recognition" 面临的问题 ResNet解决的是深度神经网络的"退化&q ...

  7. ResNet(深度残差网络)

    参考:同济子豪兄

  8. 【深度学习之ResNet】——深度残差网络—ResNet总结

    目录 论文名称:Deep Residual Learning for Image Recognition 摘要: 1.引言 2.为什么会提出ResNet残差网络呢? 3.深度残差网络结构学习(Deep ...

  9. 深度残差网络原理理解

    1.背景 (1)残差网络的辉煌历史:残差引人瞩目的成绩则是在2015年的图像识别大赛上,其在5项数据集上取得了远远领先于第二名的效果.包括了图像的分类(152层),识别,定位(高于27%),检测(11 ...

最新文章

  1. HJ0427分隔输出
  2. A Color Picker based on manifold learning
  3. HTML DOCTYPE 的重要性
  4. 【Linux】一步一步学Linux——ssh-copy-id命令(180)
  5. wechat code miniprogram 没有找到可以构建的 NPM 包
  6. python是基于什么的内存管理方式_python的内存管理机制是什么?
  7. 对于DOM的attribute和property的一些思考
  8. PAT 乙级 1005. 继续(3n+1)猜想 (25) Java版
  9. 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类...
  10. 《Linux/UNIX系统编程手册(上、下册)》
  11. 软件项目管理1:开发计划和版本计划举例
  12. linux find命令 括号,Linux中find命令细节详解
  13. pptx 批量操作幻灯片
  14. 红蜻蜓截图工具在win7下保存截图为png失败
  15. Android手机开发常用数据库,android开发常用的数据库
  16. 如何设置Windows文件夹背景为黑色?(其实就是“深色模式”)
  17. 【SGD深入理解】vanilia SGDmomentum SGD
  18. 详解LibraBFT共识机制
  19. Echarts生成广东省地图
  20. 一)中央空调变风量变水量整体群控节能系统(专利技术)

热门文章

  1. 接口继承和实现继承的区别
  2. Quartus中D触发器入门
  3. __func__标识符
  4. centos 7中NGINX负载均衡(最详细)
  5. 美国NSA上报的微软系统漏洞,或将在网络世界掀起巨浪
  6. opencv 学习笔记(十四) grabCut
  7. Android中查看详细的错误信息的方法
  8. 高通 Android 12/13 去掉耳机音量安全弹窗
  9. (六)使用因果图法设计测试用例+一卡通充值例子
  10. matlab chipscope,chipscope数据导入matlab | 学步园