Press "Enter" to skip to content

清华黄高等人新作:动态神经网络首篇综述

作者 | Yizeng Han, Gao Huang

 

本文介绍我们近日于 arxiv上线的一篇论文 《Dynamic Neural Networks: A Survey》。

 

传统的静态网络(如人们熟知的ResNet, DenseNet)在测试阶段对所有的输入样本均采用相同的网络架构与参数。与静态模型不同的是,动态网络可以根据不同样本调节自身的结构/参数,从而在运算效率、表达能力等方面展现出卓越的优势。

 

根据自适应推理的方式,文章将动态网络分为三类:样本自适应,空间自适应以及时间自适应。文章回顾了动态网络中一些重要的研究问题,如结构设计、决策方式、训练策略以及应用,并对领域内的开放性问题与未来研究方向进行了探讨。

 

 

图 1 综述整体框架

 

 

1

内容简介

 

近年来我们不断见证了越来越强大的神经网络模型,如 AlexNet, VGG, GoogleNet , ResNet , DenseNet 以及最近大火的 Transformer 等。

 

然而,大多数流行的深度网络都具有相同的静态推理范式:训练完成后,网络的结构与参数在测试阶段保持不变,这在一定程度上限制了模型的表征能力、推理效率和可解释性。

 

动态网络可以在推理阶段根据输入,自适应地调节自身的结构/参数,从而在以下方面具有静态网络无法享有的良好特性:

 

运算效率。通过选择性地激活不同模块,动态模型可以按需分配计算。

 

表达能力。通过调节网络的结构/参数,动态模型可以拥有更强的表达能力。

 

自适应性。动态网络可以在面对变化环境时实现模型精度 vs 效率的动态平衡。

 

兼容性。动态网络并非“另起炉灶”,而是与深度学习领域其他的先进技术相兼容。

 

通用性。动态网络可以被用于多个任务中,如视觉中的图像分类、目标检测、语义分割等。视觉领域中发展起来的技术可以被拓展至 NLP领域,反之亦然。

 

可解释性。鉴于有研究指出生物大脑处理信息的动态机制,关于动态网络的研究可能会帮助人们在深度模型和大脑的内在运行机制之间架起一座桥梁。

 

事实上,动态网络的核心思想——自适应推理,在深度网络流行之前已有一定研究。最典型的做法是构建多个模型的动态集成,并根据输入自适应地激活这些模型。在深度学习中,尽管各种各样的动态网络已经被设计并取得一定成功,该领域仍然缺少一个系统而全面的综述。

 

 

论文地址:https://arxiv.org/abs/2102.04906v2

 

我们希望通过《Dynamic Neural Networks: A Survey》这篇综述可以:

 

为感兴趣的研究人员提供领域概述和新的视角;

 

指出不同子领域之间的关系,减少重复造轮子的风险;

 

总结主要挑战和未来可能的研究方向。

 

 

2

样本自适应动态网络

 

样本自适应动态网络根据每个不同的输入样本,自适应地调节其结构或参数。前者主要为了在尽可能不影响精度的情况下提升运算效率,而后者致力于在增加尽可能少计算的情况下提升模型的表达能力。

 

2.1 动态结构

 

动态网络结构通常可以从三个方面实现:动态深度、动态宽度和超网络 (SuperNet) 中的动态路由。

 

2.1.1 动态深度

 

由于深度网络通常由多个网络层堆叠而成,一个比较自然的想法是针对不同样本,选择性地执行不同网络层。

 

1. “早退”机制:设置多出口,并在各出口处自适应地决定样本是否提前输出。具体实现包括将多个模型级联、在主干网络中间层添加分类器等(图 2)。

 

 

图 2 “早退”机制

 

值得一提的是,多尺度密集连接网络 (MSDNet, 图 3 (a)) 采用多尺度架构以及密集连接,有效提升了多个分类器的协同训练效果。

 

 

图 3 多尺度动态网络结构

 

2. “跳层”机制:对每个输入样本自适应地决定网络的每个中间层是否执行。文中总结了三种实现,如图 4 所示。

 

 

图 4 动态跳层

 

2.1.2 动态宽度

 

