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. Day17 多线程编程

    基本概念 进程:内存中正则运行的一个应用程序.一个进程包含多个线程. 线程:进程中的一个执行流程. 多线程:有两个或两个以上的并发执行流程. 线程的声明周期 说明: 1. 新建状态(New)      ...

  2. 优化升级logging封装RotatingFileHandler

    1.升级优化,提供用户自定义日志level文件夹生成控制,提供日志错误显示到日志打印异常补获到日志 # coding=utf-8 import logging import time import o ...

  3. jq的innerWidth()遇到的坑

    innerWidth()在元素隐藏的时候是取不到值的,但是取到的是元素的内部尺寸,包括padding和content值,,如果元素隐藏了之后他的content就为空,值为0,所以只有等到元素显示之后再 ...

  4. Handlebars模板引擎

    介绍 Handlebars 是 JavaScript 一个语义模板库,通过对view和data的分离来快速构建Web模板.它采用"Logic-less template"(无逻辑模 ...

  5. 手把手教你写基于C++ Winsock的图片下载的网络爬虫

    手把手教你写基于C++ Winsock的图片下载的网络爬虫 先来说一下主要的技术点: 1. 输入起始网址,使用ssacnf函数解析出主机号和路径(仅处理http协议网址) 2. 使用socket套接字 ...

  6. Web安全0002 - SQL注入 - 注入流程

    注:本文是学习网易Web安全进阶课的笔记,特此声明. 一.信息搜集 — 数据库类型 - 报错信息.特有语句— 数据库版本(@@version,$version)— 数据库用户— 判断数据库权限 二.数 ...

  7. C语言__LINE__实现原理

    在test.c中写如下代码: 1 #include <stdio.h> 2 3 int main() 4 { 5     printf("line:%d\n", __L ...

  8. Kotlin基础篇(一)

    写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...

  9. 20155239吕宇轩 Linux下IPC机制

    20155239吕宇轩 Linux下IPC机制 - 共享内存 原理:把所有需要使用的共享数据都存放在共享内存 区域中,任何想要访问这些共享数据的进程都必须在自己的进程地址空间中新增加一块内存区域,用来 ...

  10. JavaScript总结(五)

    详解DOM(文档对象模型(Docment Object Model)) ✍  DOM中定义了许多节点类型来表示节点的多个方面: 文档节点Document 最顶层的节点(跟节点),代表整个HTML文档, ...