调研280+篇文献!CVPR最佳论文得主清华黄高团队提出首篇动态网络综述,全面回顾动态网络的发展!

调研280+篇文献!CVPR最佳论文得主清华黄高团队提出首篇动态网络综述,全面回顾动态网络的发展!

Dynamic Neural Networks: A Survey

【写在前面】

动态神经网络是深度学习领域的一个新兴研究课题。与在推理阶段具有固定计算图和参数的静态模型相比,动态网络可以使其结构或参数适应不同的输入,在准确性、计算效率和适应性等方面具有显著优势。在本次调查中,作者将动态网络分为三大类,全面回顾了这一快速发展的领域:1)样本动态模型,用数据相关的架构或参数处理每个样本;2) 针对图像数据的不同空间位置进行自适应计算的空间智能动态网络;3)时序动态模型,对视频和文本等序列数据沿时间维度进行自适应推理。系统地回顾了动态网络的重要研究问题,如结构设计、决策方案、优化技术和应用。最后,作者讨论了该领域的开放性问题以及有趣的未来研究方向。

1. Introduction

深度神经网络(DNN)在包括计算机视觉(CV)和自然语言处理(NLP)在内的各个领域发挥着重要作用。近年来见证了许多成功的深度模型,如AlexNet、VGG、GoogleNet、ResNet、DenseNet和Transformer。这些架构创新使训练更深入、更准确、更有效的模型成为可能。最近对神经架构搜索(NAS)的研究进一步加快了设计更强大结构的过程。然而,大多数流行的深度学习模型以静态方式进行推理,即计算图和网络参数在训练后都是固定的,这可能会限制其表示能力、效率和可解释性。

与静态网络相反,动态网络可以在推理过程中使其结构或参数适应输入,因此享有静态模型中不存在的有利特性。一般来说,深度学习背景下的动态计算具有以下优点:

1) 效率。动态网络最显著的优点之一是,通过选择性激活模型组件(例如层、通道或子网络),它们能够在测试时根据需要分配计算。因此,在相对容易识别的标准样本上或在输入的信息较少的空间/时间位置上花费的计算更少。除了计算效率外,动态模型还显示了在few-shot学习场景中提高数据效率的有希望的结果。

2) 表示能力。由于依赖于数据的网络体系结构/参数,动态网络具有显著扩大的参数空间和改进的表示能力。例如,在计算量略有增加的情况下,可以通过在卷积核集合上应用特征条件注意权重来提高模型容量。值得注意的是,流行的软注意机制也可以在动态网络的框架中作为不同的渠道加以统一,特征的空间区域或时间位置在测试时动态重新加权。

3)** 适应性**。动态模型能够在精度和效率之间实现理想的权衡,以处理不同的计算预算。因此,与计算成本固定的静态模型相比,动态模型更适合不同的硬件平台和变化的环境。

4) 兼容性。动态网络与深度学习中最先进的技术兼容,包括架构设计、优化算法和数据预处理,确保他们能够受益于该领域的最新进展,实现最先进的性能。例如,动态网络可以继承轻量级模型中的架构创新,或者通过NAS方法进行设计。通过为静态模型开发的加速方法,如网络剪枝、权重量化、知识提取和低秩近似,也可以进一步提高其效率。

5) 泛化性。作为静态深度学习技术的替代品,许多动态模型是可以无缝应用于广泛应用的通用方法,例如图像分类、目标检测和语义分割。此外,CV任务中开发的技术被证明可以很好地转换为自然语言处理任务中的语言模型,反之亦然。

6) 可解释性。最后,作者注意到,对动态网络的研究可能会弥合深度模型和大脑的潜在机制之间的差距,因为人们认为大脑以动态方式处理信息。在处理输入样本时,可以分析动态模型的哪些组件被激活,并观察输入的哪些部分被激活对于准确预测是有意的。这些性质可能有助于解释DNN的决策过程。

实际上,在现代dnn流行之前,已经研究了自适应推理 (动态网络的关键思想)。最经典的方法是通过级联或并行结构构建模型集成,并根据输入选择性地激活模型。Spiking neural networks (snn) 也通过传播脉冲信号来执行数据相关推理。但是,snn的训练策略与流行的卷积神经网络 (cnn) 的训练策略大不相同,并且在视觉任务中使用较少。因此,作者在本次研究中忽略了与snn相关的工作。

在深度学习的背景下,具有现代深度架构的动态推理提出了许多新的研究问题,引起了人们的极大研究兴趣。尽管在设计各种类型的动态网络方面做了大量的工作,但仍然缺乏对这一主题的系统和全面的综述。这促使作者撰写这份调查,回顾这一快速发展领域的最新进展,目的是1)为对这一主题感兴趣的研究人员提供概述和新的视角;2) 指出不同分区之间的密切关系,降低重新发明车轮的风险;3)总结关键挑战和未来可能的研究方向。本文的overview如上图所示。

