设计高效、高质量的表达性网络架构一直是深度学习领域最重要的研究课题。当今的大多数网络设计策略都集中于如何集成从不同层提取的特征,以及如何设计计算单元来有效地提取这些特征,从而增强网络的表现力。本文提出了一种新的网络设计策略,即基于梯度路径分析来设计网络结构。总体而言,当今主流的网络设计策略大多基于前馈路径,即基于数据路径设计网络架构。在本文中希望通过提高网络学习能力来增强训练模型的表达能力。由于驱动网络参数学习的机制是反向传播算法,本文设计了基于反向传播路径的网络设计策略。提出了layer-level、stage-level和network-level的梯度路径设计策略,并通过理论分析证明了设计策略的优越性和可行性和实验。
深度神经网络(DNN)
现在广泛用于各种设备,以解决不同类型的任务。数百万科学家、工程师和研究人员参与了深度学习相关的工作。他们都期待着设计出能够满足他们需求的高效、准确、低成本的解决方案。因此,如何设计适合其产品的网络架构变得尤为重要。
自2014年以来,许多DNN
在各种任务上取得了接近人类或优于人类的性能。例如,谷歌的GoogLeNet
和微软的PReLUNet
在图像分类方面,Facebook
的Deepface
在人脸识别方面,DeepMind
的AlphaGo
在围棋棋盘上等等。基于上述领域的开始,一些研究人员继续开发更先进的新架构或算法以击败上述方法;
其他研究人员关注如何使DNN相关技术在人类日常生活中实用。Iandola
等人提出的SqueezeNet
是一个典型的例子,因为它将AlexNet
的参数数量减少了50倍,但可以保持相当的精度。MobileNet
和ShuffleNet
也是很好的例子。前者将实际硬件操作延迟直接添加到架构设计的考虑中,而后者将硬件特性的分析用作设计神经网络架构的参考。
就在ResNet
、ResNeXt
和DenseNet
架构解决了深层网络训练中遇到的收敛问题之后,近年来CNN
架构的设计集中在以下几点:
换句话说,大多数研究遵循深度网络的共同认知,即从浅层提取low-level
特征,从深层提取high-level
特征。根据上述原则,可以使用它们来设计神经网络架构,以有效地组合数据路径(前馈路径)中的不同level
的特征。
然而,这样的设计策略是否一定正确?从图1中发现,通过调整目标和损失层的配置,可以控制每个层(浅层或深层)学习的特征。也就是说,权重学习什么样的特征主要取决于使用什么样的信息来教它,而不是输入来自哪些层的组合。基于这一发现,作者重新定义了网络设计策略。
由于提出网络结构可以用目标函数可以指导神经网络学习信息的概念来设计,因此必须首先了解目标函数如何影响网络权重的更新。
目前,主要的权重更新方法是反向传播算法,它使用偏微分生成梯度,然后通过梯度下降来更新权重。该算法以链式规则的方式将梯度信息传播到浅层,并重复这些步骤,直到更新所有层的权重。换句话说,目标函数教导的信息以梯度的形式在层之间传播。
在本文中提出通过分析通过目标函数的引导生成的梯度,可以在执行反向传播过程时通过梯度路径来设计网络结构。作者分别为3个不同级别的策略设计网络架构,如layer-level
、stage-level
和network-level
,如下所述:
我们在这个层次上设计了梯度分流策略,并使用它们来确认假设的有效性。在这个水平上,我们设计了梯度流分流策略,并使用它们来确认假设的有效性。我们调整层数,计算残差连接的信道比,然后设计Partial Residual Network(PRN)
。
我们添加硬件特征以加快网络推理速度。最大化梯度组合,同时最小化硬件计算成本,因此设计了Cross Stage Partial Network(CSPNet)
。
我们增加了梯度传播效率的考虑,以平衡网络的学习能力。当设计网络架构时,还考虑了整个网络的梯度传播路径长度,因此设计了Efficient Layer Aggregation Network(ELAN)
。
如图2所示,在本文中将网络设计策略分为两种:
数据路径设计策略主要侧重于设计特征提取、特征选择和特征融合操作,以提取具有特定属性的特征。这些特征可以帮助后续层使用这些特征进一步获得更好的属性,以便进行更高级的分析。
应用梯度路径设计策略的目的是分析梯度的来源和组成,以及如何通过驱动参数更新梯度。然后,可以使用上述分析的结果来设计网络架构。设计理念是希望最终的参数利用率更高,从而达到最佳的学习效果。
接下来将分别讨论数据路径设计策略和梯度路径设计策略的优点和缺点。
数据路径设计策略有3个优点:
数据路径设计策略有2个缺点:
non-local
网络的成对关系很容易退化为一元信息;AI
的ASIC
设计中,如果设计者想要添加算术单元,则需要额外的一组电路。梯度路径设计策略,总共有3个优点:
由于上述原因,所设计的网络在架构上可以更轻、更简单。
梯度路径设计策略有1个缺点:
Partial Residual Networks(PRN)
其设计理念属于layer-level
设计策略。在PRN
的设计中,主要概念是最大化用于更新每层的权重的梯度组合。影响梯度组合的主要因素有2个:
需要注意的一点是,当梯度在链规则更新过程中发生变化时,其覆盖的丢失信息量将随着链的增长而逐渐减少。作者将上述持续时间定义为梯度流从损失层行进到特定层所需的层数。在PRN
中提出了以下2种结构来改进ResNet
:
在ResNet
的设计中,将每个计算块的输出与identity
连接一起添加,这样的结构称为残差层。在PRN
中,将identity
连接乘以二进制Mask
,并且只允许将某些通道的特征映射添加到计算块的输出中。将此结构称为Masked residual layer
,其架构如图3所示。使用Masked residual layer
的机制允许将特征图分为两部分,其中与被Mask
的通道相对应的权重和与具有identity
连接的通道相对的权重将由于上述identity
效应而显著增加梯度组合的数量。此外,梯度源的差异将同时影响整个梯度时间戳(沿时间轴的时间节点),从而使梯度组合更加丰富。
在ResNet
架构下,只能添加相同大小的特征图,这就是为什么它是一个非常受限的架构。通常,当执行优化的架构的计算量和推理速度时,常常受到这种架构的限制,无法设计出符合要求的架构。在PRN
架构下,提出的Masked residual layer
可以将通道数量的不一致性视为某些通道被阻塞,从而允许具有不同通道数量的特征图执行Masked residual
操作。
将以上述方式操作的层称为Asymmetric residual layer
。Asymmetric residual layer
以这样的方式设计,即网络架构更灵活,并且更能够保持基于梯度路径的模型的属性。例如,当进行特征集成时,一般方法需要额外的过渡层来将不同的特征映射投影到同一维度,然后执行添加操作。然而,上述操作将增加大量参数和计算量,并且还将使梯度路径更长,从而影响网络的收敛。引入Asymmetric residual layer
可以完美地解决类似问题。
CSPNet
于2019年提出,它是一个基于Stage-level
梯度路径的网络。与PRN
一样,CSPNet
基于最大化梯度组合的概念。CSPNet
和PRN
的区别在于,后者侧重于从理论角度确认梯度组合对网络学习能力的改善,而前者则是为了进一步优化硬件推理速度而额外设计的。因此,在设计CSPNet
时,将架构从Layer-level
扩展到Stage-level
,并优化整体架构。
CSPNet
主要有以下2种结构:
从最大化梯度源的角度来看可以很容易地发现,当每个通道具有不同的梯度路径时,梯度源可以最大化。此外,从最大化梯度时间戳的角度来看,当每个通道具有不同深度的计算块时,可以最大化梯度时戳的数量。
根据上述概念可以导出一种设计用于最大化梯度源和梯度时间戳的架构。这种架构将是类似fractal-like
的架构和具有深度卷积的类似分形的架构。虽然上述设计可以有效地提高参数利用率,但会大大降低并行化能力。此外,这将导致模型显著降低GPU
和TPU
等推理引擎上的推理速度。
从前面的分析知道划分通道可以增加梯度源的数量,并且使不同通道连接的子网络具有不同的层可以增加梯度时间戳的数量。本文设计的Cross stage
部分操作可以最大化梯度的组合,并在不破坏架构的情况下提高推理速度,并且可以并行化。
该体系结构如图4所示。在图4中,将stage
的输入特征图分成两部分,并使用这种方式增加梯度源的数量。
具体步骤如下:首先将输入特征图分成两部分,其中一部分通过计算块,该计算块可以是任何计算块,如Res Block
、ResX Block
或Dense Block
。至于另一部分,它直接跨越整个Stage
,然后与经过计算块的部分集成。由于只有部分特征图进入计算区进行操作,这种设计可以有效地减少参数量、操作、内存流量和内存峰值,从而使系统实现更快的推理速度。
为了使设计的网络架构更强大进一步分析了用于更新CSPNet
的梯度流。由于计算块中经常使用shortcut
连接,提供2条路径的梯度源必然会重叠很多。当特征图通过kernel
函数时,它相当于空间投影。通常可以在两条路径的末端插入过渡层,以截断复制的梯度流。通过以上步骤可以使从2条路径和相邻Stage
学习到的信息具有更明显的多样性。
作者设计了3种不同的重复梯度流截断操作组合,如图5所示。这些操作可以与不同的架构相匹配,例如计算块和下采样块,以获得更好的结果。
高效层聚合网络(ELAN)
的代码于2022年7月发布。在网络层面,它属于梯度路径设计网络的范畴。设计ELAN
的主要目的是解决在执行模型缩放时深度模型的收敛性会逐渐恶化的问题。
作者分析了通过整个网络中每个层的最短梯度路径和最长梯度路径,从而设计了具有有效梯度传播路径的层聚合架构。ELAN
主要由VoVNet
和CSPNet
组成,并利用计算块中的堆栈结构优化了整个网络的梯度长度。在接下来的内容中将详细说明计算块中的堆栈是如何工作的。
堆栈在计算块中。当在做模型缩放时会出现一种现象,即当网络达到一定深度时,如果继续堆叠计算块,精度增益将越来越小。更糟糕的是,当网络达到某个临界深度时,其收敛性开始恶化,导致总体精度比浅层网络差。
最好的例子之一是Scaled-YOLOv4
,看到它的P7
模型使用了昂贵的参数和操作,但只有少量的精度增益,而且在许多流行网络中也会出现同样的现象。例如,ResNet-152
的计算强度大约是ResNet-50
的3倍,但在ImageNet
上的精度提高不到1%。当ResNet
堆叠到200层时,其精度甚至比ResNet-152
更差。此外,当VoVNet
堆叠到99层时,其精度甚至远低于VoVNet-39
。
从梯度路径设计策略的角度来看,作者推测VoVNet
的精度退化比ResNet
快得多的原因是因为VoVNet
堆叠基于OSA
模块。每个OSA
模块都包含一个过渡层,因此每次堆叠OSA
模块时,网络中所有层的最短梯度路径都会增加一个。
至于ResNet
,它是由残余块堆叠的,残余层的堆叠只会增加最长的梯度路径,而不会增加最短的梯度路径。为了验证模型缩放的可能影响,作者基于YOLOR-CSP
进行了一些实验。从实验结果中发现,当堆叠层达到80+层时,CSP fusion first
的精度开始优于正常的CSPNet
。此时,每个Stage
的计算块的最短梯度路径将减少1。随着网络的不断扩大和加深,CSP fusion last
将获得最高的精度,但此时所有层的最短梯度路径将减少1。
上述实验结果证实了先前的假设。在上述实验的支持下,如图6所示,在ELAN
中设计了“计算块中的堆栈”策略。设计的目的是避免使用过多过渡层的问题,并使整个网络的最短梯度路径快速变长。当网络堆叠得更深时,上述设计策略能够成功地训练ELAN
。
在本节中,将分析基于经典网络架构提出的梯度路径设计策略。
首先,将使用梯度组合的概念分析现有的网络架构和所提出的PRN
,该示例表明表现良好的网络架构确实具有更丰富的梯度组合。
然后,将分析所提出的CSPNet
如何带来更丰富的梯度组合和其他好处。
最后,通过stop
梯度分析了梯度路径长度的重要性,从而证实了所提出的ELAN
具有设计概念上的优势。
一般研究人员通常使用最短梯度路径和集成特征的数量来衡量网络架构的学习效率和能力。然而,从SparseNet
中可以发现,如表1所示,这些度量与准确性和参数使用并不完全相关。作者观察了梯度传播的过程,发现用于更新不同层权重的梯度组合与网络的学习能力非常匹配,在本节中将分析梯度组合。
梯度组合由2种类型的组件组成,即Gradient Timestamp
和Gradient Source
。
图7显示了ResNet
、PRN
、DenseNet
和SparseNet
的架构。其中,作者展开了cascaded residual connection和concatenation connection
以便于观察梯度传播过程。此外,图7还显示了每个架构上的gradient flow delivery timestamps
。gradient sequence
相当于广度优先搜索过程,每个sequence
将访问上一轮遍历所到达的所有outdegree nodes
。
从图7中可以看到PRN
使用通道分割策略来丰富由对应于不同通道的权重接收的Gradient Timestamp
。至于SparseNet
,它使用稀疏连接来使与不同层相对应的权重连接所接收的Timestamp
更加可变。
上述两种方法都可以学习具有不同权重的更多样的信息,这使得提出的架构更强大。
图8显示了第1个梯度时间戳处ResNet
、PRN
和DenseNet
的Gradient Source
。从图8可以看出,connection-based
的架构,如DenseNet
和SparseNet
,属于必须特别处理的网络。这是因为在梯度传播过程中,如果它是由同一层在某个Gradient Timestamp
传播的梯度信息,因为梯度流已经被预先分割,所以它不能像普通网络那样被处理。
对于基于残差连接的架构,如ResNe
t和PRN
,完全相同的梯度信息被传播到所有的outdegree
层。由于PRN
的outdegree
仅连接到其他层的某些通道,因此它可以具有比ResNet
整体更丰富的梯度组合。
此外,还有使用其他split-transform merge
策略的网络架构,例如基于group convolution-based
的ResNeXt
和基于depth-wise convolution
的MobileNet
等,这也可以增加Gradient Source
的数量。
总之,通过对梯度反向传播过程中产生的Gradient Timestamp
和Gradient Source
的分析,可以清楚地解释现有的流行网络架构以及提出的PRN
所学习的信息和参数的利用效率。在ResNet
中,不同的层共享相同Timestamp
和相同Gradient Source
的许多梯度,DenseNet
将相同Timestamp
但不同Source
的梯度信息传递给相应的层。这部分清楚地解释了为什么基于串联连接的DenseNet
可以避免像基于残差连接的ResNet
那样容易地学习大量无用信息的问题。本文提出的PRN
使用简单的masked residual layer
来增加沿时间轴的梯度组合的数量,同时保持ResNet
网络拓扑,并转移Gradient Source
,从而增加Gradient Source
的可变性。
CSPNet
旨在增强在线学习能力,同时加快推理速度,因此将分别从这两个方面讨论CSPNet
策略的优势。在第3.1节中进行的分析中观察到,即使Gradient Source
生成的组合数量相同,当不同组合之间接收到的公共分量减少时,这使得梯度分量更丰富,也使网络学习更好。这种现象实际上发生在为单层权重学习大量参数的过程中。
例如,dropout
使用随机伯努利Mask
神经元来防止参数学习协同适应信息。从数学模型的角度来看,dropout
是通过使用不同输入产生的梯度来更新不同部分的权重,这相当于随机集成结构。至于CSPNet
,它通过梯度路径上梯度的时间差和空间变换,直接增加了梯度组合的丰富性。接下来将介绍CSPNet
使用什么策略来解决重复梯度信息的问题,以及它如何提高资源利用率。
在第3.1节中分析了梯度组合的数量以及多样性对网络学习能力的影响。在CSPNet
中进一步分析了不同层接收的梯度信息内容,并设计了架构以提高参数使用效率。从PRN
和SparseNet
的梯度组合可以发现,它们在增加梯度组合丰富度的过程中具有共同性,即通过残差连接或密集连接接收大量重复梯度信息的情况显著减少。作者推测,这些重复的梯度是大量权重容易学习共适应信息的主要原因。
对于PRN
,它利用梯度定时差来更新部分通道的权重。随着链式规则的更新过程,上述时间差将扩散到整个网络,然后实现更丰富的梯度组合。
此外,CSPNet
直接使用cross stage
使整个stage
的两条路径具有很大的时间差,并使用不同的融合结构来减少stage
与stage
之间或计算块路径与cross stage connection
路径之间的重复梯度信息。
以Darknet-53
为例,假设cross stage
部分操作根据通道的方向将特征图分成两个相等的部分。此时,残差块的输入通道数和输出通道数减半,而中间的通道数保持不变。
根据上述结构,计算块的总体计算和参数量将减少到原始的一半,而内存峰值是输入特征图和输出特征图的大小之和,因此将减少到原来的2/3。此外,由于整个计算块中卷积层的输入通道和输出通道相等,因此此时的存储器访问成本将最小。
总之,CSPNet
成功地将梯度组合的概念与硬件利用效率相结合,使得所设计的网络架构同时提高了学习能力和推理速度。CSPNet
仅使用简单的channel split
、 cross stage connection
并在不改变原有网络计算单元的情况下成功完成预设目标。
CSPNet
的另一个优点是它可以应用于许多流行的网络架构,并在各个方面提高整体网络效率。在表2中展示了应用于几种流行网络架构的CSPNet
的优异性能。最后,由于CSPNet
对许多硬件资源的要求较低,因此它适用于具有更严格硬件约束的设备上的高速推理。
如第3.1节所述,整个网络的梯度路径越短并不意味着学习能力越强。此外,即使整个梯度组合路径的长度是固定的,作者发现ResNet
的学习能力仍然下降当堆叠非常深时。然而,作者发现上述问题可以用于在训练阶段使用随机深度将ResNet分解为较浅的随机子网络进行训练,这可以使超深ResNet
收敛到更好的结果。
上述现象告诉我们,在分析梯度路径时,不仅可以查看整个网络的最短梯度路径和最长梯度路径,还需要更详细的梯度路径分析。在下文中,将通过在训练期间调整梯度流来控制梯度路径长度,然后根据结果讨论在设计网络架构时的梯度长度策略。
首先基于ResNet探讨最短梯度长度的重要性。与PlainNet
相比,ResNet
中的每个残差块除了通过计算块的梯度之外,还通过identity
连接在计算块上具有一部分梯度。这里,如图9所示,分别对计算块和identity连接执行Stop
梯度操作。
当在identity
连接上执行Stop
梯度时,整个网络的梯度路径将类似于PlainNet
。也就是说,最长的梯度路径与最短的梯度路径长度相同,网络深度也相同。当在计算块上执行Stop
梯度时,最短的梯度路径将直接穿过所有残差连接并直接到达起始层,此时最短梯度路径长度为1。由于每个计算块有两层,因此其最长梯度路径为2。可以使用这两组设置来观察残差学习本身的好处和梯度路径的减少。
使用Microsoft COCO
数据集中的目标检测和实例分割作为基线模型,对YOLOR CSP
进行消融研究,结果如表3所示。实验结果表明,在ResNet
中执行缩短的梯度路径确实是深度网络更好收敛的重要因素。
根据以上分析和在YOLOR-CSP
中使用CSP
融合进行的模型缩放实验,重新规划了VoVNet
的过渡层并进行了实验。首先移除深度VoVNet
的每个OSA
模块的过渡层,只留下每个阶段中最后一个OSA
模块中的过渡层。以与上述相同的方式组织网络的最长梯度路径和通过每个层的最短梯度路径。同时,还将CSPNet
结构应用于上述网络,以进一步观察CSPNet
的多功能性,相关实验结果如表4所示。可以清楚地看到,深度VoVNet
已经从无法收敛变为能够很好地收敛并获得非常好的精度。
简而言之,从上述实验和分析中推断,在规划整个网络的梯度路径时,不仅应该考虑最短的梯度路径,而且应该确保每个层的最短梯度路径都可以有效地训练。至于整个网络的最长梯度路径的长度,它将大于或等于任何层的最长的梯度路径。因此,在实施网络级梯度路径设计策略时,需要考虑网络中所有层的最长最短梯度路径长度,以及整个网络的最长梯度路径。
在PRN实验中将被masked residual layer mask
的通道数设置为原始通道数的一半,实验结果如表5所示。由于PRN
的设计维护了整个网络的所有参数和拓扑结构,所以只有残差连接中的加法操作减少了一半,所以总体计算量几乎没有变化。
然而,YOLOR-PRN
在精度上得到了显著的提高,因为每层都使用了用来更新权重的梯度组合。与YOLOR-v3
相比,PRN
在目标检测上提高了0.5%的AP,也可以观察到高质量和显著的改进。在实例分割上,将AP提高了0.1%,AP75提高了0.3%。
在CSPNet
实验中遵循优化推理速度的原则,将梯度分割比设置为50%-50%,实验结果如表6所示。由于只有一半的通道特征图将进入计算块可以清楚地看到,与YOLOR-v3
相比,YOLOR-CSP
显著减少了22%的计算量。然而,通过丰富的梯度组合,YOLOR-CSP
在目标检测上显著提高了1.5%。与YOLOR-v3
相比,YOLOR
和CSPNet(YOLOR-CSP)
的组合增加了更多高质量的结果。
作者进一步比较了梯度流截断操作来减少重复梯度信息,清楚地看到YOLOR-CSP
策略比CSP fusion first
和CSP fusion last
学习得更好。值得一提的是,无论采用何种融合策略,基于csp
的体系结构的计算负荷都比YOLOR-v3
低得多,精度也远高于YOLOR-v3
。
在ELAN实验中分别测试了计算块在Backbone
和Neck
的叠加时间,结果如表7所示。从这个表中可以清楚地看出,ELAN
在比YOLOR-v3
少35%的计算量下,仍然可以提高0.7%的目标检测性能。
在ELAN
中可以灵活地设置堆栈的数量,从而在精度和计算量之间进行权衡。从表7中列出的实验结果可以看到,在堆栈设置2,1s,YOLOR-ELAN
可以在降低26%计算量的情况下,显著提高目标检测和实例分割的性能分别1.9%和0.6%。
最后,综合比较了Layer-level
设计策略设计的YOLOR-PRN
、Stage-level
设计策略设计的YOLOR-CSP
和Network-level
设计策略设计的YOLOR-ELAN
,以及基线YOLOR-v3
和YOLOv5(r6.2)
,结果如表8所示。
从表中可以看出,基于梯度路径设计策略设计的模型在各个方面都优于基于基线的方法。此外,无论计算量如何。由Network-level
设计策略设计的YOLOR-ELAN
在参数数量和精度方面可以全面获得最突出的性能。
研究结果表明,基于梯度路径分析能够设计出更好的网络架构设计策略。如果与一般的基于数据路径的策略相比,由数据路径策略设计的体系结构通常需要额外的参数或计算成本来获得更好的精度。相比之下,这三种基于梯度路径设计策略的体系结构可以显著提高整体性能。
本文提出了一种具有梯度路径的网络体系结构设计策略。我们提出了三种不同的梯度路径设计策略,这些策略证实了无论从 layer-level
、stage-level
或 network-level
进行设计,都可以有效、全面地改进网络架构,实现良好的学习能力。与基于数据路径的设计策略相比,基于数据路径的设计策略往往需要设计额外的计算单元和复杂的拓扑结构,以获得更好的学习结果。对于梯度路径设计策略,可以完全依赖现有的计算单元,通过简单的梯度路径重新规划,可以减少参数、计算、硬件资源,同时提高推理速度和网络学习效果。本文重新定义了网络的设计策略,并创建了一个有效而简洁的建筑设计规则。