深度学习中的Resnet、残差神经网络

Resnet、残差神经网络

背景

在这里插入图片描述
从上面可知,对于识别对象的不同,神经网络的选择是不一样。对于识别简单元素,少层数的神经网络已经可以胜任这个工作。对于复杂图像中识别复杂目标,少层数的神经网络往往难以胜任,而需要层数更多的神经网络。当然多层数的神经网络也能识别简单元素,不过会增加代价,比如运行时间会增长,识别速度增长等。

为啥层数多,有什么作用?

请看下图,是分别经过不同层数的神经网络层时的情况(显示的图像,比较抽象)


每一个网络层各司其职。
第一层学习到了边缘,第二层学习到了简单的形状,第三层开始学习到了目标的形状,…得到更多是语义信息。更深的网络层能学习到更加复杂的表达。
如果只有一层,那就意味着要学习的变换非常的复杂,这很难做到

口说无凭,下面是从一些权威论文所得到的实验结果。
在这里插入图片描述在这里插入图片描述
从上面可以知道,随着层数的增加,误差越来越小。这也说明层数越多的神经网络学习能力更好(捂脸)。

神经网络层数越多越好吗?

先看别人所做的实验结果
在这里插入图片描述在这里插入图片描述
从上面的这两个图可以得到几个信息:

1.层数多的神经网络比层数少的好,体现在精度比较高;
2.并没有想象中:神经网络层数越多越好;
3.随着训练迭代次数增多,训练会趋向于饱和,体现在精度并没有随着迭代次数的增多而趋向于1。(这是问题的关键,why??
4.其他信息还有吧,这里暂时没找到(抱歉呼呼呼呼)

训练为什么会饱和?这有什么含义?

答:出现梯度消失
为什么会出现这种情况呢?

在这里插入图片描述
上面是一个神经网络的模型,我们把它简化,每一层用一个神经元代表,表示如下;
在这里插入图片描述
每个神经元,每个神经元的末端是有一个激活函数表达式如下:w就是神经元输入端的权重,x就是输入值,b则是偏置。激活函数就位于神经元输出端。
在这里插入图片描述
在深度学习中,激活函数种类很多,作用效果各不相同,常用的有sigmoid函数,Relu函数,下图是sigmoid函数,因为它用的比较多,所以这里以它为例,开展分析。
在这里插入图片描述
上图不难知道,对sigmoid函数求导的话,是下图(请看下图),为什么要求导呢?因为反向传播是,求梯度时,需要求导。
在这里插入图片描述
上图是sigmoid函数的导数,可以看到,它的最大值不会超过0.25。这个很关键哦
接着我们对这个简化模型进行分析,下面的公式是输出端C到b1之间的编导,可以反映吧、i变化率对输出的影响,也反映输出端向传播时,对b1的影响(这里表述得不是很好),好,然后对它分解就可以得到下面的式子了,每一层的神经元的导数,导数的链式法则可以这样理解。
在这里插入图片描述
这里最终的式子是有很多导数的(关于激活函数sigmoid),有趣的是,我们前面也说了,这个导数的值不会超过0.25.所以当神经网络的层数增多时,最终上面公式这个值会越来越小,趋向于0.在反向传播时,我们同样的道理求梯度时(梯度是损失值对权重的偏导)这就会导致梯度的消失。
圈重点,敲黑板啦:
层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。

Resnet的出现

ResNet在一定程度上解决了这个问题,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络只需要学习输入、输出差别的那一部分,简化学习目标和难度。能够避免梯度消失这个问题,从而保护信息的完整性。
了解一下resnet:
ResNet(Residual Neural Network)由微软研究院的Kaiming He等四名华人提出,通过使用ResNet Unit成功训练出了152层的神经网络,并在ILSVRC2015比赛中取得冠军,在top5上的错误率为3.57%,同时参数量比VGGNet低,效果非常突出。ResNet的结构可以极快的加速神经网络的训练,模型的准确率也有比较大的提升。同时ResNet的推广性非常好,甚至可以直接用到InceptionNet网络中。
在这里插入图片描述
假设:如果不使用残差网络结构,这一层的输出F’(5)=5.1 期望输出 H(5)=5 ,如果想要学习H函数,使得F’(5)=H(5)=5,这个变化率较低,(5.1-5)/5.1=2%,学习起来是比较困难的。但是如果设计为H(5)=F(5)+5=5.1,进行一种拆分,使得F(5)=0.1,那么学习目标是不是变为F(5)=0,(0.1-0)/0.1=100%,可见引入残差后映射对输出变化变的更加敏感了。这也就是为什么ResNet虽然层数很多但是收敛速度也不会低的原因。所以实际上多层网络都是以下这种网络结构:

在这里插入图片描述
通过这种结构,就能避免梯度会越来越小,导致权重在更新时更新率小,反映在整体上就是:训练时学习慢、学习不动,饱和了。

resnet的应用

在这里插入图片描述
yolov3中就有用到resnet。

小结

层数多很够给模型带来很多好处,为解决学习饱和,梯度消失d等问题,从而引入Resnet.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值