2. Sample-wise Dynamic Network

为了以数据相关的方式处理不同的输入,样本动态网络通常从两个角度进行设计:1)调整模型架构,根据每个样本分配适当的计算,从而减少冗余计算以提高效率(第2.1节);2) 使用固定的计算图将网络参数调整到每个输入样本,以提高表示能力,同时将计算成本的增加降到最低(第2.2节)。

2.1动态架构

2.1.1动态深度

随着现代DNN识别更多“难”样本的深度越来越深,减少冗余计算的一个简单解决方案是执行动态深度推理,这可以通过1) 提前退出,即允许在浅出口处输出“简单”样本,而不执行较深层;或2)层跳过,即选择性跳过以每个样本为条件的中间层。

1) 提前退出。在大多数真实场景中,输入样本的复杂性(或“困难”)各不相同,浅层网络能够正确识别许多规范输入。理想情况下,这些样本应该在某些早期出口处输出,而不执行更深层。

对于输入样本x,L层深度网络F的正向传播可以表示为

y = F L ∘ F L − 1 ∘ ⋯ ∘ F 1 ( x ) \mathbf{y}=\mathcal{F}^{L} \circ \mathcal{F}^{L-1} \circ \cdots \circ \mathcal{F}^{1}(\mathbf{x}) y=FLFL1F1(x)

其中 F ℓ \mathcal{F}^{\ell} F表示第 ℓ \ell 层的操作。相反,提前退出允许在中间层终止推理过程。对于第i个输入样本 x i \mathbf{x}_{i} xi,前向传播可以写成:

y i = F ℓ i ∘ F ℓ i − 1 ∘ ⋯ ∘ F 1 ( x i ) , 1 ≤ ℓ i ≤ L \mathbf{y}_{i}=\mathcal{F}^{\ell_{i}} \circ \mathcal{F}^{\ell_{i}-1} \circ \cdots \circ \mathcal{F}^{1}\left(\mathbf{x}_{i}\right), 1 \leq \ell_{i} \leq L yi=FiFi1F1(xi),1iL

i是基于 x i \mathbf{x}_{i} xi自适应确定的。已经研究了广泛的体系结构,以赋予DNN这种早期退出行为,如下所述。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VArOWFtE-1662607262114)(image/image_JSMp1Z1bLG.png)]

a) DNN级联。实现提前退出的最直观方法是级联多个模型(见上图(a)),并在不激活后一个网络的情况下自适应检索早期网络的预测。例如,大/小网络级联了两个深度不同的CNN。在获得第一个模型的SoftMax输出后,当两个最大元素之间的分数差超过阈值时,进行提前退出。

b) 中间分类。上述级联结构中的模型是相互独立的。因此,一旦决定将“困难”样本馈送到后一个网络,就需要从头开始执行整个推理过程,而不必重用已学习的特征。更紧凑的设计涉及一个主干网络内的中间分类器(见上图(b)),以便在需要时可以将早期特征传播到深层。

c)具有早期出口的多尺度结构。研究人员已经观察到,在链式结构网络中,多个分类器可能相互干扰,从而降低整体性能。合理的解释可能是,在常规CNN中,高分辨率特征缺乏对分类至关重要的粗略信息,导致早期退出的结果不令人满意。此外,早期分类器将迫使浅层生成任务专用特征,而部分常规信息丢失,导致深度出口性能下降。为了解决这个问题,多尺度密集网络(MSDNet)采用了1)多尺度体系结构,由多个子网络组成,用于处理具有不同分辨率(比例)的特征图,以快速生成适合分类的粗略特征;2) 密集连接,以重用早期特征并提高深度分类器的性能(见上图(a))。基于多尺度架构设计,研究人员还研究了早期退出动态模型的退出策略(见图3(b))和训练方案。以前的方法通常实现网络深度的自适应。从利用特征中的空间冗余的角度来看,分辨率自适应网络(RANet,见上图(c))首先处理具有低分辨率特征的每个样本,而高分辨率表示根据早期预测有条件地使用。

2) 跳过层。上述早期退出范式的总体思路是跳过在特定分类后执行所有深层。更灵活的是,网络深度也可以通过策略性地跳过中间层的计算而在不放置额外分类器的情况下进行调整。给定第i个输入样本 x i \mathbf{x}_{i} xi,动态层跳过通常可以写成:

y i = ( 1 L ∘ F L ) ∘ ( 1 L − 1 ∘ F L − 1 ) ∘ ⋯ ∘ ( 1 1 ∘ F 1 ) ( x i ) \mathbf{y}_{i}=\left(\mathbb{1}^{L} \circ \mathcal{F}^{L}\right) \circ\left(\mathbb{1}^{L-1} \circ \mathcal{F}^{L-1}\right) \circ \cdots \circ\left(\mathbb{1}^{1} \circ \mathcal{F}^{1}\right)\left(\mathbf{x}_{i}\right) yi=(1LFL)(1L1FL1)(11F1)(xi)

其中 1 ℓ \mathbb{1}^{\ell} 1表示确定层 F ℓ \mathcal{F}^{\ell} F的执行的指示符函数, 1 ≤ ℓ ≤ L 1 \leq \ell \leq L 1L。 该方案通常在具有跳过连接的结构上实现(例如ResNet)来保证前向传播的连续性,这里作者总结了三种常见的方法。

a)暂停分数,其中名为暂停分数的累积标量自适应地决定RNN的隐藏状态是否将直接反馈到下一时间步。通过在RNN步骤中将ResNet阶段中的残差块视为线性层,将暂停方案扩展到视觉任务(见上图(a) )。每个ResNet阶段中的多个块可以由一个权重共享块代替,而不是跳过具有独立参数的层的执行,从而显著减少参数。在每个阶段中,根据暂停分数执行自适应步数的块。

b) 由于其即插即用特性,gating函数也是动态层跳过的常用选项。以ResNet为例(见上图(b)),让 x ℓ \mathbf{x}^{\ell} x表示第 ℓ \ell 个残差块的输入特征,gating函数 G ℓ \mathcal{G}^{\ell} G生成一个二进制值以决定残差块 F ℓ \mathcal{F}^{\ell} F的执行。这个过程可以用下式表示:

x ℓ + 1 = G ℓ ( x ℓ ) F ℓ ( x ℓ ) + x ℓ , G ℓ ( x ℓ ) ∈ { 0 , 1 } \mathbf{x}^{\ell+1}=\mathcal{G}^{\ell}\left(\mathbf{x}^{\ell}\right) \mathcal{F}^{\ell}\left(\mathbf{x}^{\ell}\right)+\mathbf{x}^{\ell}, \mathcal{G}^{\ell}\left(\mathbf{x}^{\ell}\right) \in\{0,1\} x+1=G(x)F(x)+x,G(x){0,1}

c) 可以构建策略网络以接收输入样本,并直接为主干网络中的所有层生成跳过决策,如上图(c)所示。

2.1.2动态宽度

除了动态网络深度外,条件计算的一种细粒度形式是使用动态宽度进行推理:尽管每一层都是执行的,但其多个单元(例如神经元、通道或分支)是根据输入选择性激活的。

1) 跳过全连接(FC)层中的神经元。FC层的计算成本由其输入和输出维度决定。通常认为,不同的神经元单元负责表示不同的特征,因此并非每个样本都需要激活所有神经元单元。早期研究学习通过辅助分支或其他技术(如低秩近似)自适应控制神经元激活。

2) 在混合专家(MoE)中跳过分支。提高模型容量的另一种方法是MoE结构,这意味着多个网络分支作为专家并行构建。可以有选择地执行这些专家,并将其输出与数据相关权重融合。(如上图(a)和(b)所示)

3)跳过CNN中的通道。CNN通常具有相当大的信道冗余。基于同一特征通道对不同样本的重要性可能不同的想法,可以通过动态激活卷积信道来实现CNN的自适应宽度。与静态剪枝方法相比,这种依赖数据的剪枝方法永久删除了“不重要”的过滤器,在不降低模型容量的情况下提高了推理效率。

2.1.3动态路由

另一个方向是开发具有各种可能推理路径的不同形式的超网,并在超网内执行动态路由,以使计算图适应每个样本。

为了实现动态路由,通常存在负责将特征分配到不同路径的路由节点。对于层 ℓ \ell 处的节点s,设 α s → j ℓ \alpha_{s \rightarrow j}^{\ell} αsj表示将到达的特征 X s ℓ \mathbf{X}_{s}^{\ell} Xs分配给第 ℓ + 1 \ell+1 +1层节点j的概率,只有当 α s → j ℓ > 0 \alpha_{s \rightarrow j}^{\ell}>0 αsj>0时,节点 j j j才会激活。到达节点j的结果特征表示为:

x j ℓ + 1 = ∑ s ∈ { s : α s → j ℓ > 0 } α s → j ℓ F s → j ℓ ( x s ℓ ) \mathbf{x}_{j}^{\ell+1}=\sum_{s \in\left\{s: \alpha_{s \rightarrow j}^{\ell}>0\right\}} \alpha_{s \rightarrow j}^{\ell} \mathcal{F}_{s \rightarrow j}^{\ell}\left(\mathbf{x}_{s}^{\ell}\right) xj+1=s{s:αsj>0}αsjFsj(xs)

概率 α s → j ℓ \alpha_{s \rightarrow j}^{\ell} αsj可以通过不同的方式获得。基于决策树的动态路由如上图(c)所示。

2.2动态参数

虽然在具有动态架构的网络可以根据每个样本调整其推理图,它们通常有特殊的架构设计,需要特定的训练策略或仔细的超参数调整。

另一项工作是使网络参数适应不同的输入,同时保持结构固定,这在提高网络表示能力方面是有效的,只需稍微增加计算成本。给定输入样本x,具有静态参数的传统网络(模块)的输出可以写成 y = F ( x , Θ ) \mathbf{y}=\mathcal{F}(\mathbf{x}, \boldsymbol{\Theta}) y=F(x,Θ)。相反,具有动态参数的模型的输出可以表示为:

y = F ( x , Θ ^ ∣ x ) = F ( x , W ( x , Θ ) ) \mathbf{y}=\mathcal{F}(\mathbf{x}, \hat{\boldsymbol{\Theta}} \mid \mathbf{x})=\mathcal{F}(\mathbf{x}, \mathcal{W}(\mathbf{x}, \boldsymbol{\Theta})) y=F(x,Θ^x)=F(x,W(x,Θ))

其中, W ( ⋅ , Θ ) \mathcal{W}(\cdot, \mathbf{\Theta}) W(,Θ)是产生输入相关参数的操作,其设计已被广泛探讨。

2.2.1参数调整

参数自适应的典型方法是根据推理期间的输入调整权重,如上图(a)所示。这种实现通常需要很少的计算来获得调整,例如注意力权重或采样偏移量。

1)Attention on weights。为了在不显著增加计算量的情况下提高表示能力,可以对多个卷积核执行soft注意力,从而产生参数的自适应集合。 假设有N个核 W n , n = 1 , 2 , ⋯   , N \mathbf{W}_{n}, n=1,2, \cdots, N Wn,n=1,2,,N,这样的动态卷积可以公式化为:

y = x ⋆ W ~ = x ⋆ ( ∑ n = 1 N α n W n ) \mathbf{y}=\mathbf{x} \star \tilde{\mathbf{W}}=\mathbf{x} \star\left(\sum_{n=1}^{N} \alpha_{n} \mathbf{W}_{n}\right) y=xW~=x(n=1NαnWn)

2)Kernel shape adaptation。除了自适应地缩放权重值外,还可以实现参数调整以reshape卷积核并实现动态感受野。基于这个方向,当对每个像素执行卷积时,可变形卷积从自适应位置采样特征像素。下表展示了不同动态采样像素点的方法。

2.2.2权重预测

权重预测比较直接:它在测试时使用独立模型直接生成(一个子集)输入自适应参数(见上图(b)),其中权重预测模型和主干模型都是前馈网络。

1) General architectures。动态滤波网络(DFN)和超网络分别是实现CNN和RNN运行时权重预测的两种经典方法。比如,DFN中构建了一个滤波器生成网络,以生成卷积层的滤波器。对于处理顺序数据(例如句子),主RNN的权重矩阵根据输入在每个时间步长上预测一个较小的矩阵。WeightNet通过简单分组的FC层预测卷积权重,在精度-FLOPs和精度参数权衡方面取得了竞争结果。

2)Task-specific information也能用于预测模型参数,使动态网络能够生成任务感知特征嵌入。例如,利用边缘属性来生成用于图卷积的滤波器,结合摄像机透视来生成用于图像卷积的权重。这种任务感知权重预测已被证明在提高许多任务的数据效率方面是有效的,包括视觉问答和fewshot学习。

2.2.3动态特征

调整或预测模型参数的主要目标是产生更动态的特征,从而提高深度网络的表示能力。一种更直接的解决方案是使用依赖输入的软注意力重新缩放特征(见上图(c)),这需要对计算图进行少量修改。注意,对于线性变换 F \mathcal{F} F,在输出上应用注意力 α \alpha α相当于使用重新加权的参数执行计算,即:

F ( x , Θ ) ⊗ α = F ( x , Θ ⊗ α ) \mathcal{F}(\mathbf{x}, \boldsymbol{\Theta}) \otimes \boldsymbol{\alpha}=\mathcal{F}(\mathbf{x}, \boldsymbol{\Theta} \otimes \boldsymbol{\alpha}) F(x,Θ)α=F(x,Θα)

