Bing Xu、Andrew Tulloch、Yunpeng Chen、Xiaomeng Yang、Lin Qiao作者

显著提升图像识别网络效率,Facebook提出IdleBlock混合组成方法

Facebook AI 近日一项研究提出了一种新的卷积模块 IdleBlock 以及使用该模块的混合组成(HC)方法。实验表明这种简洁的新方法不仅能显著提升网络效率,而且还超过绝大多数神经网络结构搜索的工作,在同等计算成本下取得了 SOTA 表现,相信这项研究能给图像识别网络的开发、神经网络结构搜索甚至其他领域网络设计思路带来一些新的启迪。

链接:https://arxiv.org/pdf/1911.08609.pdf

近年来,卷积神经网络(CNN)已经主宰了计算机视觉领域。自 AlexNet 诞生以来,计算机视觉社区已经找到了一些能够改进 CNN 的设计,让这种骨干网络变得更加强大和高效,其中比较出色的单个分支网络包括 Network in Network、VGGNet、ResNet、DenseNet、ResNext、MobileNet v1/v2/v3 和 ShuffleNet v1/v2。近年来同样吸引了研究社区关注的还有多分辨率骨干网络。为了能够实现多分辨率学习,研究者设计出了模块内复杂的连接来处理不同分辨率之间的信息交换。能够有效实现这种方法的例子有 MultiGrid-Conv、OctaveConv 和 HRNet。这些方法在推动骨干网络的设计思想方面做出了巨大的贡献。

为了设计出更高效的 CNN,主流的发展方向有两个:神经架构搜索(Neural Architecture Search,NAS)和网络剪枝(Network Pruning,NP)。NAS 的思路是:给定限量的计算资源,自动确定最佳的网络连接方式、模块设计和参数参数搜索(Hyperparameter searching)是机器学习领域内一大经典的研究主题,本文所指的 NAS 仅限定于搜索神经网络的连接方式和模块设计。NP 的思路是:给定一个经过预训练的网络,使用能够移除不重要连接的自动算法,从而降低计算和参数量。

不同于搜索连接方式的 NAS 以及 NP,EfficientNet 则为骨干网络提供了联合参数:深度缩放因子 d、宽度缩放因子 w、输入分辨率缩放因子 r,这被称为复合缩放因子。基于 MobileNet v3 的一种变体,这些联合搜索的缩放因子让 EfficientNet 系列网络在计算成本(MAdds)或参数数量方面比所有之前的骨干网络高效 5 到 10 倍。

作者认为目前实现高效卷积网络的工作流程可以分成两步:1)设计一种网络架构;2)对该网络中的连接进行剪枝

在第一步,作者研究了人类专家设计的架构与搜索得到的架构之间的共同模式:对于每种骨干网络,其架构都是由其普通模块和归约模块(reduction block)的设计所确定的。他们的具体操作是在每一阶段开始时插入一个归约模块,然后反复堆叠普通模块。每一阶段都重复多次,则每一阶段普通模块的数量可能各不相同。作者将这种设计模式称为单调设计(Monotonous Design,下图 3)

图 3:单调设计。

举例来说,ResNet 是单调重复 Bottleneck 模块,ShuffleNet 是单调重复 ShuffleBlock,MobileNet v2/v3 和 EfficientNet 是单调重复 Inverted Residual Block(MBBlock),NASNet 是重复 Normal Cell,FBNet 是重复 MBBlock 的一种有不同参数的变体。作者表示,目前所有主流的网络模块都保证了完整的信息交换。

第二步会将某些连接剪枝去掉,这样就不能保证每个模块都有完整的信息交换了。

Facebook AI 的研究者在这篇论文中通过在网络设计步骤中考虑剪枝,为图像识别任务设计了一种更高效的网络。他们创造了一种新的模块设计方法:Idle。在 Idle 设计中,输入的一个子空间是不会进行变换的:它只是会闲置并被直接传递给输出(下图 1)。

图 1:Idle 的设计思路。Idle 设计中的信息交换应用在 Idle 模块之外。

他们还突破了当前先进架构的单调设计限制,并将新提出的非单调式组成方法称为混合组成(Hybrid Composition/HC)方法(下图 4)。

图 4:混合组成。

初始的结果与预期相符:如果单调地使用 IdleBlock 构建一个网络,则我们会得到一个准确度损失在可接受范围内的已剪枝网络。如果使用 IdleBlock(和 MBBlock)进行混合构建,能够在显著节省计算的同时极大降低准确度损失。但结果中还有出乎意料的发现:通过利用 IdleBlock 混合组合后节省的计算来继续加大网络深度就可以得到同等计算下新的 SOTA 网络结构——而无需复杂的多分辨率设计或神经架构搜索。

Idle 与 IdleBlock 的设计

关键的卷积模块设计 

下面简要展示了过去几种关键的卷积构建模块设计示意图:

Bottleneck 模块的目标是减少空间卷积的计算量。其中每个模块都由经过扩展的输入和输出构成,没有非线性。残差连接位于经过扩展的表征之间。

图 5:Bottleneck 模块。

逆向残差连接模块(Inverted Residual Block,MBBlock)的目标是从经过扩展的投射中提取出丰富的空间信息。其中每个模块都由较窄的输入和输出构成,没有非线性。残差连接位于经过收窄的表征之间。

图 6:逆向残差连接模块。

ShuffleBlock v1 是 Bottleneck 模块的一种扩展。其未来减少收窄后的表征计算,引入一种分组式逐点运算,并在后面使用了通道混洗操作。

