残差网络(Residual Network)是一种非常有效的缓解梯度消失和梯度爆炸问题网络,极大的提高了可以有效训练的网络的深度。
残差单元可以以跳层连接的形式实现,将单元的输入直接与单元输出加在一起,然后再激活。因此残差网络可以轻松使用主流的自动微分深度学习框架实现,直接使用BP算法更新梯度。残差神经网络的概念图如下所示:
如下图所示:pain network 和 残差网络的模型如下图所示:
残差网络很好的解决了深度神经网络的模型退化问题,在ImageNet和CIFAR-10等图像任务上取得非常好结果。在同等层数前提下,残差网络也收敛的更快;并且去除个别神经网络层,残差网络的表现不会受到显著的影响
经过展开,在前向传播时,输入信号可以从任意底层直接传到高层;其包含了一个天然的恒等映射,一定程度上解决了网络退化的问题。
看了很多关于残差网络的资料和解释,我个人对残差网络有如此高的学习能力的解释如下:
一般来说,神经网络的深度不应该太深,否则会出现梯度消失和梯度爆炸的情况。loss值在减小到一定程度后,随着训练的增加甚至会反弹。
而残差网络(ResNet)的深度可以很深,很容易学得恒等函数,让loss很难反弹。
一个网络深度越深,它在训练集上训练的效率就会有所减弱,这也是有时候我们不希望加深网络的原因。残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,很多时候甚至可以提高效率,因此创建类似残差网络可以提升网络性能。
与普通网络的串行结构相比,残差单元增加了跳跃映射,将输入与输出直接进行相加,并且补充卷积过程中损失的特征信息。由上图可知,设网络块学习到的映射是直接学习很难学习到的,但对一个残差函数来说,却可以很容易学习到的。因为此时网络块的训练目标是将逐渐逼近于某一特定映射。因此,最后的映射就是将F(x)和x相加。