1) 通道注意力是最常见的软注意机制之一。现有工作通常遵循squeeze-and-excitation网络(SENet)中的形式:

y ~ = y ⊗ α = y ⊗ A ( y ) , α ∈ [ 0 , 1 ] C \tilde{\mathbf{y}}=\mathbf{y} \otimes \boldsymbol{\alpha}=\mathbf{y} \otimes \mathcal{A}(\mathbf{y}), \boldsymbol{\alpha} \in[0,1]^{C} y~=yα=yA(y),α[0,1]C

y = x ⋆ W \mathbf{y}=\mathbf{x} \star \mathbf{W} y=xW是具有C个通道的卷积层的输出特征, A ( ⋅ ) \mathcal{A}(\cdot) A()是由池和线性层组成的轻量级函数,用于生成α。考虑到卷积,该过程也可以写成 y ~ = ( x ⋆ W ) ⊗ α = x ⋆ ( W ⊗ α ) \tilde{\mathbf{y}}=(\mathbf{x} \star \mathbf{W}) \otimes \boldsymbol{\alpha}=\mathbf{x} \star(\mathbf{W} \otimes \boldsymbol{\alpha}) y~=(xW)α=x(Wα),从中可以观察到,将注意力应用于特征相当于使用动态权重执行卷积。

2) 空间注意力。特征中的空间位置也可以动态重新缩放,以提高深度模型的表示能力。与在通道注意力中使用池操作有效收集全局信息不同,在空间注意中通常采用卷积来编码局部信息。此外,这两种类型的注意力模块可以集成在一个框架中,如上图(c)所示。

3)动态激活函数。上述生成动态特征的方法通常在静态激活函数之前应用软注意力。最近的一项工作试图增加具有动态激活函数的模型的表示能力。例如,DY ReLU用N个线性变换中的最大值 y c = max ⁡ n { a c n x c + b c n } \mathbf{y}_{c}= \max _{n}\left\{a_{c}^{n} \mathbf{x}_{c}+b_{c}^{n}\right\} yc=maxn{acnxc+bcn}替换ReLU( y c = max ⁡ ( x c , 0 ) \mathbf{y}_{c}=\max \left(\mathbf{x}_{c}, 0\right) yc=max(xc,0)),其中c是通道索引, a c n , b c n a_{c}^{n}, b_{c}^{n} acn,bcn是从x计算的线性系数。在许多视觉任务中,这些动态激活函数可以有效地提高不同网络架构的性能,而计算开销可以忽略不计。

3. Spatial-wise Dynamic Network

在视觉学习中,发现并非所有位置对CNN的最终预测都有同等的贡献,这表明空间动态计算在减少计算冗余方面具有很大潜力。换句话说,进行正确的预测可能只需要处理一小部分像素或具有自适应计算量的区域。此外,根据低分辨率表示足以为大多数输入产生良好性能的观察结果,以相同分辨率接收所有输入的静态CNN也可能导致相当大的冗余。

3.1像素级动态网络

3.1.1像素级动态架构

基于前景像素比背景像素更具信息量和计算要求的普遍信念,一些动态网络学习为每个像素调整其结构。现有文献通常通过1)动态稀疏卷积来实现这一点,该卷积仅对采样像素子集执行卷积;2) 附加约束,在某些空间位置上战略性地分配额外计算(例如层或通道)。

1) 动态稀疏卷积。为了减少信息量较小位置上的不必要计算,只能对策略采样的像素执行卷积。现有的采样策略包括1)利用输入的固有稀疏性;2) 预测零元素在输出上的位置;和3)估计像素的显著性。典型的方法是使用额外的分支生成空间掩码,确定每个像素上卷积的执行(如上图所示)。

2) 动态附加约束。与仅对某些像素进行采样以执行卷积不同,另一项工作首先在整个特征图上进行相对廉价的计算,并自适应地激活选定像素上的额外模块以进一步增强。这些方法在像素级根据深度或宽度调整其网络架构,实现空间自适应计算分配。研究表明,通过利用图像数据中的空间冗余,像素级的动态计算大大提高了模型效率。

3.1.2像素级动态参数

与完全跳过像素子集上的卷积运算不同,动态网络还可以在不同像素上应用数据相关参数,以提高表示能力或自适应感受野。

1) 动态权重。与样本动态参数方法类似,像素级动态权重通过测试时间调整]和预测实现或动态特征。以权重预测为例,典型方法生成 H × W × k 2 H \times W \times k^{2} H×W×k2个核映射以产生空间动态权重。考虑到属于同一对象的像素可能共享相同的权重,动态区域感知卷积(DRConv)为输入图像生成分割掩码,将其划分为m个区域,其中每个区域的权重生成网络负责生成与数据相关的核。

