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

残差网络介绍

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

残差块(Residual Block)

下图是作者在论文中的残差块示例图,首先明确几个概念, X l X_l Xl表示第l层的输入, F ( x ) F(x) F(x)表示残差部分,曲线箭头表示利用shortcut connections表示identity mapping。
【深度学习】浅显易懂的残差网络(Residual Network)_第1张图片
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的残差网络。
【深度学习】浅显易懂的残差网络(Residual Network)_第2张图片
前面两个网络不多赘述,重点观察最后的残差网络,首先实黑色箭头表示输入与输出维度一致的残差块,点黑色箭头表示一个维度增加的残差块。
那么如何能保证输入和输出的大小一致但通道数增加或不变呢?这就要用到一个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

你可能感兴趣的:(深度学习,目标检测,深度学习,网络,神经网络,算法,计算机视觉)