一、残差网络的定义
残差网络的核心是解决增加深度带来的退化问题,这样能够通过单纯增加网络深度来提高网络性能。
残差单元以短连接的形式,将单元的输入直接与单元输出加在一起,然后再进行激活。
Weight为抽取特征的网络层
Addition时xl和xl+1的feature map(channel)可能不同,此时需要1*1的卷积进行升维或者降维。
二、退化问题的定义以及怎么解决退化问题
退化问题:网络层数增加,模型的训练误差反而大于浅层模型。
解决退化问题:如果深层网络的后面是恒等映射(层数加多了,理论上输入和输出一样),那么就要学习恒等映射函数。如果让深的那些层去拟合一个潜在的恒等函数H(x)=x比较困难,因为深层网络难以训练。但是如果把网络设计为H(x)=F(x)+x,可以转化为学习一个残差函数F(x)=H(x)-x=0,就构成了一个恒等映射H(x)=x。F(x)=0相对来说比较好拟合,因为每一层网络的参数初始化偏向于0。
三、残差网络结构解读
官方示意图:
假设H(x)是最终要拟合的函数,则令H(x)=F(x)+x,其中F(x)代表普通的堆叠起来的网络拟合出来d额函数,x是输入,普通网络的激活函数用的是relu函数。整个网络就是普通网络加上一个恒等映射,普通网络只是整个网络的一部分(F(x)=H(x)-x),这也是Residual(剩余的)名字的由来。
四、残差网络解决梯度消失说明
普通神经网络的前向传播,将数据逐层抽象,最终提取出完成任务所需要的特征。
残差网络的前向传播,输入信号可以从任意低层直接传播到高层,由于包含了一个天然的恒等映射(Identity Mapping),一定程度上可以解决网络退化的问题。
最终损失函数对某低层输出的梯度展开:
普通神经网络反向传播,链式求导可能会在离输入近的网络中产生梯度消失的现象。
残差网络反向传播,错误信号可以不经过任何中间权重矩阵变换直接传播到低层,所以一定程度上可以缓解梯度消失问题。
所以可以认为残差连接使得信息前后向传播更加顺畅。