2) 动态感受野。传统卷积运算通常具有固定的核形状和大小(例如常用的3×3 2D卷积)。由此产生的跨所有层的均匀感受野在识别不同形状和大小的物体方面可能存在局限性。为了解决这个问题,一些工作学习为不同的特征像素调整感受野。

3.2区域级动态网络

3.2.1动态转换

可以对图像执行动态变换,以消除某些变化以获得更好的泛化能力,或放大显著区域以获得区分性特征表示。例如,空间Transformer采用定位网络来生成变换参数,然后应用参数化变换从相应的变化中恢复输入。此外,在模型性能对一小部分区域敏感的某些任务上,学习变换以自适应地放大显著区域。

3.2.2对选定patch的hard attention

受信息特征可能仅包含在图像的某些区域这一事实的启发,研究者们探索了具有hard空间注意力的动态网络,从输入中有策略地选择patch,以提高效率。

3.3分辨率级动态网络

上述研究通常将特征图划分为不同的区域(像素级或区域级),用于自适应推理。在粗粒度上,一些动态网络可以通过处理具有自适应分辨率的特征表示来将每个图像视为一个整体。虽然已经观察到,低分辨率可能足以识别大多数“简单”样本,但传统的CNN大多以相同分辨率处理所有输入,导致大量冗余。因此,分辨率级动态网络从特征分辨率而不是不同位置的显著性的角度利用空间冗余。现有方法主要包括1)用自适应比率缩放输入;2) 在多尺度架构中选择性激活具有不同分辨率的子网络。

3.3.1自适应比例

动态分辨率可以通过使用自适应比率缩放特征来实现。例如,首先执行一个小子网络来预测人脸检测任务中人脸的比例分布,然后自适应缩放输入图像,使所有人脸都处于合适的识别范围。

3.3.2多尺度体系结构中的动态分辨率

实现动态分辨率的另一种方法是以并行或级联的方式构建多个子网络。这些具有不同特征分辨率的子网络在基于测试时的输入被选择性激活。

4. Temporal-wise Dynamic Network

除了空间维度外,还可以沿序列数据的时间维度执行自适应计算,例如文本和视频。一般来说,可以通过在不重要的时间位置动态分配较少/无计算的输入来提高网络效率。

4.1 RNN-based Dynamic Text Processing

传统的RNN大多遵循静态推理范式,即按顺序读取输入令牌以在每个时间步更新隐藏状态,该状态可以写成:

h t = F ( x t , h t − 1 ) , t = 1 , 2 , ⋯   , T \mathbf{h}_{t}=\mathcal{F}\left(\mathbf{x}_{t}, \mathbf{h}_{t-1}\right), t=1,2, \cdots, T ht=F(xt,ht1),t=1,2,,T

这种静态推理范式会导致大量冗余计算,因为不同的令牌通常对下游任务有不同的贡献。开发了一种动态RNN,用于在每一步分配适当的计算成本。

4.1.1隐藏状态的动态更新

由于并非所有token都是捕获序列中与任务相关的信息所必需的,因此可以构建动态RNN,以在每个时间步长自适应更新其隐藏状态。信息量较小的token将被粗略地略过,即使用更廉价的计算更新状态。

1) Skipping the update。对于某些时间位置的不重要输入,动态模型可以学习完全跳过隐藏状态的更新(见上图(a)),即:

h t = α t F ( x t , h t − 1 ) + ( 1 − α t ) h t − 1 , α t ∈ { 0 , 1 } \mathbf{h}_{t}=\alpha_{t} \mathcal{F}\left(\mathbf{x}_{t}, \mathbf{h}_{t-1}\right)+\left(1-\alpha_{t}\right) \mathbf{h}_{t-1}, \alpha_{t} \in\{0,1\} ht=αtF(xt,ht1)+(1αt)ht1,αt{0,1}

2) Coarse update。由于直接跳过更新可能过于激进,动态模型还可以使用自适应分配的操作更新隐藏状态。具体来说,网络可以在每个步骤中调整其架构,即:

h t = F t ( x t , h t − 1 ) , t = 1 , 2 , ⋯   , T \mathbf{h}_{t}=\mathcal{F}_{t}\left(\mathbf{x}_{t}, \mathbf{h}_{t-1}\right), t=1,2, \cdots, T ht=Ft(xt,ht1),t=1,2,,T

