大量研究表明:提升CNN的深度和宽度是一种有价值的提升图像识别性能的方法。然而,在我们的研究中,我们发现:伴随着两个方向均存在一些困难。一方面,极深网络导致性能的收敛以及训练的困难提升;另一方面,拓宽网络将导致计算负担和内存需求。这些困难驱动我们探索结构灵活性,一种超脱深度和宽度的新维度。我们提出一类新的模块,称之为PolyInception。它可以灵活进行嵌入(单独or组合).选择PolyInception模块可以提升性能同时保持同等计算负担。基于该方向的极深PolyNet在ILSVRC2012基本上证明了其性能。相比于Inception-ResNet-v2,它的top-5验证误差从4.9%降到4.25%,度尺度形式从3.7%下降到3.45%。
ILSVRC过去4年见证了分类误差的极大下降。这个过程伴随着网络的加深,从AlexNet到ResNet,从8层逐渐加深到152层。这种性能与深度的强相关伴随着大量关于极深网络工作的探索。另一方面,提升网络的宽度同样表明是一种有效的方式。这个方向的探索同样产生了大量的相关研究。
提升网络的深度或深度是追求最优性能的最佳策略吗?尽管先前工作的大量证据表明:是这样的,然而我们的经验研究却并非如此。特别的,我们发现:尺度提升网络深度,在达到一定级别后,收效甚微。同样的,拓宽网络也存在其自身问题。最重要的问题是复杂度和内存需求的极大提升。
这些因素驱动我们去探索结构灵活性,网络设计的另一可选维度。事实上,多样性的重要性已在前提工作了多次被证实,比如Inception模块,网络集成,以及近期与ResNet相关的集成工作。然而,以下几个问题仍未得到解答:1、什么是最佳的设计网络灵活的方式;2、何时追求灵活性要比追求深度更有价值。
在本文工作中,我们提出一种称之为PolyInception的模块。每个PolyInception是Inception单元(它以并行方式集成多路输入)的多项式组合,如下图所示。相比于传统的框架(依次顺序堆列),这种可选设计可以充分的提升网络的结构灵活性。PolyInception模块作为一个大网络的基础模块存在,它可以独立或者集成方式进行嵌入或替代已有模块。
基于不同设计选择的系统比较,我们设计了一种极深PolyNet,它包含三阶段不同分辨率的操作。PolyInception在不同阶段的不同配置经过了仔细选择。在ILSVRC2012验证集上,该网络获得了单网络4.25%的top-5误差,多网络3.45%的误差。相比于Inception-ResNet-v2(4.9%,3.7%)是一个极大提升。在相同计算负担下,它具有更少的参数(92M VS 133M)。
总体而言,本文的主要贡献包含以下几点:1、结构灵活性的系统研究,提供了超脱深度和维度之外的另一种探索维度;2、一类新的构建极深网络的模块;3、极深网络PolyNet在ILSVRC上取得了最佳单网络性能。
深度(层数)和宽度(输出的维度)是网络设计的两个重要维度。当希望提升网络的性能时,在计算负担允许的情况下,更深、更宽大多时候是很自然的选择。本问的主要目的是进一步推进DCNN的性能。因此,类似于大多数人,我们按照这两个选择开始工作。
在更深方向上,我们观察到性能的极大提升(50-269)。然而,进一步提升到500时,性能提升几乎消失。很明显:在达到一定水平后,提升网络的深度变得不怎么有效。在更宽方向上,同样存在其自身问题。当我们以因子k提升通道数时,计算福大足和内存需求以k2因子提升。这种计算损失的极大提升严重限制了该方向的进一步拓展。
两个方向所碰到的困难驱动我们探索另一种可行方案。回顾深度学习中的前期成果,我们发现:多样性(网络设计的另一角度,相对较少被探索)同样起着重要角色。它已被通过多种方式得到了证明。首先:集成方案通常优化任意单独网络;其次:ResNets(在多个任务上取得了最优性能)可视为浅层网络的隐形集成(有工作证明:成功源自多样性而非深度);最后:Inception-ResNet-v2取得了更好的性能,相比ResNet,它具有更少的层。关键改变:采用Inception模块替代残差单元,这种改变极大提升了每个单元的结构多样性。总而言之,所有发现均暗示:多样性(深度网络设计中的一个关键因素)值得进行系统研究。
受以上观察驱动,我们设计一类称之为PolyInception的模块,它通过多项式组合的方式扩展了Inception残差单元。这种新的设计不仅促进了结构多样性,同时提升了残差成分的表现能力。
首先,我们回顾了残差单元的设计原则。每个单元由两路输入组合得到输出,也就是:等价路径和残差模块。前者保留输入,后者通过非线性变换将输入转变为残差。两路相加的结果构成单元的输出,公式如下:(I + F) x := x + F(x)
在标准形式公式中,存在一个相通问题(包含ResNet和Inception-ResNet):残差模块很浅,仅包含2-4个卷基层。这限制了每个单元的容量,故需要大量的单元构建更好的表现性能。
结构灵活性的追求驱动我们研究了另一种方案:采用多项式组合方式泛化上述公式中的加性组合操作。比如,一种很自然的扩展是简单的添加二次项,这将导致一种新的计算单元:(I + F + F2) x = x + F(x) + F(F(x)) .相应架构如下所示。
这种单元组合了三个通路:等价通路、一阶通路以及二阶通路。所有通路的结果进行相加得到该单元的输出(相加后再ReLU)。二阶通路允许输入信号在被合并到主路径之前通过更深的变换。这可以提升单元的表现性能。
Poly-2:,它包含两种形式。这种方式意味着他们共享参数。这种设计可以提升表现性能而唔系引入额外参数;
Mpoly-2:,这种架构类似于poly-2,区别在于两个Inception模块不共享参数。它具有更强的表现性能,但会造成参数增加。
2-way:,这是一种一阶PolyInception,它集成额外的一阶通路到整个单元中。这种构架类似于Multiple Residual Network。
在进行整个网络设计之前,我们首先研究了PolyInception如何增强整理性能。我们采用修整后的Inception-ResNet-v2(IR-v2)作为基准模型。如下所示。
从中可以看出IR-v2包含三阶段ABC操作,对不同分辨率进行操作(35,17, 8)。这三个阶段分别包含5、10、5个Inception残差单元。采用不同的PolyInception对上述IR单元进行替换,共计得到18中配置模型。其性能比对如下所示。从比对结果来看:PolyInception的替换总是导致了性能提升以及计算损失提升。尽管总体趋势是:提升计算复杂度或参数会导致更优性能,但是不同模块的有效性差异很大。比如B阶段的增强对性能提升最为有效。尤其是:对该阶段,mpoly-3表现为最佳架构选择,poly-3次之。然而,需要注意到:poly-3的参数仅为mpoly-3的三分之一。其他两个阶段(Aor C)的性能提升相对要小很多。在这两个阶段中,k-way表现的稍好。这些发现为采用PolyInception设计极深网络提升了有价值的参考。
在上述研究中,我们按照特定配置采用PolyInception替换Inception模块。尽管该研究发现了不同阶段的有意思的差异,但是仍存在一个问题:如果我们在同一阶段采用不同的PolyInception配置会怎样呢?
我们设计了一些研究去探索这个问题。该研究采用更深的网络:IR6-12-6作为基准。它不仅提供更深层次观察性能的机会,同时提供更好的纬度探索不同模块组合。特别的,我们集中关注于B阶段,因为我们发现该阶段在整体性能中具有最大影响。同时,集中于单一阶段使得我们可以在有限计算资源下探索更多的配置。
该研究包含5中配置:基准IR6-12-6,三种均匀配置(poly-3,mpoly-3, 3-way)以及混合配置。混合配置将B阶段中的12单元分成4组,采用链式PolyInception进行替换(如下图所示)。
以上几种模型的性能比对如下。我们发现:用PolyInception替换IR单元可以导致性能的提升,poly-3要比其他稍好。值得关注的是:混合配置优于所有单独配置。这清晰的表明:增强结构多样性不仅存在于每个模块内部,同样存在于模块之间。
基于以上研究,我们参考Inception-ResNet-v2架构设计我们的极深PolyNet。该设计的目标是:在给定计算负担下(32个具有128GBRAN的GPUs,),探索最优性能的网络。为达到该目标,我们精心的设计选择PolyInception模块(考虑了多个因素,比如表达能力与计算负担、结构多样性、训练难度等。另外,受参数大小约束的通信损失在分布式环境中训练时同样重要)。
我们最终的设计描述如下:A阶段包含10个2-wayPolyInception残差单元,B阶段包含10个混合poly-3和2-way(总计20模块),C阶段包含5个混合poly-3和2-way(总结10模块)。为适应GPU上的网络(降低通信损失,保留有效深度),做了如下修正:采用2-way和poly-3替换最佳性能中的3-way和mpoly-3。
训练集:ILSVRC2012
训练设置:RMSProp,decay=0.9,e-1.0,采用BatchNormlization,学习率初始为0.45,每160K迭代以0.1因子进行学习率缩放。所有训练在进行560K迭代后结束,整个训练阶段,学习会下降三次,Mini-batch = 256。
初始化方式:由浅入深。
残差缩放:简单的相加会导致不稳定的训练流程。修改如下:
随机通路:极深网络倾向于在训练后期过拟合,甚至在大数据机上仍有这种表现。网络的随机drop(随机深度、DropOut、DropConnect、Drop-path等)可以有效处理过拟合趋势。基于此,我们引入一种称之为随机通路的技术(以一定概率随机drop一些通路),如下示意。
我们发现:过早采用随机通路会阻碍手链。在我们的训练中,自适应策略(当观察到研究过拟合时激活该策略)。
在相同计算复杂度参考下,设计的不同网络架构性能比对如下。
从上可以得到几个重要发现:1、当计算负担有限时,更深的结构更为有效;2、随着计算负担的提升,结构多样性的增益增强更快。特别的,在4000ms/iter下,相比于简单的堆叠单元,结构灵活性可以得到更大的性能提升。3、在相同计算负担下,基于Inception的极深网络优于标准的ResNet架构。部分源于结构多样性。总体而言,这些观察证实了结构多样性和深度的补充性作用,这可以促进未来的深层架构设计。
下表给出了不同模型的top-1和top-5的评估误差。所提极深PolyNet不仅优于ResNet和Inception-ResNet-v2,而且优于他们的极深变种。
本文探索了极深网络设计的新方向:结构多样性。在该方向上,我们提出了一称之为PolyInception的模块用于拓展残差风格网络。我们实施了系统的实验以探索PolyInception的表现。我们的研究表明:在更深的路上,增强结构多样性可以导致性能的进一步提升。
备注:
以上纯粹为笔者对港中文PolyNet这篇文章的翻译。
依笔者个人理解来看:这篇文章的主旨与Inception-ResNet-v2一文没有本质上的区别。因未看到其论文中的的code链接,故不做过多评价。