zoukankan      html  css  js  c++  java
  • 残差网络

    ---恢复内容开始---

    (1)为什么残差学习的效果会如此好?与其他论文相比,深度残差学习具有更深的网络结构,此外,残差学习也是网络变深的原因,为什么网络深度如此重要?

    解答:一般认为神经网络的每一层分别对应于提取不同层次的特征信息,有低层,中层和高层,而网络越深的时候,提取到的不同层次的信息会越多,而不同的层次信息的组合也会越多。

    (2)为什么在残差之前网络的深度最深的也只是GoogleNet的22层,而残差却可以达到152层,甚至1000层?

    解答:深度学习对于网络深度遇到的主要问题是梯度消失和梯度爆炸,传统对应的解决方案则是数据的初始化和正则化,但是这样虽然解决了梯度的问题,深度加深了,却带来了另外的问题,就是网络性能的退化问题,深度加深了,错误率却上升了,而残差用来设计解决退化问题,其同时也解决了梯度问题,更使得网络的性能也提升了。

    图1 传统解决多层网络训练梯度问题的方法

    我们注意到,随着网络层数的增加,传统解决方法会导致误差增大的趋势,对于更深层次的网络,甚至无法解决。

    图2 残差网络的基本架构

    其工作原理:是将传统网络的平滑连接成分(导致了网络模型的误差)送进了残差网络模型,达到减小误差,提高精确率的目的。

    2、深度残差学习

    深度残差学习,其中又分为了三个小部分包括残差元,为什么是恒等映射?如果快捷映射不是恒等映射的情况?

    图3 残差网络的构思

    对于普通网络,任意堆叠的两层网络,我们希望找到的是一个映射H(X)对应的残差元,我们添加一个快捷连接,从输入到输出,这里的快捷连接默认为恒等映射,此时的问题就从寻找映射H(X)到F(X);这里类似于在数学上,你直接去解一个方程较为复杂,你就把他分解为两个简单问题和的形式,分别去解决,类似于启发式求解的思想。

    图4 残差网络的设计

    因此,对应于残差的初始定义,在统计学中,为实际观测值与估计值(拟合值)的差值,这里则是直接的映射H(X)与快捷连接x的差值。

    2.1残差网络

    对于残差元的主要设计有两个,快捷链接和恒等映射,快捷链接使得残差变得可能,而恒等映射使得网络变深,而恒等映射主要有两个:快捷连接为恒等映射和相加后的激活函数

    图5 残差网络的设计构思

    这样设计的主要思想是:去构造映射H(x),与构造残差映射F(x)是等价的,此外残差映射也更容易优化。

     这里考虑这个激活函数也为恒等映射时,则变为下式:

     图6 基本的残差单元的介绍

    若after-add后的激励函数也为恒等映射时,灰化的线(流程图的连接线),表示恒等映射了;

    图7 残差网络的前向传播

    前向过程,最后的结果表示直接的前向过程,连加的运算(考虑的残差单元为一个单元,残差元的内部还是两层的连乘),即从第l层可以直接到第L层,而传统的网络则是连乘运算,加算量明显不同(从连乘到连加)

    2.2普通网络和残差网络的差别

    对于残差元来说,前向过程是线性的,而且后面的输入等于输入加上每一次的残差元的结果,而普通的网络,则为每一层卷积的连乘运算;

    残差网络的第一大特点,反向更新解决梯度消失的问题:

    残差网络在反向传播的时候,则只求链式法则前面的部分,即从第L层的梯度可以基本上保持稳定的传递到第l层的反向过程。

     2.2.1残差网络和普通的网络反向传播的求导对比:

    之前的正向和反向可以保证计算相对简单,主要是存在两个恒等映射。其中激活函数不为恒等映射就为普通网络结构。快捷连接不为恒等映射时,ReLu的使用,使得学习周期大大缩短综合速率和效率,DL中大部分激活函数应该选择ReLu。

    2.2.2下面考虑如果残差网络的快捷连接不为恒等映射的情况:

     

    如上描述一样,h(x)不为恒等映射时,只要系数不为1,在对误差求导时总是会出现梯度消失或者梯度爆炸的问题;

    3、深度残差网络结构

    图8 深度残差网络的设计

    残差网络的设计规则:

    对于普通网络,其实对残差网络也是使用的

    (1)具有相同特征图尺度大小,具有相同个数的卷积核,对应于图8右边的网络实现区域

    (2)特征图的大小减半时,特征图的数目加倍。对应于图8右边的网络虚线区域

    而对于虚线区域内的快捷连接,也有两种方式来解决

    (1)在周围填充0来增加维度

    (2)使用投影快捷

    事实上,除了堆叠两层的残差,作者还提出了堆叠三层的网络结构,当然不是单纯的3层的3*3,这里采用的1*1,3*3和1*1的卷积层,1*1的卷积主要是用来调节维度的,这种设计,进一步简化了网络的设计,计算量变低,从而使得网络更深。

    几种常见的残差单元

    图9 集中常见的残差单元

    图10 batch Normalization的原理

    BN的主要思路是对每次前向传播的过程中对数据进行正态分布的归一化调整;

    快捷连接的多种形式:

    其中,B为标量函数;C,D为门设计E.F为快捷连接为卷积和dropout

    对于不同快捷连接的比较

     残差网络的优点:

    很容易训练,值得是前向和反向都可以保证,先行使得网络加深,可以达到1000层精度提升可以被移植到其他问题

    残差网络的应用:
    图像的很多问题都可以应用,视觉识别、图像生成,自然语言处理、语音识别、广告,用户预测。

    ---恢复内容结束---

  • 相关阅读:
    编码导致 html和aspx 样式差异,变形
    Recommand of the Day:Names in English
    NSBundle常用方法及解释
    在K8S 中部署 Spring Boot 应用,爽!
    如果抛开 Spring,如何自己实现 AOP?面试必问。。。
    为什么阿里强制 boolean 类型变量不能使用 is 开头?
    CTO 说禁用 Lombok,看我怼死他。。
    面试官:什么是 YAML?和 Spring Boot 有什么关系?
    面试官:线程池多余的线程是如何回收的?
    JetBrains 发布下一代 IDE,无比轻量,几秒就能启动干活,IDEA 可以扔了。。
  • 原文地址:https://www.cnblogs.com/zhibei/p/9564746.html
Copyright © 2011-2022 走看看