图 7:ShuffleBlock v1。

ShuffleBlock v2 移除了分组式逐点运算,而是使用分割来获取收窄的表征。类似于 Bottleneck 模块和 ShuffleBlock v1,每个都由经过扩展的输入和输出构成。

图 8:ShuffleBlock v2。

Idle 设计

这篇论文提出了一种新的设计模式:Idle,其目标是将输入的一个子空间直接传递到输出张量,而不经历任何变换。上图 1 展示了 Idle 和网络剪枝的思路。作者在 Idle 设计中引入了一个 Idle 因子 α ∈ (0, 1),它也可以被视为剪枝因子。给定一个有 C 个通道的输入张量 x,张量会被切分为两个分支:一个是包含 C · (1 − α) 个通道的主动分支 x_1,这会输出一个 C ·(1−α) 个通道的张量 y_1;另一个是有 C · α 个通道的 Idle 分支 x_2,它会被直接复制到有 C 个通道的输出张量 y。

Idle 设计与 Residual connection, Dense connection 和 ShuffleBlock v2 的区别请参考原文。

IdleBlock 

首先,作者给出了在 ShuffleBlock v1/v2 和 MBBlock 上得到的一些直观结果和实验经验教训:

  • 需要在经过扩展的特征图上应用深度卷积(MobileNet v1 对比 MobileNet v2);

  • 分组卷积是不必要的(ShuffleNet v1 对比 ShuffleNet v2);

  • 通道混洗操作对各种加速器并不友好,应避免使用。

基于这些经验教训,本文提出了 MBBlock 的一种 Idle 化版本:IdleBlock。IdleBlock 有两种变体。如果在基于两个分支构建输出张量时使用的连接函数是 concat(y1, x2),则称之为 L-IdleBlock(下图 9);而如果使用的连接函数是 concat(x2, y1),则称之为 R-IdleBlock。如果是信息交换模块之后紧跟着一个 IdleBlock,则 L-IdleBlock 和 R-IdleBlock 是等效的。当堆叠两个或多个 IdleBlock 时,L/R-IdleBlock 单元的混合不同于 L/R-IdleBlock 单元的单调组成。 

图 9:L-IdleBlock。

混合组成网络

混合组成(HC)是一种全新的非单调式网络组成方法。

在混合组成中,网络的每个阶段都使用多种类型的构建模块进行非单调的组成。这只有当不同模块的输入和输出维度限制一样时才能实现。

在使用 IdleBlock 的案例中,IdleBlock 和 MBBlock 都满足混合组成的输入和输出约束。此外,一旦实现了 IdleBlock 和 MBBlock 的混合化,MBBlock 中的首个逐点卷积运算就可以帮助我们交换 IdleBlock 的两个分支的信息,而无需像在 ShuffleBlock 中一样执行显式的通道混洗操作。

但是,混合组成又带来了另外的问题。如果一个网络阶段包含 n 个 MBBlock 单元,则该 Idle 网络中 MBBlock 和 IdleBlock 的放置方式有 2^n 种候选组合,但需要探索的只是这些候选组合中的一小部分。

为了解决这个难题,研究者探索了 MBBlock 与 IdleBlock 的三种不同的混合组成配置:Maximum、None 和 Adjacent。具体解释请参阅原论文。 

实验

作者基于 ImageNet 2012 分类数据集进行了实验,结果表明了使用 IdleBlock 的混合组成的有效性。

表 1:在 MobileNet v3 上应用不同混合组成配置的结果。★表示使用分布式训练。None 配置是标准的 MobileNet v3。Adjacent + 1 IdleBlock L/R 是用一个 L-IdleBlock 和一个 R-IdleBlock 替换一个 MBBlock 的配置。当使用 IdleBlock 添加或替换 MBBlock 时,都使用了与被替换的 MBBlock 同样的 SE、通道和激活设置。

表 2:在 MobileNet v3 上使用 IdleBlock 的混合组成与 SOTA 人类专家设计的网络与 NAS 网络之间的比较。新方法的结果表示为 HC(M=x, I=y):M 是 MBBlock 的总数,I 是 IdleBlock 的总数。★表示使用了分布式训练。

表 3:在 EfficientNet-B0 上应用不同混合组成配置的结果。如 MobileNet v3 实验一样,SE、通道、非线性激活和 DropConnect 设置与被替换的 MBBlock 一样。

表 4:使用了混合组成的 Efficient-B0 与当前最佳方法的比较。★ 表示新方法的结果;◇表示来自 GluonCV 的结果;□ 表示使用 320 × 320 分辨率的图像训练和测试的网络。

另外,作者也进行了一些控制变量实验研究,让新方法的有效性得到了进一步的验证。

入门图像识别IdleBlockFacebook
4
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

分类数据技术

一种特征,拥有一组离散的可能值。以某个名为 house style 的分类特征为例,该特征拥有一组离散的可能值(共三个),即 Tudor, ranch, colonial。通过将 house style 表示成分类数据,相应模型可以学习 Tudor、ranch 和 colonial 分别对房价的影响。 有时,离散集中的值是互斥的,只能将其中一个值应用于指定样本。例如,car maker 分类特征可能只允许一个样本有一个值 (Toyota)。在其他情况下,则可以应用多个值。一辆车可能会被喷涂多种不同的颜色,因此,car color 分类特征可能会允许单个样本具有多个值(例如 red 和 white)。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

推荐文章
暂无评论
暂无评论~