CNN-卷积神经网络

【原理】ResNet技术

作者 : 老饼 发表日期 : 2024-01-18 11:19:30 更新日期 : 2024-02-25 22:21:59
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



自ResNet提出后,由于其效果显著,很多CNN模型都加入了ResNet的快捷连接技术

本文讲解ResNet的快捷连接技术是什么,有什么好处,以及使用时需要注意的方面




     01. 什么是ResNet     



本节介绍什么是深度学习中的ResNet技术



      什么是ResNet      


ResNet出自出自2015年论文《Deep Residual Learning for Image Recognition
ResNet指的是将输入快捷连接到输出上,如下图所示
 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              





     02. ResNet有什么用     



本节介绍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 







联系老饼