深度残差网络(ResNet)浅析

第一次写博客,欢迎大家来拍砖。

网络层数深了,会面临梯度消失的问题。深度大了为什么会出现梯度消失问题?在于假设网络的输入和输出和网络参数的分布取值大约[-1,1],为什么这样说,想想数据预处理(RGB值0-256抓化为0-1或-1到1),网络参数初始化服从高斯分布,batch normalization(把数据转化为正态分布),sigmoid function的输出范围。BP算法中链式求导的法则,使得网络层数深了,乘以绝对值小于1的小数,很容易出现梯度消失的问题,网络不能得到有效的训练。

         那么接下来我们就看看residual block 模块是如何解决梯度消失

         假设一个block要建模的函数为H(x)=x+F(x);深度残差网络(ResNet)浅析,H对于输入的导数值1左右的,很多这样的residual block前后连接一块,根据链式法则,有深度残差网络(ResNet)浅析,除了等式右边的第一项残差值外,其他项梯度值都是在1附近的,近似认为乘以1相当于残差没有变化,这就会使得残差传递很远很远,减缓了梯度消失的问题。

深度残差网络(ResNet)浅析

深度残差网络(ResNet)浅析