深度学习之残差网络的原理

目录

一. 什么是残差(residual)

二、残差网络的背景

三、残差块(residual block)

四、深度残差学习

五、DenseNet网络和Resnets网络对比


转载:https://blog.csdn.net/u014665013/article/details/81985082

假如采用Sigmoid函数,对于幅度为1的信号,每向后传递一层,梯度就衰减为原来的0.25,层数越多,衰减越厉害),导致无法对前面网络层的权重进行有效的调整。

文章2:讲的也很好:https://blog.csdn.net/u014665013/article/details/81985082

https://zhuanlan.zhihu.com/p/35985680

https://blog.csdn.net/weixin_42398658/article/details/84639391

相关参考:

残差网络原理https://blog.csdn.net/qq_30478885/article/details/78828734

深度学习中的highway network、ResNet、Inception https://blog.csdn.net/u012052268/article/details/80347344

残差网络(Deep Residual Learning for Image Recognition) https://blog.csdn.net/u014665013/article/details/81985082

 

一. 什么是残差(residual)

  “残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。”“如果回归模型正确的话, 我们可以将残差看作误差的观测值。”

  更准确地,假设我们想要找一个 xx,使得 f(x)=bf(x)=b,给定一个 xx 的估计值 x0x0,残差(residual)就是b−f(x0)b−f(x0),同时,误差就是 x−x0x−x0。

  即使 xx 不知道,我们仍然可以计算残差,只是不能计算误差罢了。

 残差网络通过加入 shortcut connections,变得更加容易被优化。包含一个 shortcut connection 的几层网络被称为一个残差块(residual block)

图0 残差块

二、残差网络的背景

(1)为什么残差学习的效果会如此的好?与其他论文相比,深度残差学习具有更深的网络结构,此外,残差学习也是网络变深的原因?为什么网络深度如此的重要?

解:一般认为神经网络的每一层分别对应于提取不同层次的特征信息,有低层,中层和高层,而网络越深的时候,提取到的不同层次的信息会越多,而不同层次间的层次信息的组合也会越多。

(2)为什么在残差之前网络的深度最深的也只是GoogleNet 的22 层, 而残差却可以达到152层,甚至1000层?

解:深度学习对于网络深度遇到的主要问题是梯度消失和梯度爆炸,传统对应的解决方案则是数据的初始化(normlized initializatiton)和(batch normlization)正则化,但是这样虽然解决了梯度的问题,深度加深了,却带来了另外的问题,就是网络性能的退化问题,深度加深了,错误率却上升了,而残差用来设计解决退化问题,其同时也解决了梯度问题,更使得网络的性能也提升了。

 

传统的对应网络层数增加的解决方案如下所示:

图 1传统解决多层网络训练梯度问题的方法

 

图 2残差网络的基本架构

三、残差块(residual block)

  如图 20所示,xx 表示输入,F(x)F(x) 表示残差块在第二层激活函数之前的输出,即 F(x)=W2σ(W1x)F(x)=W2σ(W1x),其中 W1W1 和 W2W2 表示第一层和第二层的权重,σσ 表示 ReLU 激活函数。(这里省略了 bias。)最后残差块的输出是 σ(F(x)+x)σ(F(x)+x)。

  当没有 shortcut connection(即图 0 右侧从 xx 到 ⨁⨁ 的箭头)时,残差块就是一个普通的 2 层网络。残差块中的网络可以是全连接层,也可以是卷积层。设第二层网络在激活函数之前的输出为 H(x)H(x)。如果在该 2 层网络中,最优的输出就是输入 xx,那么对于没有 shortcut connection 的网络,就需要将其优化成 H(x)=xH(x)=x;对于有 shortcut connection 的网络,即残差块,最优输出是 xx,则只需要将 F(x)=H(x)−xF(x)=H(x)−x 优化为 0 即可。后者的优化会比前者简单。这也是残差这一叫法的由来。

