Wide Residual Networks (WRNs)是2016年被提出的基于扩展通道数学习机制的卷积神经网络。对深度卷积神经网络有了解的应该知道随着网络越深性能越好,但是训练深度卷积神经网络存在着这样子那样子的问题,如梯度消失/弥散(gradient vanishing/exploding)。当然除此之外,实验结果也表明越深的网络结构/模型带来的性能提升并不是很明显,反而会需要大量的计算资源来做支撑(具体可看ResNet系列结果)。

那WRNs究竟干了什么呢?在这之前,作者的观点是过往大家对于残差网络(Residual Networks)的研究基本都停留在了如何加深残差网络的深度和编排残差模块的内部结构,所以作者就提出能否通过增大网络结构的width来改善网络的性能的假设。也就是说希望通过使用更浅层的网络来获得跟跟深度网络媲美的准确度。

简单点说ResNet存在的问题有如下:

  • He Kaiming大神设计的ResNet卷积神经网络是通过不断增加层数的传统叠加式的卷积神经网络,即使在这值终引入了bottleneck block来减少参数;
  • 在训练的过程中,模型中可能只有部分模块具备很好的表征能力,这就相当于减弱了特征复用的情况;

图 1 不同的Residual Blocks

ResNet的典型Residual Block是由两个conv 3x3构成的或者conv 1x1 -> conv 3x3 -> conv 1x1 (参看上图左边两个小图)。而WRNs则通过增加作用于同一个输入的通道数(channels)来构建模型,除此之外有一个很重要的点需要注意:WRNs的作者重新定义了如何使用Dropout来正则化继而防止模型过拟合。增加通道数获取更多的特征图跟增加层数一样都会增加网络模型种的参数量,所以需要借助一定的正则化方法(BatchNorm或者Dropout)来防止过拟合。以往的卷积神经网络Dropout都是放在一层网络的所有卷积操作之后,但是在这个实验中作者将Dropout放到了两个conv 3x3的卷积中间,并经过测试验证如此的结构设计所带来的效果要比以前的设计模式所带来的效果更好(作者之所以没使用BN(BatchNorm)是因为觉得它需要有数据增强的辅助,这点我查找了些资料并没有看到出自哪里,有朋友了解的话劳烦留言告知一下。文中提到的另外一点说BN也并不是大多数时候都需要的,这点估计指的是可能受限于Batch大小的选择原因,这点倒是可以说得通,这可以看我关于BN的分析的博客,但是放在这里说不用可能会有点牵强。),当然作者并不是完全没有使用BN,而是Dropout和BN都用了,BN主要放在Residual Block之间(BN-ReLU-Conv,注意这里跟以往的结构也是不一样,以往的结构都是Conv-BN-ReLU)

图 2 WRNs网络结构

从上述的网络结构中看三个超参数:l (小写的L)、k、N。网络深度l、通道系数k、一组中有N个Residual Block。为什么要看这几个超参数呢?因为它主要影响了模型中的参数总量。假设保持某卷积层的通道数(也就是所谓的width of the network)不变,增加N层操作将会增加参数的量为:N * (kernel_size * kernel_size) * #channels。那么如果此时增加通道数,也就是k的值,那么参数的量就会呈平方增加:N * (kernel_size * kernel_size) * # channels * 2 (k=2)。咋一看就会觉得这哪里有减少计算量,反而计算量成倍的增长啊。但是作者强调GPU计算适合并行计算,所以总体来说还是computational efficiency。