其中, F t \mathcal{F}_{t} Ft基于输入 x t \mathbf{x}_{t} xt确定。一种实现是选择隐藏状态的维度子集进行计算,并从前一步中复制其余部分,如图9(b)所示。

3)Selective updates in hierarchical RNNs。考虑到文本的固有层次结构(例如句子文字特征),研究人员开发了层次RNN,以使用动态更新机制对不同时间尺度的时间依赖性进行编码。在推理过程中,较高级别的RNN基于是低级别RNN的输出,将有选择地更新其状态,(见上图(c))。

4.1.2 RNN中的时间提前退出

尽管如此,动态RNN以能够在每个步骤中使用数据相关的计算成本更新其状态,则仍必须读取所有token,这导致在读取整个序列之前可以获得任务相关结果的场景中效率低下。理想情况下,一旦捕获的信息满足任务求解要求,有效模型应在达到要求后自适应停止读取。例如,推理网络(ReasoNet)在找到足够的证据进行问答时终止其阅读过程。

4.1.3文本跳转

尽管提前退出可以大大减少冗余计算,所有token仍必须逐个馈送到模型。而动态RNN可以通过策略性地跳过一些token而不读取它们,并直接跳到任意时间位置来进一步学习决定“在哪里读取”。

4.2时序动态视频识别

对于视频识别,视频可以被视为帧的顺序输入,时间动态网络被设计用于为不同帧分配自适应计算资源。这通常可以通过两种方法实现:1)动态更新递归模型每个时间步长中的隐藏状态,以及2)对关键帧执行自适应预采样。

4.2.1使用动态RNN的视频识别

视频识别通常通过循环过程进行,其中视频帧首先由2D CNN编码,获得的帧特征按顺序馈送到RNN以更新其隐藏状态。基于RNN的自适应视频识别通常通过1)使用相对廉价的计算处理不重要的帧;2) 提前退出;3)进行动态跳跃以决定“where to see”来实现。

4.2.2动态关键帧采样

另一项工作是首先执行自适应预采样程序,然后通过处理选定的关键帧或片段子集进行预测。

1) 时间注意力是网络关注显著帧的常用技术。对于人脸识别,神经聚类网络使用软注意自适应地聚合帧特征。为了提高推理效率,实现了硬注意力,使用RL迭代删除不重要的帧,以实现高效的视频人脸验证。

2) 采样模块也是动态选择视频中关键帧/片段的常用选项。例如,之前有工作对帧进行均匀采样,并对每个选定帧进行离散决策,以逐步前进或后退。对于片段级采样,SCSample是基于经过训练的分类器设计的,用于查找信息量最大的片段进行预测。此外,动态采样网络(DSN)将每个视频分割成多个部分,利用跨部分共享权重的采样模块从每个部分采样一个片段。

5. 动态网络的未来方向和挑战

5.1 动态网络理论

尽管动态神经网络取得了成功,但从理论角度对其进行分析的研究相对较少。事实上,深入理解当前动态学习模型并从原则上进一步改进这些模型的理论是非常有价值的。值得注意的是,已经证明,具有自适应宽度的动态网络可以保持非稀疏模型的表示能力。然而,还有更多的理论问题是动态网络的基础。在这里,作者列出了其中的几个:

1) 动态网络中的最优决策。大多数动态网络(尤其是那些为提高计算效率而设计的网络)中的一个基本操作是做出与数据相关的决策,例如,确定是否应评估或跳过模块。现有解决方案使用基于置信度的标准,或引入策略网络和gating函数。虽然在实践中有效,但它们可能不是最优的,并且缺乏理论依据。以提前退出为例,当前的启发式方法可能面临overconfidence、阈值设置灵敏度高和可转移性差的问题。对于策略网络或gating函数,可以基于学习的函数做出运行时决策。然而,它们通常会引入额外的计算,并且通常需要很长且不稳定的训练过程。因此,为动态网络中的决策函数设计提供理论保证的原则性方法是一个有价值的研究课题。

2) 泛化问题。在动态模型中,可能会为一组未从数据分布中均匀采样的测试样本激活子网络,例如,较小的子网络倾向于处理“简单”样本,而较大的子网络用于“难”输入。这导致了训练数据分布和推理阶段的数据分布之间的差异,从而违反了经典机器学习中常见的假设。因此,开发新的理论来分析动态网络在这种分布不匹配情况下的泛化特性将是一件有趣的事情。注意,迁移学习也旨在解决测试时的分布转移问题,但假设目标域的样本提前可访问。相反,对于动态模型,在网络架构和参数确定后,直到训练过程完成,测试分布才可用。这比分析迁移学习中的泛化问题带来了更大的挑战。

5.2动态网络的架构设计

