本文主要是介绍深度残差网络(ResNet)浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一次写博客,欢迎大家来拍砖。
网络层数深了,会面临梯度消失的问题。深度大了为什么会出现梯度消失问题?在于假设网络的输入和输出和网络参数的分布取值大约[-1,1],为什么这样说,想想数据预处理(RGB值0-256抓化为0-1或-1到1),网络参数初始化服从高斯分布,batch normalization(把数据转化为正态分布),sigmoid function的输出范围。BP算法中链式求导的法则,使得网络层数深了,乘以绝对值小于1的小数,很容易出现梯度消失的问题,网络不能得到有效的训练。
那么接下来我们就看看residual block 模块是如何解决梯度消失
假设一个block要建模的函数为H(x)=x+F(x);,H对于输入的导数值1左右的,很多这样的residual block前后连接一块,根据链式法则,有
,除了等式右边的第一项残差值外,其他项梯度值都是在1附近的,近似认为乘以1相当于残差没有变化,这就会使得残差传递很远很远,减缓了梯度消失的问题。
这篇关于深度残差网络(ResNet)浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!