在深度学习领域,一个正在迅速崛起的研究课题是动态神经网络。当我们谈论传统的静态神经网络时,我们用固定的参数训练它们,并固定解决问题的技能。但众所周知,在这些不断变化的场景中,输入和环境的属性正在迅速变化。所以我们需要一些能够根据输入和环境自动改变自身的东西。在这里,动态神经网络是一种具有自适应性的模型。在这篇文章中,我们将详细讨论动态神经网络以及它们的流行类别。本文所涉及的主要内容如下。
目录
- 简介
- 什么是动态神经网络?
- 动态神经网络的优势
- 动态神经网络的分类
- 动态网络的样本
- 空间上的动态网络
- 时间上的动态网络
让我们从了解背景和动态神经网络开始。
简介
正如我们所知,深度神经网络正在兴起,以解决各种问题,如计算机视觉、自然语言处理,也有各种良好的模型,如ResNet、VGG、GoogleNet等,这些模型确实表现良好,但这些模型大多以静态方式工作。其中计算图和网络的参数是固定的,这限制了它们的可解释性、效率和表示能力。利用动态神经网络的优势,我们可以克服静态神经网络的这些限制。
什么是动态神经网络?
动态神经网络可以被认为是静态神经网络的改进,通过添加更多的决策算法,我们可以使神经网络从输入中动态地学习并产生更好的质量结果。决策算法是为网络提供动力的改进,以便对输入做出更正确的决策或计算,从而更准确地获得所需的输出,并具有代表性的力量。这些网络不在一个固定的方向上工作;它们有能力从环境和输入中学习。在学习之后,它们可以改变它们的工作方向,这可以提供健康的输出,而不需要进行更多的计算和花费更多的计算成本。由于它们有这些能力,我们可以说它们是根据情况来适应的,对情况的适应是动态的,就像它们在运行时改进计算方法一样。这使得我们在神经网络之前添加了一个 "动态 "的词。下面的部分代表了动态神经网络的优势,这将使我们对动态神经网络有更清晰的认识。
动态神经网络的优势
以下是动态神经网络的优势:
-
效率: 动态神经网络有一些特点,它们可以在测试时间需要时,通过激活其组件来分配计算。例如,在任何输入形状较小的任务中,它可以分配较少的计算能量来执行任务,如果输入形状较大,则可以分配更多的计算能量。由于这种计算效率,动态模型在少量学习的情况下也具有数据效率。
-
表征能力: 动态模型的结构和参数与输入有关,这导致了参数空间的扩大和表达能力的提高。在计算模型的增量的情况下,可以在卷积神经网络上应用特征条件的注意权重。
-
适应性: 动态神经网络有能力在运行时间上以不同的计算成本实现不同的准确性和效率条件。这就是为什么我们可以说它们善于适应不同的环境和机器。环境的变化并不影响它的运行,但根据预算,我们可以改变准确性和效率。
-
兼容性; 用于提高性能的先进技术,如算法优化、数据预处理、架构设计优化等,与静态模型配合得很好,以达到最先进的性能。这些先进技术也与动态神经网络兼容。随着这些加速技术的加入,如网络修剪,静态模型的低秩近似也可以用于动态神经网络,以进一步提高网络的效率。
-
可解释性: 我们可以说,神经网络的灵感来自于人类的大脑。由于神经元的网络帮助大脑,而大脑动态地做出决定,这里我们可以说,在引入动态神经网络模型之前,还有一件事是动态地做出决定。为此,网络有必要像人脑那样处理输入,并观察输入的哪一部分对进一步的程序有用,哪一部分没有用。这可以由动态神经网络来完成,这就是为什么我们称它们为数据依赖型神经网络。
-
通用性: 动态模型可用于广泛的应用,如图像分类、图像分割、物体检测等。许多动态模型是基于一般的方法,可用于广泛的应用,如为计算机视觉开发的模型可以解决计算机视觉的所有问题,也可以应用于解决NLP问题。
动态神经网络的分类
动态神经网络被分为三类。让我们逐一详细讨论所有这些类别。
采样型动态网络
这种类型的动态神经网络主要侧重于设置一个可以根据每一种样本分配计算的网络。例如,如果样本对网络来说是容易学习的,它可以通过减少计算能量而表现得丰富和准确,或者如果样本是困难的,网络可以增加计算能量以提高准确性。它们包括用固定的计算图来适应网络参数,这样计算中的冗余就不会增加成本。网络的主要目标是以最小的成本增加表示能力。
静态模型上的加速器使计算恒定,网络对任何类型的数据都进行同样的计算。在动态神经网络中,动态结构允许有条件的计算,这可以通过调整网络的宽度和深度或在超级网络中执行动态路由来获得。具有动态结构的网络通过保留对简单输入的计算,节省了应用于困难输入的表示能力。如果输入是容易的,我们可以提供一个浅层的输出,不需要模型的所有层,通过跳过一些层,我们可以节省被跳过的层的表示能力,对容易的输入的输出也会是准确的。
我们可以通过以下方式跳过各层:
- 基于停顿分数的跳层-- 在这种类型中,特征的停顿分数决定了该特征是否会进入该层/下面的图片表示特征X4不依赖于停顿分数

