并不是网络层数越多,网络的效果就越好。因为存在梯度弥散问题
假设Plain Net 前6层数已经达到最优,当前7,8层的目标是试Res模块的F(x)趋近于零,论文里面指出,我们把F(x)趋近于零要比在Plain Net单独使X趋近于X要容易很多。
同样情况下,我们认为网络去计算趋近于0要比趋近于1,计算复杂度要更少一些。
在这个ResNet里面何凯明论文里面的activatefunction全部用的rule,当输入<0,全部输出0,输入>0,输出原值,可以过滤掉所有小于零的信息流,这极大的方便和加速了F(x)去趋近于零。
右图相比左图的改变,极大减少训练参数,使得网络更高效
image.png
可以看做一个投票系统
ResNet也是各种想办法去保留以前的信息
参考资料:[https://zhuanlan.zhihu.com/p/33613512]
教学视频地址如下:
***YouTube:http://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DBu9A_-M5OZk%26t%3D1175s
优酷:深度学习Deep Learning残差网络resnet讲解
腾讯视频:undefined_腾讯视频
***********************************以下补充知识**************************
以下为阅读参考资料后的个人笔记
参考资料:https://mp.weixin.qq.com/s?__biz=MzA3NDIyMjM1NA==&mid=2649029645&idx=1&sn=75b494ec181fee3e8756bb0fa119e7ce&chksm=87134270b064cb66aea66e73b4a6dc283d5750cfa9d331015424f075ba117e38f857d2f25d07&scene=21#wechat_redirect
skip connect 即:残差连接
输出表述为:输入和输入的一个非线性变幻的线性叠加。
反向传播链式求导时候,一旦其中某个导数很小,多次连乘会导致梯度越来越小,这就是梯度弥散,如果使用了skip connect 等于每个导数加上一个一个恒等项1,dh/dx = d(f + x)/dx=1+df/dx。
【3】Orhan A E, Pitkow X. Skip connections eliminate singularities[J]. arXiv preprint arXiv:1701.09175, 2017.的实验结果表明,训练神经网络失败的原因不是梯度消失,而是权重矩阵的退化(神经网络的退化)
即:虽然梯度范数大,但是如果网络的可用自由度对这些范数的贡献非常不均衡,也就是每个层中只有少量的隐藏单元对不同的输入改变他们的激活值,而大部分隐藏单元对不同的输入都是相同的反应,此时整个权重矩阵的秩不高。并且随着网络层数的增加,连乘后使得整个秩变得更低。
这就是网络退化问题,虽然是一个很高维的矩阵,但是大部分维度却没有信息,表达能力没有看起来那么强大。
残差连接打破了网络的对称性:
【4】Shang W, Sohn K, Almeida D, et al. Understanding and Improving Convolutional Neural Networks via Concatenated Rectified Linear Units[J]. 2016:2217-2225.
提升了网络的表征能力,关于对称性引发的特征退化问题,参考【4】
网友评论