【综述】一文概览动态神经网络

共 6626字,需浏览 14分钟

 ·

2021-05-25 10:47

↑ 点击蓝字 关注极市平台

作者丨Happy
来源丨AIWalker
编辑丨极市平台

极市导读

 

本文对动态网络的几个重要组成部分(比如结构设计、决策机制、优化技术以及应用)进行了系统性研究,最后对该领域的开问题以及未来研究方向进行了讨论。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

大家好,我是Happy。在过去了几年里,动态神经网络非常热,热到每周都能看到几篇不错的动态神经网络论文上传到arxiv。那么什么是动态神经网络呢?它有有哪些类型呢?它的研究现状如何呢?接下来,就由Happy带领大家简单回顾一下咯。

Abstract

Abstract 动态神经网络已成为深度学习新型研究课题。相比静态模型(固定计算图、固定参数),动态网络可以按照不同输入自适应调整自身结构或者参数量,导致了精度、计算效率、自适应等方面的显著优势。

本文对动态神经网络进行了系统性的综述并将其分为三大类:

  • instance-wise 它采用数据依赖的结构或参数处理每个样例;
  • spatial-wise 它采用与图像空域位置相关的方式进行自适应计算;
  • temporal-wise 它验证序列数据(比如视频、文本)的时间维度进行自适应推理。

相比静态网络,动态神经网络有这样几个优势:

  • Efficiency
  • Representation power
  • Adaptiveness
  • Compatibility
  • Generality
  • Interpretability

本文对动态网络的几个重要组成部分(比如结构设计、决策机制、优化技术以及应用)进行了系统性研究,最后我们对该领域的开问题以及未来研究方向进行了讨论。

Instance-wise

实例级动态神经网络旨在通过数据依赖方式处理不同样例,它一般从以下两个角度出发进行设计:

  • 基于不同样例分配适当计算量达到调整网络架构的目的,因此可以在easy样例上降低冗余计算,进而达到改善推理效率的目的;
  • 针对不同样例调整网络参数且保持计算图不变,通过小幅提升计算量达到提升模型表达能力的目的。

接下来,我们将从以上两个角度出发,对现有实例级动态神经网络进行介绍。

Dynamic Architectures

假设不同的输入具有不同的计算需求,一种自然的方式:根据输入动态调整推理时的架构。具体来说,我们可以调整网络的深度、宽度或者动态路径。具有动态架构的网络不仅可以节省对于简单样例冗余计算,而且保证对于困难样例的表达能力。相比静态模型的加速技术,该方案可以带来显著的效率优势。

Dynamic Depth

为识别“困难”样例,目前CNN的结构变得越来越深,一种直观的解决方案:在推理阶段采用动态网络深度减少冗余计算。关于动态深度有两种实现方式:

  • Early exiting:对于“简单”样例提前退出。常见“早退”方案有以下三种形式:

    • Cascading DNNs,见下图a。
    • Intermediate Classifier,见下图b;
    • Multi-scale architecture with early exits,见Fig2-a。
  • Layer skipping:进行自适应的中间特征跳过。常见的“层跳过”有以下几种形式:

    • The halting score 见下图a;
    • Gating Function,见下图b;
    • Policy Network,见下图c。

Dynamic Width

动态宽度是动态深度之外的另一种选择:尽管每个层都需要执行,但它的多个成分(比如神经元、分支或者通道)将根据输入自适应选择

上图给出了几个常见动态宽度方案:

  • Dynamic width of FC Layers
  • Mixture of Experts(MoE),见上图a和b;
  • Dynamic channel pruning in CNNs,

Dynamic Routing

除了动态深度、动态宽度外,还有一种动态路径的方案(见上面图c):SuperNet中的计算路径根据输入自适应调整。关于SuperNet及其路径决策主要有以下几种方案:

  • Path selection in multi-branch structures
  • Neural trees and tree-structured networks
  • Others,主要见诸于NAS。

Dynamic Parameters

尽管前面提到的动态架构可以按照不同样例自适应调整推理图并取得有效计算量分配,但它们通常需要特定的架构设计、特定的训练策略或者精心的超参数调整。

那么另一条线来了:保持推理架构不变,但网络参数自适应调整。已有研究已证实其有效性:通过小幅提升计算量改进网络的表达能力。给定输入,静态参数网络(模块)的输出可以描述为:;与之对立的,动态参数网络的输出描述如下:

其中,用于生成动态参数,的不同选择已得到了充分的探索。

