• 经典网络架构-ResNet


    # 引言
    深度残差网络的提出是深度学习领域的里程碑事件,它使得网络可以做大做深,现在主流的网络中都有残差结构
    # 问题
    - ##深度网络的退化
    深度网络有一个普遍的问题:随着网络层数的增加,准确率是先增后减的,准确率增加是很好理解的,毕竟网络变深之后,模型的学习能力也随之变强,结果也相应地变好,但是结果变差是反直觉的,这种现象被称为网络退化,有人给出解释:模型的参数规模超过数据规模,模型可能发生了过拟合现象。但是作者通过实验指出,这种退化现象不是过拟合,事实上,训练集上的结果也变差了,过拟合并不会出现这种情况。

    为了说明这一点,作者在CIFAR-10上分别使用20层的网络和56层的网络进行训练,并记录了训练误差和测试误差:

    可以看到,在训练集上就出现了深的网络比浅网络效果更差的现象。下面从原理上进行分析

    - ##梯度消失现象

    梯度消失是深度神经网络训练中的一个常见问题。它指的是在网络的后向传播过程中,随着网络层数的增加,较浅的层在梯度更新时所受到的影响几乎为零,导致这些层的权重几乎不发生变化,模型的学习能力下降。梯度消失问题的主要原因之一是使用特定的激活函数,例如 $sigmoid$ 或 $tanh$ 函数。这些激活函数的导数在输入接近饱和区域时变得非常小,接近于零。当网络的深度增加时,这些较小的导数将被连续相乘,导致梯度指数级地减小,最终消失。以一个三层的神经网络、每层只有一个神经元为例,则有:

    xi+1=σ(wixi+bi)i=1,2,3yx1=yx3x3x2x2x1" role="presentation" style="position: relative;">xi+1=σ(wixi+bi)i=1,2,3yx1=yx3x3x2x2x1

    其中$x_1,x_2,x_3$分别为第1、2、3层网络的输入,$y=x_4$为网络的输出,由于每一层都经过激活函数,求导的结果会较小,因此最后相乘的结果也会很小,即浅层的网络的梯度很小,网络学习能力下降。

    # 方法
    作者提出了一个解决思路,我们希望经过一层后网络的输出结果$F(x)$不会比网络的输入$x$差,要实现这一点,我们希望网络能够在结果变差时直接拟合为网络的输入,作者认为学习一个恒等映射是困难的,而学习一个零映射是简单的,因此只需要在网络输出结果$F(x)$上加上一个这层网络的输入$x$,这样如果网络输出结果变差了,残差$F(x)-x$会被拟合为0,如下图所示:

    从原理上来说,残差连接将公式做出了如下的改变:

    x3=x1+σ(w2x2+b2)yx1=yx3x3x1=yx3(1+x3x2x2x1)" role="presentation" style="text-align: center; position: relative;">x3=x1+σ(w2x2+b2)yx1=yx3x3x1=yx3(1+x3x2x2x1)

    可以看到,由于多了1这一项,可以解决梯度消失这一问题。

    - ## 模型结构
    使用残差连接的模型结构如下:

    # 实验
    - ## ImageNet
    作者在ImageNet上进行了实验,左图为不加残差结构的网络,右图为添加残差结构的网络。

    可以发现,不使用残差结构,深层网络(34-layer)比浅层网络(18-layer)的训练误差更大,而加了残差结果的网络则不存在这个问题。
    作者还进行了消融实验,对比了使用残差结构不同深度的下的网络的结果:

    - ## CIFAR-10
    作者在CIFAR-10上测试了不同层数的网络的测试误差
    下图是不同层数网络的在训练误差曲线的对比和标准差对比:

  • 相关阅读:
    工业设计能做出什么独特优势?
    docker部署Prometheus+Cadvisor+Grafana实现服务器监控
    澳鹏Appen重磅发布《2022人工智能与机器学习全景报告》
    Android修行手册 - TabLayout全解析(上)-常用方法
    快递地址自动识别填充
    vue之计算属性,属性侦听器,自定义属性,生命周期函数,简单的讲解一下组件
    【测试人生】浅谈游戏策划配置表检查的技术设计
    删除数据库
    推荐系统-排序层-模型(一):Embedding + MLP(多层感知机)模型【Deep Crossing模型:经典的Embedding+MLP模型结构】
    算法---拥有最多糖果的孩子
  • 原文地址:https://blog.csdn.net/ZDDWLIG/article/details/133526392