本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
自ResNet提出后,由于其效果显著,很多CNN模型都加入了ResNet的快捷连接技术
本文讲解ResNet的快捷连接技术是什么,有什么好处,以及使用时需要注意的方面
本节介绍什么是深度学习中的ResNet技术
什么是ResNet
ResNet出自出自2015年论文《Deep Residual Learning for Image Recognition》
ResNet指的是将输入快捷连接到输出上,如下图所示
在添加连接之后,被跨越的那部分网络的输出意义就变成了增量(残差),
换句话说,希望将哪部分的输出意义改为增量,就只需要将输入连接到输出就可以了
在添加ResNet快捷连接后,最终网络的输出则为:
这里的subnet指的是被连接的子模块的输出
关于ResNet的连接方式
什么是ResNet的快捷连接
在ResNet模块中,最终的输出H(x)由输入x与残差模块F(x)相加得到
因此,x与F(x)的维度必须相同,但有时F(x)与x的维度并不相同
因此更一般的形式表达如下:
也就是说,需要将x通过一个将x影射后成与F(x)的维度,再与F(x)相加
其中是一个简单的、旨在与维度F(x)对齐的映射
ResNet三种常用的连接方式
ResNet原文中提供了三种连接方式,如下:
1. 恒等连接
即
恒等连接只有x与F(x)维度一致时才能使用
2. 零填充快捷连接
即为"用0将x填充到与F(x)一样的维度"
3.投影快捷连接
即
假设F(x)有m个通道,x有n个通道,
则投影快捷连接可以理解为将x的n个维度重新线性组合成m个维度
恒等连接方式与零填充快捷方式都不需要额外的参数
而投影快捷则需要引入新的、待训练的参数w
本节介绍ResNet有什么用,为什么要加入ResNet
为什么要加入ResNet
ResNet主要用于解决网络退化的问题,下面介绍什么是网络退化
什么是网络退化
当卷积神经网络已经达到一定的深度时,深度对于网络开始显得无力
表现为随着卷积神经网络深度的加深,误差不会更加小,而是更加大
下图是ResNet原文中用于说明网络退化的实验结果图:
左图是训练误差与网络层数的关系,右图则是测试误差与网络层数的关系
网络退化指的就是这种现象:网络的层数达到一定程度后,误差不但不降反而上升
ResNet为什么能解决网络退化
网络退化中训练误差增加的主要原因是由求解能力引起的,
当层数越来越深,参数越来越多,求解的复杂度越来越大,达到一定程度时,求解能力就跟不上了,
因此,当网络深到一定程度时,无法求得一个较好的解,效果就会比浅层网络的效果更加差
而ResNet加入快捷连接后,可以使网络非常容易求得恒等网络,
因为只需要被快捷连接部分的权重、阈值全为0,那么被快捷连接部分的输出为0,整体输出就与输入一致
因此,增加一个ResNet模块,一般不会导致网络整体效果变得更差,也即解决了网络退化的问题
在ResNet原文中,甚至展示了一个1000层的卷积神经网络,模型仍然不退化,效果也比以往一些模型效果更好
ResNet的优点
自从ResNet提出后,许多网络都加入了ResNet技术来改进网络的效果
ResNet已经成为了一种通用技术,ResNet的优点如下:
1.保障了网络不退化
由于非常容易求得恒等网络,所以很大程度上不会因为增加层数而导致网络退化
2.减轻了每层的拟合压力
加入残差连接后,该层只需要拟合增量,这样的任务要比原来的难度大大下降
因此,每层所使用的神经元数量也可以大大下降,从而大大降低了网络的体量
3.增加网络的稳定性,即泛化能力
由于引入ResNet结构的网络每层都只是作为增量
因此逐层的变化往往不会非常急剧,从而使得训练出来的网络更加稳定
4.加速训练
由于每层只是作为增量,拟合任务并不复杂,
因此参数往往只需在初始值上进行微调即可,这就使得训练更加容易
ResNet技术-总结
总的来说,ResNet就是对某部分加入一个快捷连接,此时被快捷连接跨过的部分的意义就变为残差
👉加入ResNet的好处:
加入ResNet快捷连接后,网络的训练会更快效果更好
而且网络更不容易退化,可以叠加更多的层
👉加入ResNet要注意什么:
加入ResNet需要注意子网络的输出必须与输入的维度对齐
如果不对齐,则在合并时需要通过一些方法把输入(或子网络的输出)的维度改到两者对齐
好了,ResNet的相关内容就介绍到这里了~
End