一般来说,参数自适应可以通过以下三种方式(可参见上图)得到:

  • 基于输入调整训练参数;
  • 根据输入直接生成网络参数;
  • 采用软注意力调整特征。

Parameter Adjustment

参数自适应的一种典型方法:在推理阶段,根据输入调整网络权值。通常来讲,该过程通过非常少的计算量生成这种调整,比如注意力权值、采样偏移。

Attention on weights 可训练参数量时影响表达能力的重要因素。动态网络(比如谷歌的CondConv、微软DY-CNN)在多个卷积核上执行软注意力生成自适应集成参数,它不会导致明显的计算量提升。假设有N个核,该动态卷积定义如下:

该过程可以显著提升模型的容量(capacity)且保持高效性,因为多分枝卷积融合等价于多卷积核参数融合后的单次卷积,而后者仅需前者的计算量。

权值调整还可以通过在卷积核的_空域位置_上实施软注意力。比如,PAC(pixel-adaptive convolution)在每一层根据输入生成注意力掩码对卷积核进行调整。

Kernel shape adaptation 除了自适应调整权值外,参数调整还可以用于调整卷积核的形状达到动态感受野的作用。比如,Deformable Convolution、Deformable Kernel。下表从不同角度对比了该方向的几个方法。

Weight prediction

相比于在线修改模型参数,权值预测更为直接:在测试阶段采用子网络直接生成参数

DFN(Dynamic Filter Network)与HyperNetwork是两个经典的实现运行时权值预测的CNN和RNN方案。具体来说,DFN采用滤波器生成网络为卷积生成滤波器。旷视科技提出的WeightNet则将CondConvSENet纳入到同一框架中,它通过分组全连接层生成卷积核,在精度-Flops、精度-参数量方面取得了极具竞争力的结果。其他类似的方法有:CARAFE、VSR-DUF等。

Dynamic Features

在推理阶段通过调整生成参数的主要影响在于生成更动态的、信息丰富的特征,进而增强了深度模型的表达能力。一种更直接的方式:采用输入相关的软注意力调整特征,见前面Figure6-c。这种类型的动态特征更易于得到,仅需要在计算图上作微小调整。对于线性变换,在输入特征执行注意力等价于调整参数:

Channel-wise attention 一种常用软注意力机制:动态缩放不同通道的特征,比如SENet:

当把卷积纳入考虑时,上述过程空域成如下形式:

也就是说:特征上的注意力等价于动态权值的卷积

不同形式的注意力得到了了探索,比如采用标准差提供更多统计信息,采用更高效的1D卷积替换全连接层。总而言之,通道注意力可以概括为以下三种形式:

Spatial-wise attention 特征还可以在从空域位置角度采用注意力进行动态调整以改进深度模型的表达能力。更进一步,通道与空域注意力还可以集成到一个框架中,比如BAM、CBAM。

Dynamic activation functions 前面两种在激活函数之前通过软注意力生成动态特征。近期一些工作开始尝试通过动态激活函数提升模型的表达能力。比如,DY-ReLU采用N个线性变换的最大值替换ReLU;此外还有旷视科技提出的FReLU、ACON。动态激活函数能能与现有网络架构兼容,已在不同视觉任务中证实了其有效性。总而言之,由于简单、有效性,软注意力已在多个领域得到探索,而且,软注意力能方便的与其他方法集成组合。

Spatial-wise Dynamic Network

在视觉学习中,并非所有位置对于最终的预测起均等贡献,这意味着:空域动态计算有极大潜力降低计算冗余。换句话说,仅需通过自适应方式计算一定比例的像素或者区域即可做出一个正确的决策。已有研究表明:对于大部分输入而言,低分辨率表达已足以得到一个不错的性能,CNN采用相同分辨率的输入无疑会造成冗余计算。

为此,空域动态网络旨在采用图像的不同空域位置进行自适应推理。按照动态计算的粒度,我们将其分为:

  • pixel level
  • region level
  • resolution level

Pixel-level Dynamic Networks

按照前述分类,像素级动态包含有以下两种类型:

  • dynamic architectures:采用动态架构处理每个像素;
  • dynamic parameters:采用动态参数处理每个像素。

Pixel-wise dynamic architectures

基于这样的认知:前景像素更具信息价值,其计算需求要比背景更高。一些网络尝试对每个像素调整其网络架构,现有方案可以划分为以下两种:

  • Dynamic sparse convolution:仅在子集像素区域进行卷积计算,见下图。
  • Dynamic additional refinement:不同于采样子集进行计算计算,另外一条线是:现在整个特征层面执行相对廉价的卷积,然后自适应激活额外的模块在特定像素上进行更进一步的提炼。