架构设计已被证明对深度网络至关重要。现有的架构创新研究主要针对静态模型,而专门针对动态网络开发架构的研究相对较少。预计专门为动态网络开发的架构可能会进一步提高其有效性和效率。例如,早期退出网络中多个分类器之间的干扰可以通过精心设计的具有密集连接的多尺度架构来缓解。

可能的研究方向包括手动设计动态网络结构或利用NAS技术。此外,考虑到Transformer的流行,最近的工作提出了具有自适应早期退出或token稀疏的动态视觉Transformer。 开发这一系列模型的动态版本也可能是一个有趣的方向。

5.3适用于更多样化的任务

许多现有的动态网络(例如,大多数样本自适应网络)是专门为分类任务设计的,不能应用于其他视觉任务,如目标检测和语义分割。困难来自于这样一个事实,即对于这些任务,没有简单的标准来判断输入图像是容易的还是困难的,因为它通常包含具有不同困难程度的多个对象和像素。尽管已经做出了许多努力,例如空间自适应模型和基于软注意力的模型,来解决这个问题,但开发一个统一而优雅的动态网络仍然是一个具有挑战性的问题,它可以作为各种任务的现成主干。

5.4理论和实践效率之间的差距

当前的深度学习硬件和库大多针对静态模型进行了优化,它们可能对动态网络不友好。因此,作者观察到动态模型的实际运行时间落后于理论效率。例如,一些空间自适应网络涉及稀疏计算,由于内存访问瓶颈,稀疏计算在现代计算设备上是不充分的。最近的一项工作重点是在FPGA等更灵活的平台上加速深度模型的算法和硬件的协同设计。许多与输入相关的操作,包括像素级动态计算、自适应通道修剪和早期退出,也与硬件一起定制,以进一步提高其实际效率。同时优化算法、硬件和深度学习库以获得动态网络的理论效率增益是一个有趣的研究方向。

此外,与数据相关的推理过程,尤其是对于动态体系结构,通常需要一个模型来顺序处理输入样本,这也对并行计算提出了挑战。虽然已经为早期存在的网络启用了批处理推理,但对于其他类型的动态架构,自适应计算图和并行计算之间的冲突仍然存在。在移动/边缘计算场景中,这个问题得到缓解,其中输入信号本身是连续的,计算硬件不如高端平台强大。然而,设计与现有硬件和软件更兼容的动态网络仍然是一个有价值且具有挑战性的课题。

5.5对抗攻击的鲁棒性

动态模型为深入神经网络对抗鲁棒性的研究提供了新的视角。例如,最近的工作利用多出口结构来提高对抗攻击的鲁棒性。此外,传统攻击通常旨在造成误分类。对于动态网络,有可能对效率发起攻击。具体而言,通过调整对抗攻击的目标函数,输入自适应模型可能会被愚弄,以激活其所有中间层,或在早期退出时产生令人困惑的预测。作者还观察到,常用的对抗性训练对防御此类攻击无效。动态网络的鲁棒性是一个有趣但尚未研究的话题。

5.6可解释性

动态网络继承了深度学习模型的黑匣子性质,因此也需要研究解释其工作机制。这里的特殊之处在于,自适应推理范式,例如空间/时间自适应,与人类视觉系统的范式很好地一致,并可能为使模型对人类更透明提供新的可能性。在动态网络中,通常可以方便地分析模型的哪些部分对于给定输入被激活,或者定位模型在进行预测时主要依赖于输入的哪些部分。预计对动态网络的研究将激发人们对深度学习可解释性的新研究。

6. 总结

动态网络是一个非常general的思想,能够应用于各个不同的下游任务中。对于图像识别,大多数动态神经网络设计用于对分类任务进行样本或空间自适应推理,或者采用早期退出等策略提前推出网络来节省计算量。对于文本数据,时间动态RNN的推理范式能够让不同的文本在保证性能的同时提高计算效率。对于视频任务,相比于3D CNN,动态网络能够对不同的视频帧采用动态推理。在多模态任务中,基于注意力机制的动态网络能够有效的融合不同模态的特征。然而,尽管动态网络目前已经取得了非常好的发展,但是目前还很少有厂商为动态网络设计专门的计算硬件,因此目前很多动态网络的高效计算还只能停留在论文层面中,难以落地。随着科研界中动态网络的兴起,相应如何将动态网络高效部署到现有硬件或开发适用于动态网络的硬件来提升网络计算效率,将会是今后一个重要的研究热点。

【项目推荐】

面向小白的顶会论文核心代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向小白的YOLO目标检测库:https://github.com/iscyy/yoloair

面向小白的顶刊顶会的论文解析:https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值