理解ResNet
来源:互联网 发布:java反射有什么用 编辑:程序博客网 时间:2024/05/23 18:33
ResNet(Residual Net)残差网是MSRA的何凯明团队在2015年提出来的,不但获得了2015年ImageNet的多项第一,甚至被运用到前一段时间非常火的AlphaGo Zero中去,取得了非常好的效果,可见ResNet的强大。ResNet的一个非常重要的贡献就是在深度网络中创造性地使用了残差块,从而解决了网络退化问题,大大提升了神经网络深度和效果。
1、退化问题
那什么是网络退化问题呢?也就是当模型的深度加深时,其错误率反而也提高了,如图:
在深度网络中,一般来讲,层数越深,效果会越好,因为多层网络可以通过非线性映射拟合任何函数,多出来的深层网络可以拟合输入自身,即深层网络表现至少不会比浅层网络差。但实际情况并不是如此,如果层数过深,容易出现网络退化问题,主要是因为当网络深度很深的时候,会出现梯度消失等问题。因为我们训练网络采用的方法是反向传播算法,误差反向传播公式里包含了权重系数、激活函数的导数,t层w的偏导数中还包含t+1层的激活值。当层数很深的时候,这些值连乘起来容易导致梯度消失或爆炸。
2、梯度消失问题
上面讲到当网络层数比较深的时候,会容易出现梯度消失或爆炸,我们可以通过一个简单的网络来分析。
假设有一个四层隐藏的神经网络,为简便计算,每层只有一个神经元,如图:
前向传播公式为:
如果我们要求误差对
可以看到,对
ResNet方法
通过上面分析,网络越深,梯度消失的现象就越来越明显,导致训练效果也不会很好。 但是现在浅层的网络难以明显提升效果,所以现在的问题就是如何在加深网络的情况下又能解决梯度消失的问题。
ResNet的提出就是为了解决上面的问题的,ResNet通过引入了残差网络结构(residual network),可以把网络层增加到152层,并取得了惊人的成绩。残差网络的基本结构如下图所示:
与普通网络相比,它在输出跟输入之间引入一个shortcut connection,然而就是这样一项简单设计,不但没有额外增加网络参数,还可以解决网络由于很深出现梯度消失的问题。
利用残差网络,作者将部分网络中的恒等映射
在残差块中,有
后向传播求
最后作者通过实验证明了ResNet可以很好地解决退化问题,并且收敛速度也优于plain net
对ResNet的解读
在论文《Residual Networks are Exponential Ensembles of Relatively Shallow Networks》中,作者对残差网络通过另一个角度来理解。
我们可以把残差网络单元转换成右图的形式,从右图中可以看出,残差网络其实是由多种路径组合的一个网络,从输入到输出之间我们通过选择是否跳过残差块(
参考
1、Deep Residual Learning for Image Recognition
2、关于梯度消失,梯度爆炸的问题
3、Understand Deep Residual Networks
4、对ResNet的理解
- 理解ResNet
- Resnet理解
- Resnet理解
- 对ResNet的理解
- 对ResNet的理解
- ResNet-论文阅读理解-笔记
- Resnet
- ResNet
- ResNet
- ResNet
- ResNet
- ResNet
- 2张图理解resnet核心思想
- ResNet-TensorFlow Model Zoo代码理解
- 理解ResNet结构与TensorFlow代码分析
- 关于残差网络Resnet的理解
- ResNet残差网络的理解
- 理解ResNet结构与TensorFlow代码分析
- Jpush 极光推送遇到的几个问题
- 11月 北京 | 高性能之GPU CUDA 3天密集式进阶课程
- C++进制之间的转换
- 报警信息图形定位
- 机器学习之特征工程-特征选择
- 理解ResNet
- 机器学习实战 | 数据探索
- Tensorflow之 CNN卷积神经网络的MNIST手写数字识别
- 第二部分—进程和线程管理
- springboot学习笔记
- 专业工程师看过来~ | RDD、DataFrame和DataSet的细致区别
- python-购物车程序
- python专业方向 | 文本相似度计算
- TensorFlow从1到2 | 第五章 非专家莫入!TensorFlow实现CNN