深度学习浅显易懂的残差网络(Residual Network)

Posted 柠檬ya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习浅显易懂的残差网络(Residual Network)相关的知识,希望对你有一定的参考价值。

残差网络介绍

随着网络的层数变深,作者发现网络出现退化现象,训练集的准确率不增反降。退化现象简单的说就是浅层网络的表现要优于深层网络,因此,如果我们可以把浅层网络的特征传递到深层网络,那么深层网络应该也会有较好的表现。根据这个思想,作者提出了一个概念Identity Mapping,这实际上是构建一条映射关系(后面会详细讲)这也是残差网络的最关键之处。

残差块(Residual Block)

下图是作者在论文中的残差块示例图,首先明确几个概念, X l X_l Xl表示第l层的输入, F ( x ) F(x) F(x)表示残差部分,曲线箭头表示利用shortcut connections表示identity mapping。

X l = F ( X l − 1 ) + X l − 1 X_l = F(X_l-1) + X_l-1 Xl=F(Xl1)+Xl1 F F F表示残差部分,一般由若干卷积层,池化层和激活函数构成。残差部分与上一层的输出相加就构成了下一层的输入,这整体结构也就被称为残差块(Residual Block)。

残差网络的网络结构

下图是三种网络结构的比较,分别是VGG-19,34层的卷积神经网络,以及34层插入了shortcut connection的残差网络。

前面两个网络不多赘述,重点观察最后的残差网络,首先实黑色箭头表示输入与输出维度一致的残差块,点黑色箭头表示一个维度增加的残差块。
那么如何能保证输入和输出的大小一致但通道数增加或不变呢?这就要用到一个1 * 1的卷积,假设我们上一层的输出是3 * 3 * 256大小,现在我们想把变成3 * 3 * 512的输出,我们可以使用512个1 * 1 * 256的卷积核,按照之前卷积神经网络文章中的计算公式,output_size = (3 + 2*0 - 1) / 1 + 1 = 3,因此每个卷积核卷积后的大小是3 * 3,使用512个卷积核后,那么最终的大小也就是3 * 3 * 512,因此这就实现了,在不改变输出大小的情况下增加通道数的方法,保持或减少通道数的方法也是一样。

残差网络与高速网络的比较

对于训练深层的神经网络,高速神经网络和残差网络实际上都是用了shortcut connect只不过shortcut connection在高速神经网络中的实现是使用门机制,即transform gate和carry gate。而残差网络中的实现是使用残差块。

论文地址:https://arxiv.org/abs/1512.03385

以上是关于深度学习浅显易懂的残差网络(Residual Network)的主要内容,如果未能解决你的问题,请参考以下文章

Deeper Depth Prediction with Fully Convolutional Residual Networks(FCRN)全卷积残差网络

Deeper Depth Prediction with Fully Convolutional Residual Networks(FCRN)全卷积残差网络

残差网络(ResNets)(Residual Networks (ResNets))

Deep Residual Learning for Image Recognition(残差网络)

Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

《Deep residual shrinkage networks for fault diagnosis》 基于深度残差收缩网络的故障诊断(翻译与python代码)