老饼讲解-深度学习 机器学习 神经网络 深度学习
经典CNN模型
1.LeNet与ALexNet网络
2.VGG网络
3.GoogLeNet-Inception
4.ResNet

【思想】ResNet神经网络的思想

作者 : 老饼 发表日期 : 2023-07-28 10:52:00 更新日期 : 2024-01-19 11:22:03
本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com



ResNet出自2015年论文《Deep Residual Learning for Image Recognition》,是经典的卷积神经网络之一

ResNet最主要的贡献是通过快捷连接的方式,解决了网络退化问题,使得训练更加快速,以及网络层数可以加得更深
本文介绍ResNet的思想与原理,通过本文可以了解ResNet的目的以及它为什么能解决网络退化问题





    01. ResNet产生的背景-网络退化   



本节介绍什么是网络退化以及网络退化的主要原因,它是ResNet神经网络的核心问题



        什么是网络退化         


ResNet主要用于解决网络退化的问题,下面介绍什么是网络退化
当卷积神经网络已经达到一定的深度时,深度开始显得无力
表现为随着卷积神经网络深度的加深,误差不会更加小,而是更加大
 下图是原文中用于说明网络退化的实验结果图:
 什么是网络退化
 左图是训练误差与网络层数的关系,右图则是测试误差与网络层数的关系
网络退化指的就是这种现象:网络的层数达到一定程度后,误差不但不降反而上升

网络退化的原因
网络退化中训练误差增加的主要原因是由求解能力引起的,
当层数越来越深,参数越来越多,求解的复杂度越来越大,达到一定程度时,求解能力就跟不上了,
因此,当网络深到一定程度时,无法求得一个较好的解,效果就会比浅层网络的效果更加差





    02. 一个经典网络退化例子及相关思考   



本节展示一个经典的网络退化例子,作为下节理解ResNet的铺垫



      一个经典、简单的网络退化实验         


一个经典、简单的网络退化实验如下:
理解了本实验,也就理解了为什么会设计出ResNet这样的网络                            
 
一、深层神经网络的构造方法                                                                                           
假设现在已有一个全连接神经网络,然后给网络中间加上N层                                 
 这N层神经网络的神经元个数与被插的前层神经元个数保持一致,具体示图如下:   
                     网络退化-深层神经网络的构造 
可以看到,原有网络现变为一个深层神经网络,下面我们对网络加深前后进行分析 
 二、理论分析:深层网络的结果可以不比原网络更差                                                         
理论上来说,深层网络的训练结果不会比原网络更差                                             
因为只要所加的层最后都训练为恒等网络(即前层与后层的值完全一致)即可            
         恒等网络及恒等网络的解
如果所加的层都训练为恒等网络,那么深层网络的输出结果就会与原网络一致,    
 这也就是为什么说“深层网络理论上不会比原网络更差”                       
 三、实际情况                                                                                                                  
      理论上深层网络是可以达到原网络的拟合效果的(只要把新增的层训练成恒等网络就行) 
但实际上,如果中间加了很多层,训练出来的网络一般没有原有网络的效果好,    
也就是说,虽然存在着“与原网络效果一致”的解,但求解程序很难找到该解,    




      关于上述网络退化例子的思考      


从上述网络退化的例子中,我们可以认识到以下两点:
 1.求解程序对深层网络的求解能力的有限性
对于上述所构造的深层网络,它的结构是单一的、求解是存在的,
 相对其它深层网络来说,它的求解应该算是一个较为简单的任务
即使求解任务如此明确,但事实上求解程序仍然无法达到要求
对于其它更一般的深层网络,求解程序更难求得一个满意的解
从该例子可以看到,求解程序对深层网络的求解能力"实在不怎么样"
 
 2.如何保障深层神经网络不退化              
从该例子中我们也可以get到,如果求解程序能轻易求解到恒等网络,
那么加深网络即使没有使误差更低,也至少不会让误差更高
所以,如果能让网络轻易求解到恒等网络,就能为深层网络保驾护航






     03. ResNet是如何解决网络退化的    



本节讲解ResNet的思想,及它是如何解决网络退化的



      ResNet的思想       


ResNet通过让深层神经网络更轻易求得恒等网络来解决网络退化的问题
它把网络改为拟合增量,而不是拟合前层的值的方式,来降低求解恒等网络的难度
  ResNet原文示图如下:
 ResNet模块  
也就是说,ResNet在原先网络的输出F(x)的基础上再加上x自身的值,作为最终输出
 这样,如果网络需要作为恒等网络时(也就是该层网络对上层不作任何调整),
则只需令所有的权重、阈值全为0即可,这样的解显然更容易求得
 当然,恒等网络并不是最终所期待的解,它只是一个保障--保障网络不会因为加深而更差
实际上,最终真正需要的应该是对上层作出微小调整的网络,以此令网络整体误差进一步降低
也就是说,ResNet结构在保障了网络不会比原来更差的前提下,又给网络进一步提升留足了空间

由于极易求得恒等网络,所以,在网络中加入更多这样的层,
不会比原来的网络更差,只会比原来的网络更好,加更多的层,就能让网络更加好
 当然,这不是绝对的,但有这个"更好"的倾向
对于卷积的情况,是类似的,残差模块只拟合每个featureMap的增量,再与原featureMap相加





    老饼怎么看ResNet    


ResNet实际上还有许多好处,以下是老饼的不太严谨的看法
1.保障了网络不退化                                                                          
                     由于非常容易求得恒等网络,所以很大程度上不会因为增加层数而导致网络退化
2.减轻了每层的拟合压力                                                                   
                 加入残差连接后,该层只需要拟合增量,这样的任务要比原来的难度大大下降
          因此,每层所使用的神经元数量也可以大大下降,从而大大降低了网络的体量

3.增加网络的稳定性,即泛化能力                                                      
 由于因此ResNet结构的网络每层都只是作为增量                 
    因此逐层的变化往往不会非常急剧,从而使得训练出来的网络更加稳定

4.加速训练                                                                                       
 由于每层只是作为增量,拟合任务并不复杂,                  
  因此参数往往只需在初始值上进行微调即可,这就使得训练更加容易





好了,以上就是ResNet神经网络的思想了~







 End 





联系老饼