图 3 k对网络结构的影响(图片来源:Understanding Wide Residual Networks

结果比对:从图3的CIFAR-10实验结果可以看出一些ResNet-1202有10.2M个参数,error为7.93,反观WRN-40-4的结果要好很多,参数量也稍微少点。当然从Paper中另外一幅图也可以看出WRN的训练速度要比更深的网络ResNet-1004要快得多(快8倍的速度)。

图 4 基于CIFAR-10和CIFAR-100的结果比对

图 5 训练速度比对

论文的主要几个贡献点:

  • 重新定义了如何使用Dropout;
  • 确实不一定要更深的网络(thin and deeper)来训练模型,WRN也可以达到相同的效果;
  • BN-ReLU-CONV训练的速度要比CONV-BN-ReLU的快,且准确度更好(其实BN放在哪里一直有争议,所以持怀疑态度!);

这里谈谈几点个人观点(纯粹讨论,有能解决我疑惑的朋友欢迎指出)

  • Wide ResNet的贡献点并不是很能说服人,我个人更认为它是简化版的GoogLeNet(参考Inception Module);
  • 上述的贡献的最后一点,我也说了BN放在哪里一直比较有争议,我当初做课题研究的时候也有过这个疑惑,个人认为BN的位置并不是决定训练速度的重要观点;
  • WRN的实验设置个人觉得比较有问题,其实对于ResNet普通版本(这里指非1000层以上的)来说性能比WRN没差多少,但是参数量和速度比WRN要好(这里指K>4),所以并没有太大的一个优势存在,这里从作者本身的论文可以看出。当然作者的重点是为了强调“深层网络(几百到1000)”这样子的网络其实是没必要的,通过增加通道数(number of feature maps)也可以达到相应的效果;
  • 个人对于Dropout的新的使用方法比较认可;

原文链接地址:Sergey Zagoruyko and Nikos Komodakis, Wide Residual Networks, arXiv:1605.07146v4

解析Wide Residual Networks的更多相关文章

  1. Residual Networks <2015 ICCV, ImageNet 图像分类Top1>

    本文介绍一下2015 ImageNet中分类任务的冠军——MSRA何凯明团队的Residual Networks.实际上,MSRA是今年Imagenet的大赢家,不单在分类任务,MSRA还用resid ...

  2. 深度残差网(deep residual networks)的训练过程

    这里介绍一种深度残差网(deep residual networks)的训练过程: 1.通过下面的地址下载基于python的训练代码: https://github.com/dnlcrl/deep-r ...

  3. 残差网络(Residual Networks, ResNets)

    1. 什么是残差(residual)? “残差在数理统计中是指实际观察值与估计值(拟合值)之间的差.”“如果回归模型正确的话, 我们可以将残差看作误差的观测值.” 更准确地,假设我们想要找一个 $x$ ...

  4. 课程四(Convolutional Neural Networks),第二 周(Deep convolutional models: case studies) ——3.Programming assignments : Residual Networks

    Residual Networks Welcome to the second assignment of this week! You will learn how to build very de ...

  5. Residual Networks

    Andrew Ng deeplearning courese-4:Convolutional Neural Network Convolutional Neural Networks: Step by ...

  6. 深度学习论文笔记:Deep Residual Networks with Dynamically Weighted Wavelet Coefficients for Fault Diagnosis of Planetary Gearboxes

    这篇文章将深度学习算法应用于机械故障诊断,采用了“小波包分解+深度残差网络(ResNet)”的思路,将机械振动信号按照故障类型进行分类. 文章的核心创新点:复杂旋转机械系统的振动信号包含着很多不同频率 ...

  7. Re-thinking Deep Residual Networks

    本文是对ImageNet 2015的冠军ResNet(Deep Residual Networks)以及目前围绕ResNet这个工作研究者后续所发论文的总结,主要涉及到下面5篇论文. 1. Link: ...

  8. Residual Networks &lt;2015 ICCV, ImageNet 图像分类Top1&gt;

    本文介绍一下2015 ImageNet中分类任务的冠军--MSRA何凯明团队的Residual Networks.实际上.MSRA是今年Imagenet的大赢家.不单在分类任务,MSRA还用resid ...

  9. Convolutional Neural Network-week2编程题2(Residual Networks)

    1. Residual Networks(残差网络) 残差网络 就是为了解决深网络的难以训练的问题的. In this assignment, you will: Implement the basi ...

随机推荐

  1. Linux内核4.19.1编译

    linux内核编译 1.1 大致步骤 下载linux内核4.19.1 官网链接: https://www.kernel.org/ 官网下载经常速度太慢,无法下载,提供另一个链接: http://ftp ...

  2. FZU 2082 过路费(树链剖分 边权)题解

    题意:给出每条边权值,可以更新每条边权值,询问两个点路径的最小权值 思路:重链剖分边权化点权,让每个儿子节点继承边权. 插点权的时候比较边的两个节点的深度,插进儿子节点中. 代码: #include& ...

  3. 二、mycat基础知识、基本配置

    官网 http://www.mycat.io/ Mycat 概要介绍 https://github.com/MyCATApache/Mycat-Server 入门指南 https://github.c ...

  4. mimikatz+procdump 提取 Windows 明文密码

    0x00 原理 获取到内存文件 lsass.exe 进程 (它用于本地安全和登陆策略) 中存储的明文登录密码. 0x01 操作 Windows10/2012 以下的版本:1.上传 procdump 执 ...

  5. ThinkCMF框架任意内容包含漏洞分析复现(写入shell+文件包哈)

    ThinkCMF框架任意内容包含漏洞分析复现 0x00 简介 ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建.ThinkCMF提出灵活的应用 ...

  6. Node.js 实战 & 最佳 Express 项目架构

    Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...

  7. docker-compose All In One

    docker-compose All In One docker-compose 多容器应用 $ docker-compose -h Define and run multi-container ap ...

  8. Linux Schedule Cron All In One

    Linux Schedule Cron All In One 定时任务 / 定时器 GitHub Actions Scheduled events Cron syntax has five field ...

  9. CSS font-weight all in one

    CSS font-weight all in one font-weight: bolder: 没毛病呀! /* 关键字值 */ font-weight: normal; font-weight: b ...

  10. 如何重置电信悦 me 智能网关

    如何重置电信悦 me 智能网关 重置电信网关密码 电信悦 me 智能网关密码忘记了怎么办? 首先,得要知道默认终端配置地址和默认终端配置密码. 可以从无线路由器背面标签得知. 如果不知道密码了,可以通 ...