FractalNet: Ultra-Deep Neural Networks without Residuals
ICLR 2017
Gustav Larsson, Michael Maire, Gregory Shakhnarovich

文章提出了什么(What)

  1. ResNet提升了深度网络的表现,本文提出的分形网络也取得了优秀的表现,通过实验表示,残差结构对于深度网络来说不是必须的。
  2. ResNet缺乏正则方法,本文提出了drop-path,对子路径进行随机丢弃

为什么有效(Why)

  1. 分形网络不像resNet那样连一条捷径,而是通过不同长度的子路径组合,网络选择合适的子路径集合提升模型表现
  2. drop-path是dropout(防止co-adaption)的天然扩展,是一种正则方法,可以防止过拟合,提升模型表现
  3. drop-path提供了很好的正则效果,在不用数据增强时也取得了优秀的结果
  4. 通过实验说明了带drop-path训练后的总网络提取的单独列(网络)也能取得优秀的表现。
  5. 分形网络体现的一种特性为:浅层子网提供更迅速的回答,深层子网提供更准确的回答。

分形网络是怎么做的(How)

  1. 图中以粉红色的卷积层Convolution为基础层,实际上可以为其它类型的层或者子网络;绿色的Join层一般可以用相加或concat,这里采取了相加然后取平均,因此所有基础层可以使用一样的channel数量
  2. $ f_{C}(z) $ 中C表示列数,z表示输入,C=1表示一个基础层
  3. $ f_{C+1}(z) $ 则如图所示,在右边叠加两个$ f_{C}(z) $ ,左边接一个基础层
  4. 以此类推,当C等于4的时候,可以得到图中的$ f_{4}(z) $
  5. $ f_{4}(z) $作为一个block中,如图中最右边的网络所示,完整的网络接了5个block,block之间用Pool层连接,最后是预测层
  6. 令block个数为B,每个block中的列数为C,网络的总深度为$ B\cdot 2^{C-1} $

两种drop-path

实验训练的时候,mini-batch之间交叉使用Local和Global

  1. Local:对join层的输入dropout,但是至少保证要有一个输入
  2. Global: 对于整个网络来说,只选择一条路径,且限制为某个单独列,所以这条路径是独立的强预测路径

模型对比的实验

  1. +表示使用了水平镜像翻转和平移,++表示使用了更多的数据增强,实验主要和ResNet对比
  2. 用drop-path训练,可以从网络提取最深的单独列,在表格数据中可以看出也取得了不错的表现
  3. 不使用数据增强时,分形网络的表现超过了ResNet,可以看出分形网络更不容易过拟合
  4. 使用数据增强时,分形网络取得了和ResNet变种差不多的表现
  5. 不使用数据增强的时候,drop-path提升了表现
  6. 使用数据增强的时候,drop-path提升或者没有下降太大的表现

20层分形网络的模型细节

  1. 每个卷积层后面加了BN(先卷积,再BN,再relu激活)
  2. B=5,C=3
  3. 训练集都是32*32*3的图像,使用2*2的Max-pooling,经过5次下采样后32*32会变成1*1,最后的预测层使用softmax
  4. 为了实现方便,对于每一个block,调换了最后面的pool和join的顺序
  5. 五个block的卷积核数量默认为64,128,256,512,512
  6. 每个block最后的dropout概率设为0,0.1,0.2,0.3,0.4
  7. 整个网络的local drop-path设为0.15
  8. caffe实现,学习率为0.02,momentum为0.9,batchsize为100,使用Xavier初始化参数
  9. CIFAR-10/CIFAR-100迭代了400轮,SVHN迭代了20轮
  10. 每当“剩余epoch数减半”时,学习率除以10(比如剩余epoch为200时,剩余epoch为100时,剩余epoch为50时候)

其它实验

  1. 分形网络到了160层开始出现退化
  2. 平常的网络到了40层就出现了退化,到了160层不能收敛
  3. 使用了drop-path的分形网络提取的单独列(网络)比平常的网络取得了更优的表现,而且克服了退化问题(平常网络40层就退化)
  4. 这里的实验减小了每个block的channels,为16,32,64,128,128,batchsize设置为50

学习曲线

  1. 40层分形网络的学习曲线中,可以看到Col#4 开始学习时很慢,当其它子网学习趋近稳定时,Col#4学习速度提升
  2. 左图平常网络的学习曲线中没有这种性质(蓝色虚线)
  3. 假设分形网络会触发和深度监督,横向的“学生-教师”信息流类似的效果,那么可以这样分析,当分形网络依赖于单独使用Col#3来输出,当drop-path丢弃Col#3的时候,网络则会促进Col#4的学习,使得Col#4学的东西能代替Col#3,这是一个迷你的学生-教师问题

