zoukankan      html  css  js  c++  java
  • 卷积神经网络网络结构——ResNet50

    ——————————————————————————————————————————————————————

    本文为在csdn博主z小白的文章基础上,做了一些自己的理解与扩展,文末附有原文链接,尊重知识产权从我做起。

    ——————————————————————————————————————————————————————

    简介
    ResNet是何凯明大神在2015年提出的一种网络结构,获得了ILSVRC-2015分类任务的第一名,同时在ImageNet detection,ImageNet localization,COCO detection和COCO segmentation等任务中均获得了第一名,在当时可谓是轰动一时。

    ResNet又名残差神经网络,指的是在传统卷积神经网络中加入残差学习(residual learning)的思想,解决了深层网络中梯度弥散和精度下降(训练集)的问题,使网络能够越来越深,既保证了精度,又控制了速度。

    我求求你们关注我好不好,泣不成声。。。

      

    出发点
    随着网络的加深,由于模型训练过程中有梯度的方向传播,多层次求导会连乘,可能会导致梯度趋近于0,从而梯度消散,导致网络很难收敛甚至无法收敛。梯度弥散问题目前有很多的解决办法,包括网络初始标准化,数据标准化以及中间层的标准化(Batch Normalization)等。但是网络加深还会带来另外一个问题:随着网络加深,出现训练集与测试集准确率均下降的现象,如下图,这是经过数据验证过的。

     

    很多同学第一反应肯定是“这不是过拟合了吗”。其实,这不是由于过拟合引起的。过拟合通常指模型在训练集表现很好,在测试集很差。凯明大神针对这个问题提出了残差学习的思想。

    残差学习指的是什么

     

    残差学习的思想就是上面这张图,可以把它理解为一个block,定义如下:

    y= F(x,{W;})+x

    残差学习的block一共包含两个分支或者两种映射(mapping):

    1. identity mapping,指的是上图右边那条弯的曲线。顾名思义,identity mapping指的就是本身的映射,也就是自身;

    2. residual mapping,指的是另一条分支,也就是F(x)部分,这部分称为残差映射,我习惯的认为其是卷积计算部分

    最后这个block输出的是卷积计算部分+其自身的映射后,relu激活一下。

    为什么残差学习可以解决“网络加深准确率下降”的问题?

    对于一个神经网络模型,如果该模型是最优的,那么训练就很容易将residual mapping优化到0,此时只剩下identity mapping,那么无论怎么增加深度,理论上网络会一直处于最优状态。因为相当于后面所有增加的网络都会沿着identity mapping(自身)进行信息传输,可以理解为最优网络后面的层数都是废掉的(不具备特征提取的能力),实际上没起什么作用。这样,网络的性能也就不会随着深度的增加而降低了。

    我这里数学推导了一下

    没有跳跃链接时,L的梯度值会因为连乘而趋近于0;

    有跳跃连接时,最后L的梯度值,由于中间部分趋近于0了,所有上图最后一行“+”后面的就是趋近于0的呗,结构图中间部分相当于没用了,但还有跳跃链接传过去的L2的梯度值传到L的位置,相当于变相加强了L+2的梯度值。

    网络结构
    文中提到了一个名词叫“Shortcut Connection”,实际上它指的就是identity mapping,这里先解释一下,免的大家后面会confuse。针对不同深度的ResNet,作者提出了两种Residual Block:

     

     对上图做如下说明:

    1. 左图为基本的residual block,residual mapping为两个64通道的3x3卷积,输入输出均为64通道,可直接相加。该block主要使用在相对浅层网络,比如ResNet-34;

    2. 右图为针对深层网络提出的block,称为“bottleneck” block,主要目的就是为了降维。首先通过一个1x1卷积将256维通道(channel)降到64通道,最后通过一个256通道的1x1卷积恢复。

    通过上面的介绍我们知道,residual mapping和identity mapping是沿通道维度相加的,那么如果通道维度不相同怎么办?

    作者提出在identity mapping部分使用1x1卷积进行处理,表示如下:

     

    其中,Ws指的是1x1卷积操作。

    下图为VGG-19,Plain-34(没有使用residual结构)和ResNet-34网络结构对比:

    对上图进行如下说明:

    1. 相比于VGG-19,ResNet没有使用全连接层,而使用了全局平均池化层,可以减少大量参数。VGG-19大量参数集中在全连接层;

    2. ResNet-34中跳跃连接“实线”为identity mapping和residual mapping通道数相同,“虚线”部分指的是两者通道数不同,需要使用1x1卷积调整通道维度,使其可以相加。 

    论文一共提出5种ResNet网络,网络参数统计表如下:

     其中152层效果最好,日常工作中101层和50层最常用,相差不大(flops为计算次数)


    ————————————————
    版权声明:本文为CSDN博主「z小白」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zzc15806/article/details/83540661

  • 相关阅读:
    TFS 2015(Visual Studio Team Foundation Server)的下载和安装
    又回来了
    java.net.SocketException:Too many open files 解决方案
    Java 正则判断一个字符串中是否包含中文
    zabbix 启动报错 cannot set resource limit: [13] Permission denied
    MySQL 查询某个数据库中所有包含数据记录的表名
    MySQL 判断数据库和数据表是否存在
    Java 实现 bash命令
    Java 实现 ssh命令 登录主机执行shell命令
    Java 实现 telnet命令 验证主机端口的连通性
  • 原文地址:https://www.cnblogs.com/qianchaomoon/p/12284880.html
Copyright © 2011-2022 走看看