专栏首页新智元基于分形结构的极深神经网络,超越 ImageNet 2015 冠军 ResNet(附论文下载)

基于分形结构的极深神经网络,超越 ImageNet 2015 冠军 ResNet(附论文下载)

【新智元导读】ResNet 是 ImageNet 2015 冠军,通过让网络对残差进行学习,在深度和精度上做到了比 CNN 更加强大。于是有人认为残差结构对此很重要,本文提出一个不依赖于残差的极深(Ultra-Deep)架构,指出残差学习对极深 CNN 并非必需。论文提出了极深 CNN 中首个 ResNet 的替代品 FractalNet ,并开发了一种新的正则化规则,无需数据增强就能大幅超越残差网络性能。作者称该结构可以自动容纳过去已有的强大结构。

  • 【题目】分形网络:无残差的极深神经网络(FractalNet: Ultra-Deep Neural Networks without Residuals)
  • 【作者】芝加哥大学 Gustav Larsson,丰田工大学芝加哥分校 Michael Maire 及 Gregory Shakhnarovich

关注新智元(AI_era),回复“0530”下载论文

摘要

我们为神经网络的宏观架构引进了一种基于自相似的设计策略。单一扩展规则的重复应用生成一个极深的网络,其结构布局正是一个截断的分形。这样的网络包含长度不同的相互作用子路径,但不包含任何直通式连接(pass-through connections):每个内部信号在被下一层看见之前,都被一个过滤器和非线性部件变换过了。这个性质与当前显式规划极深网络的结构使得训练成为一个残差学习问题的方法形成鲜明对比。我们的实验表明,残差表示不是极深卷积神经网络成功的基本要素。分形设计在 CIFAR-100 数据集(https://www.cs.toronto.edu/~kriz/cifar.html) 上达到 22.85% 的错误率,与残差网络的最佳水平持平。

除了高性能之外,分形网络还展现了有趣的性质。它们可被认为是各种深度的子网络的隐式联合且计算效率高。我们探讨了对于训练的影响,简单提及了与“师徒”行为的联系,最重要的,展示了提取高性能固定深度子网络的能力。为了实现后一个任务,我们发展路径舍弃方法(drop-path; 对 dropout 的自然扩展)正则化分形架构里子路径的协同适应。通过这样的正则化,分形网络展示了一种无例外的性质:浅层子网络给出快捷的答案,而深度子网络(有较多延迟)给出更精准的答案。

1. 引言

最近的 ResNet 在深度和精度上比卷积神经网络(CNN)做出了极大进步,方法是让网络对残差进行学习。ResNet 的变型以及类似的架构通过直接通道(pass-through channel;相当于恒等函数的网络)使用了共同的初始化和锚定技术。这样,训练有两个方面不同。第一,目标变成对残差输出的学习而不是对未被提及的绝对映射学习。第二,这些网络展示了一种深度监督,因为接近恒等的层有效减少了损失距离。何恺明等人 [8] 推测前者(即残差的构造)是关键的。

答案并非如此。我们通过构造不依赖于残差的极深架构揭示了这一点。我们的设计原则非常单纯,用“分形”一个词以及一幅图(图 1)就足以描述。可是,分形网络隐含地重现了过去的成功架构里硬性加入的许多性质。深度监督不仅自然出现,并且驱动了一种网络内部的“师徒学习”(student-teacher learning)。其他设计的模块化构成单元几乎都是分形网络嵌套子结构的特殊情形。

对于分形网络,训练的简单性与设计的简单性相对应。单个连接到最后一层的损失函数足以驱动内部行为去模仿深度监督。参数是随机初始化的。由于包含不同深度的子网络,分形网络对总体深度的选取不敏感;让深度足够,然后训练会刻划出有用的子网络集合。

图 1:分形架构。左:简单的扩展规则生成分形架构。基础情形 f1(z) 包含输入输出之间单个选定类型的层 (比如卷积层)。连接层计算了逐元素平均。右:深度卷积网络周期性地通过汇集来降低空间分辨率。分形版本使用 fC 作为汇集层之间的建构单元。把 B 个这样的块堆起来就得到一个网络,其总深度是 B * 2^{C-1} (通过卷积层衡量)。这个例子的深度是 40 (B = 5, C = 4)。

分形设计导致的一系列涌现行为可能会让近期为了达到类似效果发展出的工程技巧变得不那么必要。这些技巧包括,恒等初始化的残差函数形式,手动深度监督,手工雕琢的架构模块,以及师徒训练体系。第 2 节回顾了这些相互关联的技术。混合设计当然可以把它们中任何一个与分形架构集成;关于这种混合体在多大程度上是多余或是互相促进这个问题,我们持开放态度。

我们的主要贡献有以下两点:

  1. 引入了 FractalNet,第一个在极深卷积神经网络领域对于 ResNet 的替代品。FractalNet 在科学上令人吃惊,它表明了残差学习对于极深网络不是必需的
  2. 通过分析和实验,我们阐释了 FractalNet 与一系列被加入到之前深度网络设计的那些现象之间的联系。

还有一个贡献,我们为极深网络开发了一种称为路径舍弃的新的正则化规则。已有的关于深度残差网络的工作其实缺乏有效正则化技术的展示,而仅仅依赖于数据增强。无需数据增强,通过 dropout 和路径舍弃训练的分形网络远远超过了报道的残差网络的性能。

路径舍弃不仅是一种直观的正则化策略,而且提供了保证训练出的分形网络拥有无例外性质的方法。具体来说,训练期间对路径舍弃的特定安排阻止了不同深度的子网络的协同适应。结果就是,浅和深的网络必需各自能输出正确结果。测试期间,对浅子网络的请求在整个网络完成之前给出快速而精度普通的答案。

第 3 节给出了分形网络和路径舍弃的细节。第 4 节提供了基于 CIFAR-10, CIFAR-100 以及 SVHN 数据集与残差网络的比较。我们还评估了正则化和数据增强策略,探究了训练期间的子网络师徒行为,评价了通过路径舍弃得到的 anytime 网络。第 5 节提供了综合。通过容纳许多已知但看起来不同的设计原理,自相似结构也许会变成神经网络架构的基本组件。

2. 相关研究(略)

3. 分形网络

我们从对图 1 中描绘的想法的正式陈述开始。我们将以卷积神经网络作为例子和实验平台。但是,需要强调我们的框架更有一般性。原则上,为了生成其他分形架构,图 1 中的卷积层可以被替换为不同的层类型,甚至是定制化的模块或子网络。

令 C 表示截断分形 fC(.) 的指标。我们的网络结构、连接以及层类型,通过 f C(.) 定义。包含单个卷积层的网络是基础情形:

f1(z) = conv(z) (1)

我们递归定义接下来的分形:

f{C+1}(z) = [ (fC o fC)(z) ] ⊕ [ conv(z) ] (2)

这里 o 表示复合,而 ⊕ 表示连接操作。当以图 1 的风格来画时,C 对应于列数,或者说网络 fC(.) 的宽度。深度定义为从输入到输出的最长路径上的 conv 层的个数,正比于 2^{C-1}。用于分类的卷积网络通常分散布置汇集层。为了达到相同目的,我们使用 fC(.) 作为构建单元,将之与接下来的汇集层堆叠 B 次,得到总深度 B * 2^{C-1}。

连接操作 ⊕ 把两个特征块合为一个。这里,一个特征块是一个 conv 层的结果:在一个空间区域为固定的一些通道维持活化的张量。通道数对应于前面的 conv 层的过滤器的个数。当分形被扩展,我们把相邻的连接合并成单个连接层;如图 1 右侧所示,这个连接层跨越多列。连接层把所有其输入特征块合并成单个输出块。

连接层行为的几种选择看起来都是合理的,包括拼接和加法。我们把每个连接实例化,计算其输入的逐元素平均。这对于卷积网络是恰当的,在那里通道数对一个分形块里的所有 conv 层是相同的。平均操作可能看起来类似 ResNet 的加法操作,但有几个关键不同:

  • ResNet 明确区分了直接通过与残差信号。在 FractalNet 里,没有什么信号是优越的。每一个对联合层的输入是上一个 conv 层的输出。单凭网络结构本身不能识别什么是主要的。
  • 路径舍弃正则化,如第 3.1 节描述,强制让每个连接层的输入独自可靠。这降低了回报,即便是隐式学习把一个信号的一部分作为另一个的残差这种情形。
  • 实验表明我们可以提取仅包含一列的高性能子网络 (4.2 节)。这样的子网络实际上不包含连接。它们不提供可以与残差相加的信号。

这些性质保证了连接层不是残差学习的一个替代方法。

3.1 基于路径舍弃的正则化

Dropout [10] 和 drop-connect [35] 通过修改网络层序列之间的相互作用来减弱共同适应 (co-adaptation)。由于分形网络包含额外的大尺度结构,我们提出使用一种类似的粗粒度正则化策略来辅助这些技术。

图 2 解释了路径舍弃。如同 dropout 禁止了活化的共同适应,路径舍弃通过随机丢弃连接层的操作数来禁止平行路径的共同适应。这压制了网络使用一个路径作为锚标,用另一个作为修正 (这可能导致过拟合) 的行为。我们考虑两个采样策略:

  • 局部:连接层以固定几率舍弃每个输入,但我们保证至少一个输入保留。
  • 全局:每条路径是为了整个网络选出的。我们限制这条路径是单列的,激励每列成为有力的预测器。

如同 dropout,信号可能需要恰当的缩放。对于逐元素平均,这是平凡的;连接仅仅计算了活跃输入的平均。

图 2:分形网络。某些层之间的连接被停用后仍能工作,前提是从输入到输出的某些路径还存在。路径舍弃保证至少一条这样的路径存在,与此同时许多其它路径被停用。训练期间,对每个 mini-batch 展示不同的活跃子网络阻止了平行路径的共同适应。全局采样策略返回单列作为子网络。与局部采样交替使用鼓励了每列发展为表现良好的单独运作的子网络。

实验中,我们使用了 dropout 以及对路径舍弃采用了 50% 局部以及 50% 全局的混合采样。我们在每个 mini-batch 采样一个新的子网络。内存足够的情况下,对每个 mini-batch,我们可以同时对一个局部样本和所有全局样本求值。

全局路径舍弃不仅仅是作为一个正则化器,也是一个诊断工具。监控单列的表现体提供了关于网络和训练机制的洞察,这将在 4.3 节进一步提及。单个强大的列也让使用者在速度和精度方面取舍。

3.2 数据增强

数据增强可以显著降低对正则化的需求。ResNet 展示了这一点,对 CIFAR-100 数据集从 44.76%的错误率降低到 27.22%。虽然数据增强对分形网络有好处,我们提出一点,那就是路径舍弃提供了高度有效的正则化,让它们无需数据增强也能达到有竞争力的结果。

3.3 优化

我们使用含冲量的随机梯度下降来训练分形网络。我们对每个 conv 层引进批量归一化(卷积,批量归一化,ReLU)。

4. 实验

我们使用 Caffe 实现 FractalNet。纯粹为了实现的方便,我们把图 1 中汇集和连接层的顺序翻转了。每列在跨越所有列的连接层之前单独汇集,而不是在那之后。

我们采用 CIFAR-100, CIFAR-10 以及 SVHN 作为比较用的数据集。我们评估在每个数据集的标准分类任务上的表现。这些数据集都由 32 x 32 图片组成,所以我们固定分形网络的块数为 5 (B=5),采用 2 x 2 的不重叠的 max-pooling。这就把输入的 32 x 32 分辨率变成 1 x 1。网络终端连接了 softmax 的预测层。

除非专门提及,我们把5个块中过滤器的个数设为(64,128, 256, 512, 512)。这个递增数列类似于 VGG-16 和 ResNet。这符合分辨率降低一半后通道数加倍的传统。

4.1 训练

对于使用 dropout 的实验,我们固定每块的丢弃率为 (0%, 10%, 20%, 30%, 40%)。局部路径舍弃采用 15% 的舍弃率。

我们在 CIFAR-10/CIFAR-100 上训练了 400 个 epoch,在 SVHN 上训练了 20 个 epoch;每当剩余的 epoch 数减半,我们就把学习速率缩小 10。学习速率初始为 0.2。我们使用随机梯度下降方法,批处理大小为 100,冲量为 0.9。对参数使用 Xavier 初始化。

对 CIFAR-10 和 CIFAR-100 有标准的数据增强技术,仅包含平移和镜像翻转。平移量是 -4 到 4 的随机数。有必要的时候图像在减去平均值后以 0 补全。一半的图像水平被翻转。我们给使用的数据增强不超过这些所得到的结果标记为“+”。标记为“++”的使用了更多的增强技术;精确的策略可能会不一样。

4.2 结果

表1.CIFAR-100/CIFAR-10/SVHN.

表 1 报告了 FractalNet 的表现,对应 C = 3 列,应用到 CIFAR 和 SVHN 分类任务上。也列了所有竞争方法的分数。整个表上 FractalNet 超过了原始 ResNet 的表现。使用数据增强后,FractalNet 在 CIFAR-100 上的表现几乎跟 ResNet 的最佳变型一模一样。不使用数据增强和正则化,我们模型在 CIFAR-100 和 CIFAR-10 上的表现优于 ResNet 和 随机深度的 ResNet。这提示与 ResNet 相比FractalNet 可能不那么容易过拟合。所有方法在 SVHN 上表现都不错,因此那个数据集没什么区分度。

不使用数据增强的实验强调了路径舍弃正则化的能力。对于 CIFAR-100,添加路径舍弃把错误率从 35.34% 降低到 28.20%。未正则化的 ResNet 则差得远 (44.76%),而通过随机深度正则化的 ResNet 达到的错误率为 37.80%,还不如我们未正则化的错误率 35.34%。CIFAR-10 上表现类似。

与数据增强组合起来后,路径舍弃要么提高了精度,或者效果不显著。通过路径舍弃,FractalNet 在 CIFAR-10 上达到所有模型中的最佳误差率。

对于 CIFAR-10,分形网络的最深的那列统计上与整个网络在统计上不能区分。这提示,对于这个任务,分形网络可能更重要的是作为学习框架,而不是最终的模型架构。

表2. Fractal Expansion.

表 2 表明 FractalNet 在通过增加 C 得到极深网络时性能并不下降 (C=6 对应 160 层)。这个表里的分数不能跟表 1 里的比。

表3. Fractal Columns.

表 3 提供的基准显示,普通深度神经网络当层数达到 40 后就会下降。我们的经验中,普通的 160 层的网络完全不能收敛。表 3 还高亮了使用 FractalNet 以及路径舍弃作为提取已训练好网络的能力。

4.3 内省

看图 3 中 40 层的分形网络训练期间的演化。通过追踪每一列我们发现,40 层的列一开始改进缓慢,但当网络中其它部分的损失开始稳定后会加快。普通的 40 层网络从来不会快速改进。

图 3.

我们猜测分形结构触发了类似于深度监督和以及师徒信息流的效应。第 4 列每隔一层就与第 3 列连接,而每隔 4 层这个连接不涉及别的列。当分形网络部分依赖于信号从第 3 列流过,路径舍弃对第 4 列施加压力,以产生一个当第 3 列被移除时的替代信号。一个特定的舍弃仅仅需要第 4 列中两个相邻层代替第 3 列中的一层。这相当于小小的师徒问题。

结论

FractalNet 展示了路径长度对训练极深神经网络至关重要;而残差的影响是偶然的。关键在于 FractalNet 和 ResNet 具有共同特性:标称网络深度很大,但训练过程中梯度传播的有效路径更短。分形结构可能是满足这一需求的最简单方式,并且能达到甚至超越循环网络的经验性能。它们能避免深度太大;过多的深度会使训练变慢,但不会增加准确度。

通过 drop-path 极深分形网络的正则化是直接而有效的。对于需要快速回应的应用,drop-path 能对分形网络里的延迟和精确性做折中。

我们的分析连接了分形网络中的突发内部行为与构建在其他设计中的现象。分形网络的子结构与一些卷积网络中作为结构模块的人工设计模块相似。它们的进化或许能仿真深度监视和师徒学习。

参考资料

[8] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. CVPR, 2016.

[35] L.Wan, M. Zeiler, S. Zhang, Y. L. Cun, and R. Fergus. Regularization of neural networks using dropconnect. In ICML, pages 1058–1066, 2013.

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ResNets、HighwayNets、DenseNets:用 TensorFlow 实现超深度神经网络

    【新智元导读】在许多任务中,神经网络越深,性能就越好。最近几年神经网络的趋势是越来越深。几年前最先进的神经网络还仅有12层深,现在几百层深的神经网络已经不是稀奇...

    新智元
  • ResNeXt:何恺明 Facebook 升级 ResNet,提出神经网络新维度

    【新智元导读】在 ImageNet 和 COCO 2015 竞赛中,共有 152 层的深度残差网络 ResNet 在图像分类、目标检测和语义分割各个分项都取得最...

    新智元
  • 何恺明等最新突破:视频识别快慢结合,取得人体动作AVA数据集最佳水平

    到底 SlowFast 网络是怎样的设计、有什么特征、效果如何,下面就一起来看一下~

    新智元
  • 你的网络为云计算做好准备了吗?

    随着现代企业网络进入公有云计算时代,企业网络管理员正转向与公有云服务提供商合作以确保网络可继续支持业务需求,这意味着某些IT基础面正在发生变化…… 首先,云网络...

    静一
  • 华为发布《自动驾驶网络解决方案白皮书》,制定未来10年阶段性目标

    近日,华为在全球分析师大会HAS 2020期间面向全球发布《自动驾驶网络解决方案白皮书》(以下简称《白皮书》),系统阐述了未来网络架构、运维架构和其关键技术,通...

    镁客网
  • Redis Lua脚本中学教程(下)

    在中学教程的上半部分我们介绍了Redis Lua相关的命令,没有看过或者忘记的同学可以步行前往直接使用机票Redis Lua脚本中学教程(上)。今天我们来简单学...

    Jackeyzhe
  • 从SAP最佳业务实践看企业管理(62)-SOP-采购物料价格计划

    要降低企业成本,要对公司成本做计划,主要为材料和人工成本. SOP 174采购物料价格计划 用途 采购物料的标准成本需要定期检查和更新,并在必要时与当前市场条件...

    SAP最佳业务实践
  • Spring Boot

    解释一下:Spring Boot 可以构建一切。Spring Boot 设计之初就是为了最少的配置,最快的速度来启动和运行 Spring 项目。Spring B...

    纯洁的微笑
  • 在ReadWriteLock类中读锁为什么不能升级为写锁?

    关于读写锁里面有一个锁升级和降级的问题,也就是写锁可以降级为读锁,但是读锁却不能升级为写锁。那么为什么是这样?

    我是攻城师
  • 一篇故事告诉你什么是微服务架构!

    看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习。而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落...

    Java后端技术

扫码关注云+社区

领取腾讯云代金券