- 基于门函数的跳层在这种类型中,门函数根据中间特征决定是否执行该块。

上面的图片代表了带有门模块的样本动态网络的块结构。
- 基于策略网络的层跳转-- 策略网络为主网络中的层产生跳转决定。

上图表示一个带有策略网络的抽样动态网络的块状结构。
空间明智的动态网络
这种类型的动态神经网络基本上是为计算机视觉问题设计的。正如我们所知,在大多数图像处理任务中,静态模型在计算中不考虑图像的所有像素。这是静态神经网络的一个缺点,因为模型所需的输出变得很浅,模型所投入的能量也很高。这与精度损失和计算能量损失直接相关。而空间上的动态网络包括空间上的动态计算,从而减少了计算上的冗余。换句话说,我们可以说只对那些负责产生输出的位置进行工作,可以用较少的计算能量给一个模型带来更高的精度。
空间上的动态网络是为了适应图像中不同位置的推断而建立的。在这种类型的网络中,卷积层和过滤器根据位置颗粒度来处理动态位置。这些模型的适应性是通过像素级的深度和宽度实现的。我们可以说这些模型提供了计算的空间分配。
这些模型根据其工作方法可以分为三种类型:
- 像素级动态网络-- 它是一种最常见的空间上的动态网络,模型在像素级进行计算,计算过程根据像素级自适应。自适应性可以通过两种方式获得,一种是专门为像素设置模型架构的动态,一种是专门为像素设置参数的动态。

上面的图片是像素级动态网络的代表,图片的黑色部分决定了计算所需的像素(绿色)。
- 区域级动态网络
像素级动态网络需要更高的计算水平,这可能导致图像处理过程中的速度变慢。使用这些模型可能需要从外部对硬件进行加速。作为这些模型的替代品,我们可以使用区域级动态网络。在这里,模型是根据给定图像的区域或斑块作为模型的输入而建立的,以适应计算。使模型的计算适应于区域,可以通过对特征图的区域进行参数转换或学习补丁级动态转换来完成。

上图是区域级动态网络的表示,区域选择模块生成转换参数,所选区域由网络进一步处理。
- 分辨率级的动态网络
以上讨论的方法有一个问题,就是把特征图分成不同的区域来进行自适应计算。因为他们在计算时考虑到了图像的像素或斑块。在图像处理中,分辨率是一个主要因素,可以用于模型中以获得更好的准确性。在这种类型的模型中,我们试图通过处理具有自适应分辨率的特征表示来学习整个图像。图像中的低分辨率空间可以被认为是简单的样本,而高分辨率空间则是艰难的样本。因此,我们可以说,分辨率级别的动态网络从特征分辨率的角度利用了空间冗余。
时间级动态网络
顾名思义,自适应计算可以用像时间序列或文本数据这样的时间性或顺序性的数据进行。在空间级动态模型中,我们已经看到我们如何使模型的计算程序适应图像的像素斑点和分辨率等特征。我们也可以建立一个模型,使计算程序适应于数据的序列,我们可以定义序列数据中对结果有重大影响或没有影响的部分。这样,它们就可以被分开,并以不同的方式处理,以实现模型的更高准确性。因此,如果该模型是为区分连续数据的部分而训练的,并且还能适应数据的变化,那么它就可以被称为时序动态网络。这些模型可以根据它们使用的数据分为两种方式
-
基于RNN的动态文本处理-- 传统的静态RNN大多通过按顺序读取整个输入来更新每一步或每一个时间步骤的隐藏状态。一种动态的RNN可以被开发出来,通过应用自适应的阅读程序来跳过输出中不考虑的序列,以避免输出中不相关的标记的阅读任务,这可以通过早期跳过来实现,其中模型已经了解到只有相关的标记s可以用于输出,或者通过跳过任意的位置,模型在实时使用跳过程序。由于RNN模型在顺序数据学习方面是众所周知的,将它们动态地用于时间序列或文本数据,是获得更好性能的有力工具。
-
时间上的动态视频识别-- 视频数据也可以被视为顺序数据,其中输入是按顺序组织的帧。对于这种数据,时间上的动态网络被设计为以一种自适应的方式分配计算,模型可以通过跳过那些不需要的帧从不同的条件下学习。这与基于RNN的动态文本处理非常相似,其中自适应计算是通过动态更新递归模型的每个时间步骤中的隐藏状态或对关键帧执行自适应预取样程序来实现。

上面给出的图片代表了时序动态网络的步骤框图,其中前三种方法是通过跳过更新、部分更新状态或分层结构的条件计算来动态分配每一步的计算。(d)中的代理决定下一步在哪里读取。
最后的话
在这篇文章中,我们已经对动态神经网络有了一个概述,在这里我们看到了我们如何从三个方面来区分动态神经网络。时间上的动态网络和空间上的动态网络是特定任务的,可以分别用于 连续数据和图像的建模。基于样本的动态网络可用于预测分析,因为它们的特点是根据容易和困难的样本对样本进行自适应计算,以节省能量和更好的表达能力。此外,我们已经看到了动态神经网络的一些优势,以及它们是如何帮助提高整体性能的。
参考文献: