ResNet残差网络学习小结

目录

背景介绍

网络介绍

残差网络起作用的原因

残差网络的矩阵维度

残差网络的图像识别

背景介绍

残差网络是由何恺明大神提出的一种卷积神经网络,作者通过152层的残差网络获得2015年ImageNet图像分类和物体识别的冠军。

因为CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。越深的网络提取的特征越抽象,越具有实际信息,所以深层网络一般都比浅层网络的效果好。比如VGG网络就是在AlexNet网络的基础上通过增加网络深度而大幅提高了网络的性能。

对于原来的神经网络,如果只是简单地增加深度,则容易出现梯度爆炸或者梯度消失的问题,这个问题的解决方法是使用正则层(Batch Normalization)。

但是对于较深层的神经网络会出现另外一个问题:退化问题。随着网络层数增加,训练集的准确率出现下降。推测退化问题可能是深层的网络并不好训练,分类器很难利用深层网络拟合同等函数。

网络介绍

残差网络的核心是利用跳跃连接(skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。

 ResNet是由残差块(residual block)构建的网络。

 

                                                 

上图是传统的神经网络,下图多了一条紫色道路,可以直接传到更深层的网络。

                                                

                                            

残差网络起作用的原因

                                            

当然如果只学习恒等函数并不能提高神经网络的效果,不过如果这两个隐藏层单元学习到一些有用的东西,那么就比学习恒等函数效果更好。而对于不含有残差块的深度神经网络,当网络深度不断加深的时候,就算只是学习恒等函数的参数都变得十分困难,所以会出现退化问题,导致很多层最后的表现甚至出现更糟的情况。

换言之,普通深度神经网络如果深度太深,根据梯度下降算法,离输出层越远的隐含层的乘积项会越多(通常会越乘越小),导致这些层的神经元训练会越缓慢(如果计算机精度不够的话,可能还会变0)。而残差网络是在普通神经网络基础上,把两层或多层的神经元组成一个residual block,将输入block和从最后一层的输出相加再通过输出函数送进下一个block。这样的好处是,在梯度下降的计算上,偏导数变成了1+原来的乘积项,就不会因为越乘越小,而出现远离最终输出的那层隐含层调参缓慢或甚至无法调参的情况。

残差网络的矩阵维度

                                  

Ws矩阵可以是一个包含已学习到的参数的矩阵,也可以是一个填充了许多0的固定矩阵。

残差网络的图像识别

                                       

ResNet就是比普通的VGG多了残差块,通过跳跃连接。

参考资料:吴恩达老师的深度学习课程和部分网友的总结

发布了43 篇原创文章 · 获赞 111 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Amigo_1997/article/details/99110995