“F是求和前网络映射,H是从输入到求和后的网络映射。比如把5映射到5.1,那么引入残差前是F’(5)=5.1,引入残差后是H(5)=5.1, H(5)=F(5)+5, F(5)=0.1。这里的F’和F都表示网络参数映射,引入残差后的映射对输出的变化更敏感。比如s输出从5.1变到5.2,映射F’的输出增加了1/51=2%,而对于残差结构输出从5.1到5.2,映射F是从0.1到0.2,增加了100%。明显后者输出变化对权重的调整作用更大,所以效果更好。残差的思想都是去掉相同的主体部分,从而突出微小的变化,看到残差网络我第一反应就是差分放大器”
这位朋友的回答我觉得很形象。
那么什么是更敏感,我觉得从反向传播上来看就是“梯度消失现象得以解决”。梯度是用来更新权值参数以使网络拟合的更好的,用误差项来求得,而误差项表征的其实就是对网络损失值的敏感程度(我是这么理解的)。所以说,加入了一个short connections 从反向传播上,给误差项来了一个直接向前面层的传播并相加,缓解了梯度的减小问题。从而解决了梯度消失。

在统计和最优参数选取时,统计误差以及残差是两个紧密相关,但同时又极易混淆的概念.两者都是对"样本值偏离均值"的测量. 样本误差是指样本对母本(无法观察到的)均值及真实值的均值的偏离. 残差则是指样本和观察值(样本总体)或回归值(拟合)的差额. 拟合值是统计模型的拟合结果,是依据拟合模型得出的,应该是的值; 误差和残差的差异distinction在回归中尤其重要, 精细的残差即通常所说的学生化残差…(后一句不理解)
简单理解为:
误差:即观测值与真实值的偏离;
残差:观测值与拟合值的偏离.

误差与残差,这两个概念在某程度上具有很大的相似性,都是衡量不确定性的指标,可是两者又存在区别。 误差与测量有关,误差大小可以衡量测量的准确性,误差越大则表示测量越不准确。

误差分为两类:系统误差与随机误差。其中,系统误差与测量方案有关,通过改进测量方案可以避免系统误差。随机误差与观测者,测量工具,被观测物体的性质有关,只能尽量减小,却不能避免。
残差――与预测有关,残差大小可以衡量预测的准确性。残差越大表示预测越不准确。残差与数据本身的分布特性,回归方程的选择有关。
误差: 所有不同样本集的均值的均值,与真实总体均值的偏离.由于真实总体均值通常无法获取或观测到,因此通常是假设总体为某一分布类型,则有N个估算的均值; 表征的是观测/测量的精确度;
误差大,由异常值引起.表明数据可能有严重的测量错误;或者所选模型不合适,;
残差: 某样本的均值与所有样本集均值的均值, 的偏离; 表征取样的合理性,即该样本是否具代表意义;
残差大,表明样本不具代表性,也有可能由特征值引起.
反正要看一个模型是否合适,看误差;要看所取样本是否合适,看残差;

四、深度残差学习

  1.  深度残差学习,其中又分为了三个小部分包括残差元,为什么是恒等映射?如果快捷映射不是恒等的情况?

图 3 残差网络的构思

H(x) is any desired mapping, instead hope the 2 weight layer fit H(x). where hope the 2 weight layer fit F(x), let H(x)=F(x)+x;

         对于普通网络,任意堆叠的两层网络,我们希望找到的是一个映射H(x)对应的残差元,我们添加一个快捷连接,从输入到输出,这里的快捷连接默认为恒等映射,此时的问题就从寻找映射H(x)到F(x);这里类似于在数学上,你直接去解一个方程较为复杂,你就把它分解成两个简单问题和的形式,分别去解决。

图 4 残差网络的设计统计学来源

   因此,对应于残差的初始定义,在统计学中,为实际观测值与估计值(拟合值)的差值,这里则是直接的映射H(x)与快捷连接x的差值。

2.1 残差网络

   对于残差元的主要设计有两个,快捷连接和恒等映射,快捷连接使得残差变得可能,而恒等映射使得网络变深,而恒等映射主要有两个:快捷连接为恒等映射和相加后的激活函数

 

图 5 残差网络的设计构思

这样设计的主要思想:去构造映射H(x),与构造残差映射F(x)是等价的,此外残差映射也更容易优化。

这里考虑若这个激活函数也为恒等映射时,则变为下式:

图 6 基本残差单元的介绍

若after-add后的激励函数也为恒等映射时,灰化的线,表示恒等映射了;