早期工作曾经研究线性层中神经元的动态激活。文中着重讨论了另外两种更常见的方法:多专家混合系统 (MoE)以及 CNN中的动态通道剪枝。

 

1. MoE:通过并行结构建立多个子网络,并对这些子网络的输出结果进行动态加权。早期工作对这些结果进行软加权(图 5 (a))来提升模型的表征能力。近期研究选择性地激活不同子网络,实现模型效率的提升(图 5 (b))。MoE 结构已经被实现于多种类型的网络中,包括 CNN ,LSTM 和 Transformer。

 

 

图 5 MoE结构 (a, b) 和树状结构 (c)

 

2. CNN中的动态通道剪枝:根据样本自适应的激活不同的卷积通道,实现CNN的动态宽度。具体形式包括通道维度的多阶段结构,以及基于门函数或激活值的动态剪枝。另外,已有工作利用门函数同时控制网络的深度和宽度:先决定某个网络层是否执行,若执行,则进一步挑选该层的不同通道。

 

2.1.3   动态路由

 

区别于之前工作中基于经典架构进行网络模块的选择性执行,另一类工作建立更加通用的超网络 (SuperNet),并在超网络内部对样本进行动态路由。文章中讨论了几种常见超网络的结构:多分枝结构,树状结构(如图5 (c))以及其他(如图 3 (d))。

 

2.2 动态参数

 

与动态结构不同,另一种动态网络不改变网络的计算图,而是根据输入样本自适应地调节模型参数,提升其表达能力(如图 6 所示)。

 

 

图 6 动态参数

 

2.2.1  参数的动态调节

 

1. 动态加权。一个典型的做法是将多组卷积核进行加权求和后执行卷积运算:

 

 

2. 卷积核形状的自适应调节。代表性工作的数学形式如下表所示。

 

 

2.2.2 参数预测

 

另外一些工作根据输入直接生成网络权重。早期的代表性方法有分别针对CNN和RNN的 dynamic filter network以及 HyperNetwork. 近期的 WeightNet统一了CondConv 和SENet的自适应范式,以参数预测的方式实现更好的性能与效率平衡。

 

2.2.3  动态特征

 

动态参数方法的主要效果是生成更加动态和多样的特征。一个等效的方案是利用注意力机制,直接对特征的不同通道/空间位置进行自适应加权(图 6 (c))。

 

另外,近期的一些工作通过设计动态激活函数,也能够大幅提高模型的表达能力。

 

 

3

样本自适应动态网络

 

自适应推理也可以从图像的空间维度进行。

 

3.1  像素级

 

像素级动态网络对输入特征图的不同像素位置进行自适应计算,可以分为动态结构和动态参数两种类型。对于动态结构,最典型的做法如图 7 所示,即生成一个空间掩码,进而对选中的像素进行稀疏卷积运算。

 

 

图 7 对选中像素的稀疏卷积

 

3.2  区域级

 

区域级动态网络从原输入中选择一块整体区域进行自适应计算(图 8)。代表性的工作是近期发表的 glance-and-focus network (GFNet): 将图像识别建模为序列决策问题,迭代地截取图像块作为输入进行分类。通过在这样的序列决策中实现“早退”,该工作从空间、时间两个维度实现了自适应推理。

 

 

图 8 区域级动态网络

 

3.3  分辨率级

 

采样/裁剪操作往往会影响模型的实际运行效率。分辨率级动态网络对不同图像采用自适应分辨率,从而减少高分辨率表征带来的冗余计算。代表工作是分辨率自适应网络 (resolution adaptive network, RANet) (图 3 (c)):用不同子网络基于不同分辨率的特征进行分类,并根据分类置信度选择性执行高分辨率子网络。

 

4

 

 

时间自适应动态网络

 

时间自适应动态网络被设计用来对时序数据(如文本、视频等)不同时间位置的数据进行自适应计算。由于基本思想类似,以下主要介绍文章中的4.1节。

 

4.1   基于 RNN 的动态文本处理

 

考虑到不同时刻的输入重要性不同,动态 RNN 被设计以自适应地决定对每一时刻的输入是否分配计算,或者采用何等复杂度的计算。

 

 

图 9 时间自适应动态网络

 

4.1.1   隐状态的动态更新

 

