根据师兄的建议看了resnet论文,又看了一些论文笔记:
https://blog.youkuaiyun.com/xxy0118/article/details/78324256
https://blog.youkuaiyun.com/lanran2/article/details/79057994
对应之前deeplearning课程完成过的代码再次梳理一遍吧。。。
论文中针对“退化”问题,即随着网络深度增加,准确率变得饱和(这一点在意料之中)随后迅速衰退这一问题,提出了残差网络。
作业中是这么说的:
作业中提到了梯度消失(爆炸)问题,但似乎在这里没有提到标准化的问题,似乎在此将梯度消失全部归因于没有使用resnet。但是反观论文在写作之初是这么说的:
回答这个问题的一个障碍是众所周知的“梯度消失/爆炸”,这阻碍了从一开始就收敛。然而,这个问题主要通过规范化的初始化和中间的标准化层(Batch Normalization)来解决,这使得具有数十层的网络通过随机梯度下降(SGD)方法可以开始收敛。
也就是说这个问题可以用标准化解决,但作业中只将其归因于没有使用ResNet?我能力有限,不知道我这里有没有理解错,暂且放在这里吧。
对于为何使用残差块,论文中在第二部分related work中如此解释:
-------------------------------------------------------------------------------------------------------------------------------------------------------------
残差表达
在图像识别中,VLAD是一种由残差向量关于字典的编码表示,而Fisher Vector可以被定义为VLAD的概率版本。它们都是图像检索和分类的强大的浅层表示。对于向量化,编码残差向量比编码原始向量更有效。
在低层次的视觉和计算机图形学中,为了解决偏微分方程(PDEs),被广泛使用的多网格法将系统重新设计成多个尺度下的子问题,每个子问题负责一个较粗的和更细的尺度之间的残差解。多网格的另一种选择是分层基础的预处理,它依赖于在两个尺度之间表示残差向量的变量。研究表明,这些(转化成多个不同尺度的子问题,求残差解的)解决方案的收敛速度远远快于那些不知道残差的标准解决方案。这些方法表明,良好的重构或预处理可以简化优化问题。
Shortcut Connections
与我们的工作同时,HighwayNetworks提供了与门控功能的shortcut connection。这些门是数据相关的,并且有参数,这与我们的恒等shortcut connection是无参数的。当一个封闭的shortcut connection被关闭(接近于零)时,highway networks中的层代表了无残差的函数。相反,我们的公式总是学习残差函数;我们的恒等shortcut connection永远不会关闭,在学习其他残差函数的同时,所有的信息都会被传递。此外,highway networks还没有显示出从增加深度而获得的准确率的增长(例如:,超过100层)。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
储备知识不够这里看得云里雾里的,查阅了一下关于残差的资料:
--------------------------------------------------------------------------------------------------