0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文全面概览动态神经网络

中科院长春光机所 来源:AIWalker 作者:Happy 2021-06-02 12:58 次阅读

在过去了几年里,动态神经网络非常热,热到每周都能看到几篇不错的动态神经网络论文上传到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

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

那么另一条线来了:保持推理架构不变,但网络参数自适应调整。已有研究已证实其有效性:通过小幅提升计算量改进网络的表达能力。给定输入

x,静态参数网络(模块)的输出可以描述为:

y=F(x,Θ);与之对立的,动态参数网络的输出描述如下:

y=F(x,^Θ|x)=F(x,W(x,Θ))其中,

W(⋅,Θ)用于生成动态参数,

W的不同选择已得到了充分的探索。

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

基于输入调整训练参数;

根据输入直接生成网络参数;

采用软注意力调整特征。

Parameter Adjustment

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

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

Wn,n=1,2,⋯,N,该动态卷积定义如下:

y=x∗~W=x∗(N∑n=1αnWn)

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

1/N的计算量。

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

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

Weight prediction

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

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

Dynamic Features

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

F,在输入特征执行注意力

α等价于调整参数:

F(x,Θ)⊗α=F(x,Θ⊗α)Channel-wise attention 一种常用软注意力机制:动态缩放不同通道的特征,比如SENet:

~y=y⊗α=y⊗A(y)当把卷积纳入考虑时,上述过程空域成如下形式:

~y=(x∗W)⊗α=x∗(W⊗α)也就是说:特征上的注意力等价于动态权值的卷积。

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

~y=y⊗A(y)

~y=y⊗A(x)

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

Dynamic activation functions 前面两种在激活函数之前通过软注意力生成动态特征。近期一些工作开始尝试通过动态激活函数提升模型的表达能力。比如,DY-ReLU采用N个线性变换

yc=maxn{ancxc+bnc}的最大值替换ReLU

yc=max(xc,0);此外还有旷视科技提出的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降低整体计算量;

引入早退机制进行长尾分类;

提升模型鲁棒性

在多任务框架下降低训练耗时;

在迁移学习中寻找最优微调策略。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    158

    文章

    7314

    浏览量

    174715
  • 谷歌
    +关注

    关注

    27

    文章

    5835

    浏览量

    103220
  • PAC
    PAC
    +关注

    关注

    0

    文章

    68

    浏览量

    27758
  • DFN
    DFN
    +关注

    关注

    0

    文章

    11

    浏览量

    8471

原文标题:【综述】一文概览动态神经网络

文章出处:【微信号:cas-ciomp,微信公众号:中科院长春光机所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    卷积神经网络的优点

    卷积神经网络的优点  卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的神经网络模型,在图像识别、语音识别、自然语言处理等领域有着广泛的应用。相比
    的头像 发表于 12-07 15:37 2909次阅读

    《 AI加速器架构设计与实现》+第章卷积神经网络观后感

    《 AI加速器架构设计与实现》+第章卷积神经网络观感    在本书的引言中也提到“图胜千言”,读完第章节后,对其进行了些归纳(如图
    发表于 09-11 20:34

    人工神经网络和bp神经网络的区别

    人工神经网络和bp神经网络的区别  人工神经网络(Artificial Neural Network, ANN)是一种模仿人脑神经元网络结构和功能的计算模型,也被称为
    的头像 发表于 08-22 16:45 3405次阅读

    卷积神经网络和深度神经网络的优缺点 卷积神经网络和深度神经网络的区别

    深度神经网络是一种基于神经网络的机器学习算法,其主要特点是由多层神经元构成,可以根据数据自动调整神经元之间的权重,从而实现对大规模数据进行预测和分类。卷积
    发表于 08-21 17:07 2211次阅读

    卷积神经网络的介绍 什么是卷积神经网络算法

    卷积神经网络的介绍 什么是卷积神经网络算法 卷积神经网络涉及的关键技术 卷积神经网络(Convolutional Neural Network,CNN)是一种用于图像分类、物体识别、语
    的头像 发表于 08-21 16:49 1406次阅读

    卷积神经网络层级结构 卷积神经网络的卷积层讲解

    卷积神经网络层级结构 卷积神经网络的卷积层讲解 卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的神经网络模型,在许多视觉相关的任务中
    的头像 发表于 08-21 16:49 4230次阅读

    卷积神经网络的基本原理 卷积神经网络发展 卷积神经网络三大特点

    卷积神经网络的基本原理 卷积神经网络发展历程 卷积神经网络三大特点  卷积神经网络的基本原理 卷积神经网络(Convolutional Ne
    的头像 发表于 08-21 16:49 1413次阅读

    卷积神经网络三大特点

    卷积神经网络三大特点  卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,其具有三大特点:局部感知、参数共享和下采样。 一、局部感知 卷积神经网络
    的头像 发表于 08-21 16:49 3449次阅读

    卷积神经网络模型有哪些?卷积神经网络包括哪几层内容?

    卷积神经网络模型有哪些?卷积神经网络包括哪几层内容? 卷积神经网络(Convolutional Neural Networks,CNN)是深度学习领域中最广泛应用的模型之一,主要应用于图像、语音
    的头像 发表于 08-21 16:41 1487次阅读

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点

    卷积神经网络概述 卷积神经网络的特点 cnn卷积神经网络的优点  卷积神经网络(Convolutional neural network,CNN)是一种基于深度学习技术的
    的头像 发表于 08-21 16:41 1908次阅读

    卷积神经网络的应用 卷积神经网络通常用来处理什么

    卷积神经网络的应用 卷积神经网络通常用来处理什么 卷积神经网络(Convolutional Neural Network,简称CNN)是一种在神经网络领域内广泛应用的
    的头像 发表于 08-21 16:41 3885次阅读

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法

    卷积神经网络原理:卷积神经网络模型和卷积神经网络算法 卷积神经网络(Convolutional Neural Network,CNN)是一种基于深度学习的人工
    的头像 发表于 08-17 16:30 887次阅读

    用CMSIS-NN版本转换Arm Cortex-M的神经网络:r0p0指南

    2. 概览 本指南向您展示了如何将神经网络从任何框架转换成个基于 Arm Cortex-M-M 装置的实施工具, 使用 Arm CMSIS- NN 库。 此教程用于不再支持的 CMSIS- NN
    发表于 08-11 07:06

    什么是神经网络?为什么说神经网络很重要?神经网络如何工作?

    神经网络是一个具有相连节点层的计算模型,其分层结构与大脑中的神经元网络结构相似。神经网络可通过数据进行学习,因此,可训练其识别模式、对数据分类和预测未来事件。
    的头像 发表于 07-26 18:28 1871次阅读
    什么是<b class='flag-5'>神经网络</b>?为什么说<b class='flag-5'>神经网络</b>很重要?<b class='flag-5'>神经网络</b>如何工作?

    三个最流行神经网络

    在本文中,我们将了解深度神经网络的基础知识和三个最流行神经网络:多层神经网络(MLP),卷积神经网络(CNN)和递归神经网络(RNN)。
    发表于 05-15 14:19 1171次阅读
    三个最流行<b class='flag-5'>神经网络</b>