Pixel-wise dynamic parameters

不同于在像素子集上完整调整卷积计算,动态网络还可以对每个像素执行数据依赖的卷积以提升其表达能力或者感受野。现有方案主要有以下三种:

  • Dynamic weights,包含动态卷积、动态区域卷积等。
  • Dynamic reception fields,包含形变卷积、自适应链接网络等。
  • Pixel-wise dynamic feature,包含空域注意力。

Region-level Dynamic Networks

像素级动态网络需要特定的计算库以适配稀疏计算,在实际硬件上加速极为有限。另一种可选方案:在区域或者块级进行自适应推理。主要包含两条线路:

  • Dynamic transformations:常见于细粒度图像分类;
  • Hard attention:比如GFNet、RA-CNN。

Resolution-level Dynamic Networks

上面的讨论是将特征分成不同的区域,然后采用自适应方式对不同区域进行处理。然而,所涉及的稀疏采样、裁剪奥做会导致实际效率的价格降低。另外,动态网络可以把不同分辨率的图像视作整体:低分辨率图像对于“简单”样例足够有效。现有的分辨率级动态网络可以分为以下两种:

  • Adaptive scaling ratios:采用自适应缩放因子对特征进行上/下采样达到动态分辨率目的。
  • Dynamic resolution in multi-scale architectures:采用并行/级联方式构建多个子网络以达到动态分辨率目的。

Inference and Training

从前面介绍可以看到:推理阶段的数据依赖决策对于获得高性能、高效率推理非常重要;此外,训练动态网络通常比静态网络更具挑战性。

由于参数的自适应性可以通过SGD直接优化训练得到,且无需特定技术。接下来我们主要针对离散决策、训练策略进行介绍。

Decision Making of Dynamic Networks

推理阶段的数据依赖决策主要有以下三种:

  • Confidence-based Criteria
  • Policy Networks
  • Gating Functions

Training of Dynamic Networks

从目标与优化两个角度简单汇总了训练动态网络的策略:

  • Training objectives for efficient inference:在这方面有分为以下几种:

    • Trainng multi-exit networks,
    • Encouraging sparsity,包含稀疏正则
    • Other techniques,包含知识蒸馏等
  • Optimization of non-differentiable functions:

    • Gradient estimation,包含STE等;
    • Reparameterization techniques,包含Gumbel Softmax等;
    • Reinforcement learning,包含RL等。

Application of Dynamic Networks

接下来,我们将汇总以下动态神经网络的典型应用,见下表。

可以看到:

  • 对于图像识别来说,动态CNN大多为instance-wise和spatial-wise形式;
  • 对于文本数据来说,其推理框架大多为itemporal-wis形式;
  • 对于视频相关任务,三种类型的动态推理可同时使用;

动态网络还可以用于解决深度学习中的基础问题,比如:

  • 缓解over-thinking降低整体计算量;
  • 引入早退机制进行长尾分类;
  • 提升模型鲁棒性
  • 在多任务框架下降低训练耗时;
  • 在迁移学习中寻找最优微调策略。


本文亮点总结


1.假设不同的输入具有不同的计算需求,一种自然的方式:根据输入动态调整推理时的架构。具体来说,我们可以调整网络的深度、宽度或者动态路径。具有动态架构的网络不仅可以节省对于简单样例冗余计算,而且保证对于困难样例的表达能力。

2.现有的分辨率级动态网络可以分为以下两种:
  • Adaptive scaling ratios:采用自适应缩放因子对特征进行上/下采样达到动态分辨率目的。
  • Dynamic resolution in multi-scale architectures:采用并行/级联方式构建多个子网络以达到动态分辨率目的。

如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取最新CV干货

公众号后台回复“CNN综述”获取67页综述深度卷积神经网络架构


极市干货
YOLO教程:一文读懂YOLO V5 与 YOLO V4大盘点|YOLO 系目标检测算法总览全面解析YOLO V4网络结构
实操教程:PyTorch vs LibTorch:网络推理速度谁更快?只用两行代码,我让Transformer推理加速了50倍PyTorch AutoGrad C++层实现
算法技巧(trick):深度学习训练tricks总结(有实验支撑)深度强化学习调参Tricks合集长尾识别中的Tricks汇总(AAAI2021
最新CV竞赛:2021 高通人工智能应用创新大赛CVPR 2021 | Short-video Face Parsing Challenge3D人体目标检测与行为分析竞赛开赛,奖池7万+,数据集达16671张!


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart2)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~  
浏览 66
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报