总结

  1. 论文的实验说明了路径长度才是训练深度网络的需要的基本组件,而不单单是残差块
  2. 分形网络和残差网络都有很大的网络深度,但是在训练的时候都具有更短的有效的梯度传播路径
  3. 分形网络简化了对这种需求(更短的有效的梯度传播路径)的满足,可以防止网络过深
  4. 多余的深度可能会减慢训练速度,但不会损害准确性

论文笔记:分形网络(FractalNet: Ultra-Deep Neural Networks without Residuals)的更多相关文章

  1. 论文笔记——Data-free Parameter Pruning for Deep Neural Networks

    论文地址:https://arxiv.org/abs/1507.06149 1. 主要思想 权值矩阵对应的两列i,j,如果差异很小或者说没有差异的话,就把j列与i列上(合并,也就是去掉j列),然后在下 ...

  2. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  3. 论文翻译:2018_Source localization using deep neural networks in a shallow water environment

    论文地址:https://asa.scitation.org/doi/abs/10.1121/1.5036725 深度神经网络在浅水环境中的源定位 摘要: 深度神经网络(DNNs)在表征复杂的非线性关 ...

  4. 论文笔记之:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    Learning Multi-Domain Convolutional Neural Networks for Visual Tracking CVPR 2016 本文提出了一种新的CNN 框架来处理 ...

  5. 【论文笔记】Pyramidal Convolution: Rethinking Convolutional Neural Networks for Visual Recognition

    地址:https://arxiv.org/pdf/2006.11538.pdf github:https://github.com/iduta/pyconv 目前的卷积神经网络普遍使用3×3的卷积神经 ...

  6. Deep Learning 16:用自编码器对数据进行降维_读论文“Reducing the Dimensionality of Data with Neural Networks”的笔记

    前言 论文“Reducing the Dimensionality of Data with Neural Networks”是深度学习鼻祖hinton于2006年发表于<SCIENCE > ...

  7. 论文笔记:Mastering the game of Go with deep neural networks and tree search

    Mastering the game of Go with deep neural networks and tree search Nature 2015  这是本人论文笔记系列第二篇 Nature ...

  8. 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks

    论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...

  9. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

随机推荐

  1. C++矩阵库 Eigen 简介

    最近需要用 C++ 做一些数值计算,之前一直采用Matlab 混合编程的方式处理矩阵运算,非常麻烦,直到发现了 Eigen 库,简直相见恨晚,好用哭了. Eigen 是一个基于C++模板的线性代数库, ...

  2. kaggle _Titanic: Machine Learning from Disaster

    A Data Science Framework: To Achieve 99% Accuracy https://www.kaggle.com/ldfreeman3/a-data-science-f ...

  3. 史上最详细的codeblocks安装教程!!!

    codeblocks下载地址:https://www.cnblogs.com/yinbiao/p/8489748.html 下面是codeblocks具体的安装教程:

  4. C++垃圾回收器的实现

    一.简单介绍 这是一个自己写C++垃圾自己主动回收器,用到的都是标准C++语法.採用了引用计数加mark-sweep的方法.在没有循环引用的情况下,引用计数能够保证垃圾实时得到回收:对于有循环引用的情 ...

  5. Spring MVC 入门笔记

    主要名词解释 DispatcherServlet 前端控制器  相当于一个转发器 入口: protected void doDispatch(HttpServletRequest request, H ...

  6. modbustcp封装使用获取设备数据示例

    //接受数据请求public function client($pz){    //参数1是:网络协议,    //AF_INET:   IPv4 网络协议.TCP 和 UDP 都可使用此协议.一般都 ...

  7. oracle 判断字段相等,但类型不同引起的性能问题

    最近做ogg数据同步,然后触发器加工数据放入另外一张表,由于数据量很大,一分钟几万条数据,由于一些条件字段类型不匹配,引起ogg阻塞,比较头大.最后分析发现性能问题.请看下图: phmxxh是varc ...

  8. uboot-2012.04.01移植编译前准备

    一:准备移植1.从下面的官网下载uboot-2012.04.012.建立sourceinsight工程 a.解压并在E:\colin weidongshan\transplant_u-boot-201 ...

  9. 学习sbtenv

    背景 最近由于工作需要, 我总是在不同的scala项目间流动开发. 这就遇到一个很棘手的问题, 这几个项目用的sbt版本不一致, 老项目用的是 sbt 0.13.15, 新项目用的是 sbt 1.0. ...

  10. 在jupyter中安装R的kernal

    网上有安装完anaconda后可以直接使用conda 命令安装R的kernal,本人电脑上已经安装了anaconda和R,因此使用手动安装的方式安装. 安装环境: windows 8.1 企业版 An ...