首页 > 人工智能(Artificial Intelligence) > 卷积神经网络

深度残差网络(Deep Residual Networks (ResNets))

微软亚洲研究院 Kaiming He 博士在 2015 年凭借深度残差网络 Deep Residual Network (DRN) 在 Imagenet 比赛的识别、检测和定位三个任务、以及 COCO 比赛的检测和分割任务上都获得了冠军。论文《Deep Residual Learning for Image Recognition》获得 2016 CVPR best paper,ResNet因此声名大噪。

残差

残差在数理统计中是指实际观察值与估计值(拟合值)之间的差。在集成学习中可以通过基模型拟合残差,使得集成的模型变得更精确;在深度学习中也有人利用layer去拟合残差将深度神经网络的性能提高变强。

“传统”深度学习的困难

深度学习目前进展取决于技巧:初始权值选择,局部感受野,权值共享等等,但使用更深层的网络时(例如> 100),依然要面对反向传播时梯度消失这类传统困难,非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。

退化问题:层数越多,训练错误率与测试错误率反而升高

深度残差网络(Deep Residual Networks (ResNets))

Resnet是2015年何凯明大神提出来的一个深度CNN模型,主要解决了随着神经网络层数变多,拟合效果反而变差的问题。而Residual Block是Resnet中一个最重要的模块,Residual Block的做法是在一些网络层的输入和输出之间添加了一个快捷连接,这里的快捷连接默认为恒等映射(indentity),说白了就是直接将原始输入不做任何改变和输出做加和,其公式如下:
H(x) = F(x)+x
如下图所示,x 表示residual block的输入, H(x)表示residual block的输出,而F(x)代表着残差,把公式简单变换一下:
F(x)= H(x) - x
就变成了通过神经网络去拟合输入与输出之间的残差F(x)。加了这个模块之后,神经网络的层数可以构建得越来越深,而且不会出现效果变差的现象,反之该模型在imagenet这个任务上再进一步,拿下了2015年的冠军。这充分说明使用residual block拟合残差使得深度学习模型变得更加强大。

90e58f36fc1b0ae42443b69176cc2a75_hd.png

通过“shortcut connections (捷径连接)”的方式,直接把输入x传到输出作为初始结果,输出结果为 H(x) = F(x) + x,当 F(x) = 0 时,那么 H(x) = x,也就是上面所提到的恒等映射。于是,ResNet相当于将学习目标改变了,不再是学习一个完整的输出,而是目标值H(X)和x的差值,即所谓的残差F(x) = H(x) - x,因此,后面的训练目标就是要将残差结果逼近于 0,使得随着网络加深,准确率不下降。

它有二层,如下表达式,其中 σ 代表非线性函数ReLU: $\mathcal{F} = W_2\sigma(W_1x)$

然后通过一个 shortcut connection,和第 2 个 ReLU,获得输出 y: ${y}= \mathcal{F}({x}, \{W_{i}\}) + {x}$

F(x) 与 x 相加就是逐元素相加,但是如果两者维度不同,需要给 x 执行一个线性变换来匹配维度,如下式:${y}= \mathcal{F}({x}, \{W_{i}\}) + W_s{x}.$

实验证明,这个残差块往往需要两层以上,单单一层的残差块 $y = W_1x + x$ 并不能起到提升作用。

这种残差跳跃式的结构,打破了传统的神经网络 n - 1 层的输出只能给 n 层作为输入的惯例,使某一层的输出可以直接跨过几层作为后面某一层的输入,其意义在于为叠加多层网络而使得整个学习模型的错误率不降反升的难题提供了新的方向 (后来的 DenseNet)。至此,神经网络的层数可以超越之前的约束,达到几十层、上百层甚至千层,为高级语义特征提取和分类提供了可行性。

残差网络有这样几个特点:

  1. 网络较瘦,控制了参数数量;
  2. 存在明显层级,特征图个数逐层递进,保证输出特征表达能力;
  3. 使用了较少的池化层,大量使用下采样,提高传播效率;
  4. 没有使用Dropout,利用BN和全局平均池化进行正则化,加快了训练速度;
  5. 层数较高时减少了3x3卷积个数,并用1x1卷积控制了3x3卷积的输入输出特征图数量,称这种结构为“瓶颈”(bottleneck)。

残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率,因此创建类似残差网络可以提升网络性能。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。