图 7残差网络的前向传播

   前向过程,最后的结果表示直接的前向过程,连加的运算(考虑的残差元为一个单元,残差元的内部还是两层的连乘),即从第l层可以直接到第L层,而传统的网络则是连乘运算,计算量明显不同。(从连乘到连加)

 

2.2 普通网络和残差网络的差别:

对于残差元来说,前向过程是线性的,而且后面的输入等于输入加上每一次的残差元的结果,而普通的网络,则为每一层卷积的连乘运算;

残差网络的第一大特点,反向更新解决梯度消失的问题:

   残差网络在反向传播的时候,则只求链式法则前面的部分,即从第L层的梯度可以基本上保持稳定的传递到第l层反向过程。

2.2.1残差网路和普通的网络反向传播的求导对比:

 

   之前的正向和反向可以保证计算相对简单,主要是存在两个恒等映射。其中激活函数不为恒等映射就为普通的网络结构。快捷连接部位为恒等映射时,ReLu的使用,使得学习周期大大缩短。综合速率和效率,DL中大部分激活函数应该选择ReLu。

2.2.2下面考虑如果残差网络的快捷连接不为恒等映射的情况:

 

 

 

  如此时英文描述的一样,h(xl)时,只要系数不为1,在对误差求导时总是会出现梯度消失或者梯度爆炸的问题;

 

3.深度残差网络结构

图8 深度残差网络的设计

 

残差网络的设计规则:

对于普通网络,其实对残差网络也是适用的

(1)具有相同特征图尺度大小,具有相同个数的卷积核。对应于图8右边的网络实线区域

(2)特征图的大小减半时,特征图的数目加倍。对应于图8右边的网络虚线区域

而对于虚线区域内的快捷连接,也有两种方式来解决

(1)在周围填充0来增加维度

(2) 使用投影快捷,

事实上,除了堆叠两层的残差,作者还提出了堆叠三层的网络结构,当然不是单纯的3层的3*3,这里采用的1×1, 3×3, and 1×1 的卷积层,1×1的卷积主要是用来调节唯独的,这这种设计,进一步的简化了网络的设计,计算量变低,从而使得网络更深。

几种常见的残差单元

图 9 几种常见的残差单元

图 10 batch Normalizationd的原理

BN的主要思路是对每次前向传播的过程中对数据进行正态分布的归一化调整;

 

快捷连接的多种形式:

 

其中,B 为标量函数;C,D为门设计E,F为快捷连接为卷积和dropout 

对于不同快捷连接的比较 

 

残差网络的优点:

很容易训练,值得是前向和反向都可以保证,线性使得网络加深,可以达到1000层精度提升可以被移植到其他问题。 

残差网络的应用:

图像的很多问题都可以应用、视觉识别、图像生成、自然语言处理、语音识别、广告,用户预测。

附加资源代码

ImageNet models in Caffe: https://github.com/KaimingHe/deep-residual-networks

 

五、DenseNet网络和Resnets网络对比

   DenseNet网络出发点是为了解决Resnets出现的冗余性问题。使用的参数更少,也缓解了梯度消失的问题,网络也更容易训练。Densenet和ResNests在数学表达的区别就是把Resnets中skip layer加法变成了concatenate连接运算

    深层的CNN一直以来都存在一个问题:数据在多层传播后很可能会逐渐消失。Resnet(的缺点)通过“skip connection”结构一定程度上在促进了数据在层间的流通,但接近输出的网络层还是没有充分获得网络前面的特征图。另外提一点,在针对resnet研究,之后出现WRN[9]网络说明了resnets网络可能存在冗余,提出了一个宽而浅的网络(DenseNet网络),效果证明WRN效果也不错

è¿éåå¾çæè¿°

可见,将skip-layer变成了concatenate层,也就是说后面一层和整个网络前面所有层都建立一个连接,这样会减少网络网络层数,有利于网络的训练。但是具体在使用各种框架实现DenseNets时候,可能会大大的占用显存,作者又提出针对此问题的解决方法[11],解释说这不是DenseNest本身的问题,而是目前的框架比如tensorflow、pytorch等对concatenate操作支持的不是的很好。

参考文献

[1] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

[2] He K, Zhang X, Ren S, et al. Identity mappings in deep residual networks[J]. arXiv preprint arXiv:1603.05027, 2016.

[3]重庆大学软件学院的深度学习讨论会(第二期)

  • 5
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值