1. 跳过更新:忽略不重要的输入,将上一时刻的状态复制至下一时刻(图 10 (a))。

 

2. 粗略更新:如调用不同宽度的子网络来更新隐状态的部分维度(图 10 (b))。

 

3. 在多尺度架构中,高层次的RNN根据低层输出选择性更新其状态(图 10 (c))。

 

4.1.2 “早退”机制

 

在很多场景中,只根据时序数据的开头就可以解决所需的任务。一类动态RNN在每一时刻判断当前隐状态是否足以解决任务。如是,则终止推理。

 

4.1.3  “跳跃”机制

 

动态网络也可以在每一时刻跳过一定数量的输入,决定从数据的何位置读取输入(如图 10 (d)所示)。

 

5

 

 

推理与演练

 

动态网络的核心要素是在推理阶段进行基于数据的决策过程(调节其结构/参数,或决定对样本中哪些时/空位置进行运算)。这样的决策过程也带来了更多训练上的挑战。综述重点总结了动态网络中的离散决策及其优化方法。

 

5.1   决策

 

1. 基于置信度的“早退”准则:常用于分类网络中;

 

2. 独立于主干网络的策略网络:常用于动态结构方法中;

 

3. 门函数:在主干网络任意位置采用即插即用的轻量级模块进行离散决策。

 

5.2 训练

 

5.2.1 训练目标

 

1. 对于多出口网络:将各个出口的损失函数加权相加。链式结构中,这样的方法往往导致出口之间相互干扰。MSDNet通过特别的结构设计来解决这一问题。后续工作提出梯度平衡算法来稳定训练过程,并利用双向信息传递来改善多个分类器的协同训练。

 

2. 对于具有动态结构或者进行空间/时间位置采样的模型:为减少冗余计算,通常需要添加正则项以鼓励稀疏度。整体的训练目标可以写为 

 

3. 针对特定任务引入额外的损失函数项。

 

5 .2.2 不可导函数的优化

 

1. 梯度估计: 使用straight-through estimation (STE)来估计离散门函数的梯度。

 

2. 重参数化 : 以 Gumbel SoftMax为代表, 同样常用于离散门函数的训练。

 

3. 强化学习 :回报函数中往往包含对于计算开销的惩罚项。

 

6

 

 

动态网络的应用

 

文章根据输入模态总结了动态网络的典型应用和对应的自适应推理类型,如下表所示。

 

 

另外,动态网络还被用来解决一些深度学习中的基础问题,如多出口网络用于具有长尾分布的图像分类,动态路由思想用于减少多任务设定下的训练开销等。

 

7

 

 

讨论

 

最后,文章对领域内的开放性问题和未来研究方向进行了讨论。

 

1.动态网络理论 。 包括具有理论保障的最优决策,以及训练和测试数据分布偏差下的模型泛化性能等。

 

2.动态网络的结构设计 。 目前多数方法基于经典的静态模型,选择性执行其中的不同单元。针对于自适应计算的动态网络结构设计可能可以进一步提升其性能和运算效率。

 

3.更多任务下的适用性 。 目前多数动态网络仍只能处理分类任务。一个有挑战性的课题是,设计一个统一而简洁优雅的动态网络,使其可以直接作为其他任务的主干网络。

 

4.实际效率与理论的差距 。 现有深度学习计算硬件和软件库大多针对静态网络开发,导致动态模型的实际加速可能落后于理论效果。设计硬件友好的动态网络,是一个有价值和挑战性的课题。另一个有趣的方向则是优化计算硬件/软件平台以更好的收获动态网络带来的效率提升。

 

5.动态网络的鲁棒性也是一个有趣而尚未被充分研究的课题。 近期工作显示,多出口动态模型在面向对抗攻击时具有更好的鲁棒性。另外,对于动态网络,可以同时针对其准确率和效率进行对抗攻击。

 

6.可解释性。 动态网络的特别之处在于,其空间/时间上的自适应性,与人类的视觉系统相符合。另外,对于一个给定样本,可以很方便的分析动态网络做出预测需要激活哪些部分。我们期望这些性质可以启发新的深度学习可解释性方面的工作。

 

作者介绍:

 

 

(黄高,清华大学自动化系助理教授,博士生导师,DenseNet提出者)

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注