• 【深度学习】浅显易懂的残差网络(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

  • 相关阅读:
    Dive into TensorFlow - 解析 TF 核心抽象 op 算子
    【深度学习】5-从计算图直观认识“激活函数不以零为中心导致收敛变慢”
    golang 操作 redis(github.comgo-redisredis 包使用)
    企业化运维(2)_nginx
    程序员与动漫
    SQL高阶语句
    [轻笔记] SHAP值的计算步骤
    Linux开发环境搭建
    uni-app设置分包和预下载
    Jetpack Compose 1.2 稳定版现已发布!
  • 原文地址:https://blog.csdn.net/qq_43591839/article/details/126553770