MnasNet: Platform-Aware Neural Architecture Search for Mobile
Abstract
- 为移动设备设计卷积神经网络(CNN)模型具有挑战性,因为移动模型需要小而快,但仍然准确。尽管在所有三个维度上设计和改进移动模型已经付出了巨大的努力,但当有如此多的架构可能性需要考虑时,手动平衡这些权衡是具有挑战性的。
- 在本文中,提出了一种自动神经结构搜索方法,用于设计资源受限的移动CNN模型。本文建议显式地将延迟信息合并到主目标中,以便搜索可以确定一个在准确性和延迟之间实现良好平衡的模型。
- 与之前的工作不同,在之前的工作中,移动延迟是通过另一个通常不准确的代理(例如FLOPS)来考虑的,在本文的实验中,通过在特定平台(例如Pixel phones)上执行模型来直接测量真实世界的推理延迟。为了在灵活性和搜索空间大小之间取得更好的平衡,本文提出了一种新的因子分解的分层搜索空间,它允许整个网络中的层多样性。实验结果表明,在多个视觉任务中,本文的方法始终优于最先进的移动CNN模型。
- 在ImageNet分类任务上,本文的模型在Pixel手机上实现了74.0%的top-1精度,延迟为76毫秒,比MobileNetV2 (Sandler等人2018年)快1.5倍,比NASNet (Zoph等人2018年)快2.4倍,具有相同的top-1精度。在COCO对象检测任务中,本文的模型系列实现了比MobileNets更高的地图质量和更低的延迟。
- Google 团队提出 MnasNet,使用强化学习的思路,提出一种资源约束的终端 CNN 模型的自动神经结构搜索方法。
Introduction
- 卷积神经网络(CNN)在图像分类、目标检测和许多其他应用中取得了重大进展。随着现代CNN模型变得越来越深入和庞大,它们也变得更慢,需要更多的计算。计算需求的这种增长使得在资源受限的平台(如移动或嵌入式设备)上部署最先进的CNN模型变得困难。
- CNN 模型近年发展非常迅猛,在多项视觉任务中都展现出极佳的性能。但 CNN 模型体积巨大,计算性能低,这是比较明显的缺点,计算需求的增加使得在诸如终端(手机/AR/VR/无人机)上部署最先进的 CNN 模型变得困难。
- 终端轻量化神经网络模型需要同时考虑三个维度:参数少、速度快和精度高。Mobile V1&V2,shuffle Net V1 等 CNN 模型在移动端取得一定进展,但是使用间接评价标准,如 FLOPS 等,手工设计模型卷积架构难以在三个维度取得平衡。
- 鉴于移动设备上可用的计算资源有限,最近的许多研究都集中在通过减少网络的深度和利用更便宜的操作来设计和改进移动CNN模型,如深度卷积(Howard等人,2017年)和组卷积(Zhang等人,2018年)。
- 然而,设计一个资源受限的移动模型是具有挑战性的:人们必须仔细平衡准确性和资源效率,这导致了非常大的设计空间。更复杂的是,每种类型的移动设备都有自己的软件和硬件特性,可能需要不同的架构来实现最佳的精度-效率平衡。
- 在本文中,本文提出了一种自动神经结构搜索方法来设计移动CNN模型。下图显示了本文方法的总体视图,其中与以前方法的主要区别是延迟感知多目标奖励和新颖的搜索空间。
- An Overview of Platform-Aware Neural Architecture Search for Mobile.
- 本文的方法受到两个主要思想的启发。首先,本文将设计问题公式化为一个多目标优化问题,同时考虑了CNN模型的准确性和推理延迟。然后,本文使用架构搜索和强化学习来找到在准确性和延迟之间实现最佳平衡的模型。其次,本文还观察到,以前的自动化方法主要是搜索几种类型的细胞,然后通过CNN网络重复堆叠相同的细胞。
- 那些被搜索的模型没有考虑到像卷积这样的操作基于它们所操作的具体形状在等待时间上有很大的不同:例如,具有相同数量的理论FLOPS但是不同形状的两个3×3卷积可能没有相同的运行时间等待时间。基于这一观察,本文提出了一个由一系列分解的块组成的分解的分级搜索空间,每个块包含由具有不同卷积运算和连接的分级子搜索空间定义的层的列表。
- 本文表明,不同的操作应该在架构的不同深度使用,并且在这个大空间的选项中的搜索可以使用架构搜索方法有效地完成,该方法使用测量的推理延迟作为奖励信号的一部分。
- 将本文提出的方法应用于ImageNet分类(Russakovsky等人2015)和COCO对象检测(Lin等人2014)。实验结果表明,通过本文的方法找到的最佳模型明显优于最先进的移动模型。与最近的MobileNetV2 (Sandler等人,2018年)相比,本文的模型在Pixel phone上的延迟相同的情况下,将ImageNet top-1的准确性提高了2%。
- 另一方面,如果本文约束目标top-1精度,那么本文的方法可以找到另一个比MobileNetV2快1.5倍、比NASNet快2.4倍的模型(Zoph et al. 2018)具有相同的精度。通过额外的挤压和激励优化SENet,本文的方法实现了ResNet-50(何等人,2016)级别的top-1精度为76.13%,参数减少了19倍,乘加运算减少了10倍。
- 本文表明,本文的模型在不同的模型缩放技术(例如,不同的输入图像大小)下也具有良好的泛化能力,与MobileNetV2相比,ImageNet top-1的准确性始终提高了约2%。通过将本文的模型作为特征提取器插入到SSD对象检测框架中,本文的模型在MobileNetV1和MobileNetV2上改善了COCO数据集上的推理延迟和地图质量,并以35倍的计算成本实现了与SSD300相当的地图质量(22.9比23.2)。
- 概括而言,本文的主要贡献如下:
- 本文介绍了一种基于强化学习的多目标神经结构搜索方法,该方法能够找到高精度、低推理延迟的CNN模型。
- 本文提出了一种新的分解式分层搜索空间,通过在灵活性和搜索空间大小之间取得适当的平衡,最大化移动模型的设备上资源效率。
- 在ImageNet分类和COCO对象检测两个方面都显示出显著且一致的改进,优于最先进的移动CNN模型。
Related Work
- 在过去的几年中,提高CNN模型的资源效率一直是一个活跃的研究课题。一些常用的方法包括
- 1)将基线CNN模型的权重和/或激活量化为低位表示,
- 2)修剪不太重要的过滤器在训练期间或之后,以降低其计算成本。
- 然而,这些方法依赖于基线模型,并且不集中于学习CNN操作的新组成。
- 另一种常见的方法是直接手工制作更有效的操作和神经架构:SqueezeNet通过普遍使用更低成本的1x1卷积和减少滤波器大小来减少参数和计算的数量;MobileNet 广泛采用深度方向可分离卷积来最小化计算密度;ShuffleNet(2018)利用低成本的逐点群卷积和通道洗牌;Condensenet(2018)学习跨层连接组卷积;最近,MobileNetV2 (2018年)通过使用资源高效的反向残差和线性瓶颈,在移动大小的模型中取得了最先进的结果。
- 不幸的是,考虑到潜在的巨大设计空间,这些手工制作的模型通常需要相当大的人力,并且仍然不是最理想的。
- 最近,人们对神经结构设计过程的自动化越来越感兴趣,尤其是对CNN模型。NASNet 和MetaQNN 利用强化学习开启了自动化神经架构搜索的浪潮。因此,神经架构搜索得到了进一步发展,采用了渐进式搜索方法、参数共享、分层搜索空间、网络转移、进化搜索或可微分搜索算法。
- 尽管这些方法可以通过重复堆叠被搜索的单元来生成移动大小的模型,但是它们没有将移动平台约束合并到搜索过程或搜索空间中。最近,MONAS、PPP-Net 、RNAS 和ParetoNASH 试图在搜索CNN时优化多个目标,如模型大小和准确性,但它们仅限于像CIFAR-10这样的小任务。相比之下,本文的目标是现实世界中的移动延迟约束,并侧重于更大的任务,如ImageNet分类和COCO对象检测。
Problem Formulation
-
本文将设计问题公式化为一个多目标搜索,旨在找到具有高精度和低推理延迟的CNN模型。与之前针对间接指标(如FLOPS或参数数量)进行优化的工作不同,本文通过在真实移动设备上运行CNN模型,然后将真实世界的推理延迟纳入本文的目标,来考虑直接的真实世界的推理延迟。这样做可以直接衡量在实践中可以实现什么:本文早期的代理推理指标实验,包括单核桌面CPU延迟和模拟成本模型,表明由于移动硬件/软件配置的多样性,接近真实世界的延迟是一项挑战。
-
给定一个模型m,让ACC(m)表示它在目标任务上的精度,LAT (m)表示在目标移动平台上的推理延迟,T是目标延迟。一种常见的方法是将T视为硬约束,并在此约束下最大化精度:
-
max m A C C ( m ) s u b j e c t t o L A T ( x ) < T ( 1 ) \max\limits_{m}\space ACC(m)\\ subject\space to \space\space LAT(x)<T\space\space(1) mmax ACC(m)subject to LAT(x)<T (1)
-
然而,这种方法只能最大化一个度量,而不能提供多个帕累托最优解。非正式地,一个模型被称为帕累托最优,如果它具有最高的准确性而不增加延迟,或者它具有最低的延迟而不降低准确性。考虑到执行架构搜索的计算成本,本文更感兴趣的是在单个架构搜索中找到多个Pareto最优解。
-
-
虽然文献中有许多方法(Deb 2014),但本文使用定制的加权乘积法1来逼近帕累托最优解,将优化目标设置为:
-
max m A C C ( m ) ∗ [ L A T ( m ) T ] m ( 2 ) \max\limits_{m}\space ACC(m)*[\frac{LAT(m)}{T}]^m\space (2) mmax ACC(m)∗[TLAT(m)]m (2)
-
其中w是权重因子,定义如下:
-
w = { α if LAT(m)>T β if otherwise w = \begin{cases} α &\text{if LAT(m)>T}\\ β &\text{if otherwise}\\ \end{cases} w={αβif LAT(m)>Tif otherwise
-
其中,α和β是特定应用的常数。选择α和β的一个经验规则是,如果本文将延迟加倍或减半,则检查预期的精度增益或损失是多少。例如,将MobileNetV2的延迟加倍或减半会带来5%的精度增益或损失,因此本文可以根据经验设置α=β= -0.07,因为 2 − 0.07 − 1 ≈ 1 − 0. 5 − 0.07 ≈ 5 % 2^{-0.07}- 1≈1-0.5 ^{-0.07}≈5\% 2−0.07−1≈1−0.5−0.07≈5%。通过以这种方式设置(α,β),上等式2可以有效地逼近目标等待时间T附近的帕累托解。
-
-
下图显示了具有两个典型值(α,β)的目标函数。在上图(α = 0,β= 1)中,如果测得的延迟小于目标延迟T,本文只需将精度作为目标值;否则,本文会严厉惩罚目标值,以阻止模型违反延迟约束。
-
上图的下面部分图(α=β= -0.07)将目标延迟T视为软约束,并根据测得的延迟平滑调整目标值。在本文中,本文设置α=β=-0.07,以便在单次搜索实验中获得多个帕累托最优模型。探索动态适应帕累托曲线的报酬函数将是一个有趣的未来方向。
Mobile Neural Architecture Search
Search Algorithm
-
受近期作品启发(Zoph和Le 2017Pham等人2018;刘等2018b),本文采用了一种基于梯度的强化学习方法来寻找本文的多目标搜索问题的帕累托最优解。本文选择强化学习是因为它很方便,奖励也很容易定制,但本文预计其他搜索算法如evolution (Real et al. 2018)也应该可行。
-
具体来说,本文遵循与(Zoph et al. 2018)相同的思想,将搜索空间中的每个CNN模型映射到一个令牌列表。这些标记由强化学习代理基于其参数θ的一系列动作 a i : T a_{i:T} ai:T确定。本文的目标是最大化预期回报:
-
J = E p ( a 1 : T ; θ ) [ R ( m ) ] ( 4 ) J=E_{p(a_{1:T};\theta)}[R(m)]\space (4) J=Ep(a1:T;θ)[R(m)] (4)
-
其中m是由动作 a 1 : T a_{1:T} a1:T唯一确定的采样模型,R(m)是由等式2定义的目标值。
-
-
如图(An Overview of Platform-Aware Neural Architecture Search for Mobile.)所示,搜索框架由三个组件组成:基于递归神经网络(RNN)的控制器、用于获得模型准确性的训练器,以及用于测量延迟的基于移动电话的推理引擎。
-
本文遵循众所周知的采样-评估-更新循环来训练控制器。在每一步,控制器首先使用其当前参数θ对一批模型进行采样,通过基于来自其RNN的softmax逻辑预测一系列表征。对于每个采样的模型m,本文在目标任务上训练它以获得其准确性ACC(m),并在真实手机上运行它以获得其推理延迟LAT (m)。
-
然后,本文使用等式2计算奖励值R(m)。在每一步结束时,控制器的参数θ通过使用近似策略优化最大化等式4定义的期望回报来更新(Schulman et al. 2017)。重复采样-评估-更新循环,直到达到最大步进数或参数θ收敛。
Factorized Hierarchical Search Space
- 如最近的研究所示(Zoph et al . 2018刘等2018b),定义明确的搜索空间对于神经架构搜索极其重要。本文将介绍一种新颖的分解式分层搜索空间,它将CNN层划分成组,并搜索每组的操作和连接。与之前的架构搜索方法(Zoph和Le 2017刘等;Real et al. 2018),它只搜索几个复杂的细胞,然后重复堆叠相同的细胞,本文简化了每个细胞的搜索空间,但允许细胞不同。
- 人们的直觉是,需要基于输入和输出形状搜索最佳操作,以获得最佳的精确延迟权衡。例如,CNN模型的早期阶段通常处理更大量的数据,因此对推理延迟的影响比后期阶段高得多。形式上,考虑广泛使用的深度方向可分离卷积核,表示为四元组(K,K,M,N),它将大小为(H,W,M)2的输入转换为大小为(H,W,N)的输出,其中(H,W)是输入分辨率,M,N是输入/输出滤波器大小。乘加计算的总数可以描述为:H ∗ W ∗ M ∗ (K ∗ K + N) 【表达式5】
- 其中,第一部分$H ∗ W ∗ M ∗ K ∗ K 用 于 深 度 方 向 卷 积 , 第 二 部 分 用于深度方向卷积,第二部分 用于深度方向卷积,第二部分H ∗ W ∗ M ∗ N $用于接下来的1×1卷积。这里,如果总的计算资源有限,本文需要仔细平衡内核大小K和滤波器大小N。例如,利用层的较大核大小K来增加有效感受野必须与减小同一层的滤波器大小N或者从其他层计算来平衡。
- 下图显示了本文的搜索空间的基线结构。本文将CNN模型划分为一系列预定义的块,逐渐降低输入分辨率并增加滤波器大小,这在许多CNN模型中很常见。每个块都有一个相同层的列表,其操作和连接由每个块的子搜索空间决定。具体地说,块i的子搜索空间由以下选项组成:
- 卷积ops ConvOp:常规conv (conv),深度方向conv (dconv),以及具有各种扩展比的移动反向瓶颈conv(Sandler et al . 2018)。
- 卷积核大小KernelSize: 3x3,5x5。
- 跳过操作SkipOp:最大或平均池化、标识残差跳过或无跳过路径。
- 输出滤波器尺寸Fi。
- 每个区块的层数Ni。
- - Factorized Hierarchical Search Space. 根据输入分辨率和过滤器大小,网络图层被分组为多个预定义的骨架,称为块。每个块包含可变数量的重复的相同层,其中如果输入/输出分辨率不同,则只有第一层具有跨距2,而所有其他层具有跨距1。对于每个块,本文搜索单层和层数N的操作和连接,然后相同的层重复N次(例如,层4-1到 4 − N 4 4-N_4 4−N4是相同的)。来自不同块的层(例如,层2-1和4-1)可以不同。
- ConvOp,KernelSize,SkipOp,Fi唯一地确定层的架构,而Ni确定该层对于该块重复多少次。例如,上图中块4的每一层都有一个反向瓶颈5×5卷积和一个恒等剩余跳跃路径,同一层重复 N 4 N_4 N4次。最终搜索空间是每个块的所有子搜索空间的串联。
- 本文的分解式层次搜索空间具有平衡层次多样性和总搜索空间大小的独特优势。假设本文将网络划分为B个块,并且每个块具有大小为S的子搜索空间,每个块平均有N层,那么本文的总搜索空间大小将是 S B S^B SB,乘以大小为 S B ∗ N S^{B*N} SB∗N的平坦每层搜索空间。在典型的N = 3的情况下,本文的搜索空间比平坦每层搜索空间小几个数量级。
Experimental Setup
- 在ImageNet或COCO这样的大型任务上直接搜索CNN模型是非常昂贵的,因为每个模型需要几天才能收敛。遵循之前工作中的常见做法(Zoph等人,2018年;Real et al. 2018),本文在一个较小的代理任务上进行本文的架构搜索实验,然后将架构搜索过程中发现的性能最佳的模型转移到目标全任务。然而,为准确性和延迟找到一个好的代理任务并不容易:必须考虑任务类型、数据集类型、输入图像大小和类型。
- 本文在CIFAR-10和Stanford Dogs数据集(Khosla等人,2011年)上的初步实验表明,当考虑到模型延迟时,这些数据集不是ImageNet的良好代理任务。在本文中,直接在ImageNet训练集上执行我们的架构搜索,但是具有较少的训练步骤。由于在体系结构搜索文献中通常有一个单独的验证集来衡量准确性,本文还保留了从训练集中随机选择的50K个图像作为固定验证集。在架构搜索期间,本文使用积极的学习时间表在代理训练集的5个epochs上训练每个采样模型,并在50K验证集上评估模型。同时,本文通过将模型转换为TFLite格式并在Pixel 1手机的单线程大CPU核心上运行,来测量每个采样模型的真实世界延迟。
- 总的来说,本文的控制器在架构搜索期间对大约8K个模型进行了采样,但是只有少数性能最佳的模型(< 15个)被转移到完整的ImageNet或COCO。请注意,在架构搜索期间,本文从不评估原始ImageNet验证数据集。
- 对于完整的ImageNet训练,本文使用带有decay 0.9和momentum 0.9的RMSProp优化器。在动量为0.9997的每个卷积层后添加批范数,权重衰减设置为0.00001。接下来(Goyal et al. 2017),本文在第一个5epochs热身训练阶段将学习率从0线性增加到0.256,然后每2.4个epochs将学习率衰减0.97。
- 这些超参数是通过对权重衰减{0.00001,0.00002}、学习率{0.256,0.128}和batchnorm动量{0.9997,0.999}的8个组合的小网格搜索来确定的。本文使用标准的Inception预处理,并将输入图像的大小调整为224 × 224,除非本文中有明确说明。
- 对于完整的COCO训练,本文将本文提出的学习的模型体系结构插入开源TensorFlow对象检测框架,作为一个新的特征提取器。物体检测训练设置设为与(Sandler et al. 2018)相同,包括输入大小320 × 320。
Results
ImageNet Classification Performance
-
下表显示了本文的模型在ImageNet上的性能(Russakovsky等人,2015年)。将本文的目标延迟设置为T = 80ms,类似于MobileNetV2 (Sandler et al. 2018),并在架构搜索期间使用α=β=-0.07的等式2作为本文的奖励函数。然后,本文从相同的搜索实验中挑选出三个性能最好的MnasNet模型,它们具有不同的延迟和准确性权衡,并将结果与现有的移动CNN模型进行比较。
- - - ImageNet分类的性能结果。将本文的MnasNet模型与手动设计的移动模型和其他自动化方法进行比较——MnasNet是本文的基线模型;MnasNet-65和MnasNet-92是来自同一架构搜索实验的两个延迟不同的模型(用于比较);+SE表示附加挤压和激励优化;#Parameters:可训练参数的数量;#Mult-Adds:每个图像的乘加操作次数;前1/5 Acc。:ImageNet验证集的前1名或前5名准确度;CPU延迟:Pixel 1手机上批量为1的推理延迟。
-
如表中所示,本文的MnasNet模型在Pixel手机上实现了74%的顶级精度,3.17亿次乘加和76毫秒延迟,为这种典型的移动延迟限制实现了新的最先进的精度。与近期的MobileNetV2相比,MnasNet在保持相同时延的情况下,top-1准确率提高了2%;在更精确的一端,MnasNet-92在相同的Pixel手机上实现了74.79%的顶级精度,运行速度比MobileNetV2快1.55倍。与最近自动搜索的CNN模型相比,本文的MnasNet运行速度比移动大小的NASNet-A 快2.4倍,精度相同。
-
为了公平比较,最近的挤压和激励优化(SE模块)不包括在本文的基线MnasNet模型中,因为上表中的所有其他模型都没有这种优化。然而,本文的方法可以利用这些最近引入的操作和优化。例如,通过合并上表中表示为(+SE)的squeezeand-excitation,本文的MnasNet92(+SE)模型实现了ResNet-50 级别的顶级精度76.13%,参数减少了19倍,乘加运算减少了10倍。
-
值得注意的是,本文仅针对学习速率、权重衰减、批量范数动量的8种组合来调整MnasNet的超参数,然后简单地对MnasNet-65和MnasNet-92使用相同的训练设置。因此,本文确认性能的提高来自于本文新颖的搜索空间和搜索方法,而不是训练设置。
Architecture Search Method
- 本文的多目标搜索方法允许本文通过将奖励等式2中的α和β设置为不同的值来处理硬延迟和软延迟约束。
- 下图显示了典型α和β的多目标搜索结果。当α = 0,β= -1时,延迟被视为硬约束,因此控制器倾向于在目标延迟值附近非常小的延迟范围内搜索模型。另一方面,通过设置α=β=-0.07,控制器将目标延迟视为软约束,并尝试在更宽的延迟范围内搜索模型。
- 基于等式2的多目标搜索结果,其中(a) α=0,β=-1;以及(b)α=β=-0.07。目标延迟为T = 80ms毫秒。图上面部分显示了1000个样本模型(绿点)的帕累托曲线(蓝线);图下面部分显示了模型延迟的直方图。
- 它在80毫秒的目标延迟值附近对更多模型进行了采样,但也研究了延迟小于60毫秒或大于110毫秒的模型。这允许本文在单个架构搜索中从Pareto曲线中挑选多个模型,如上表ImageNet分类的性能结果所示。
Sensitivity to Model Scaling
- 鉴于现实世界中存在的无数应用需求和设备异构性,开发人员通常会放大或缩小模型,以牺牲延迟或模型大小的准确性。一种常见的缩放技术是使用深度乘数来修改网络的滤波器大小,该技术以给定的比率修改每层中的滤波器数量。例如,与默认值相比,深度乘数为0.5会将每层中的通道数减半,从而显著减少计算资源、延迟和模型大小。另一种常见的模型缩放技术是在不改变网络参数数量的情况下减小输入图像尺寸。
- 下图比较了MnasNet和MobileNetV2在不同深度乘数和输入图像大小下的性能。当本文将深度乘数从0.35更改为1.4时,推理延迟也从20毫秒变化到130毫秒,但如下图a所示,对于每个深度乘数,本文的MnasNet模型始终比MobileNetV2实现更好的top-1准确性。类似地,本文的模型对输入大小的变化也很稳健,并且在从96到224的所有输入图像大小上始终优于MobileNetV2,如下图b所示。
- Performance Comparison with Different Model Scaling Techniques. MnasNet是本文的基线模型,如上表ImageNet分类的性能结果所示。本文使用与MobileNetV2相同的深度乘数和输入大小对其进行缩放。
- 除了模型缩放,本文的方法还能够为任何新的资源约束搜索新的架构。例如,一些视频应用可能需要低至25毫秒的模型延迟。为了满足这种约束,可以使用较小的输入大小和深度乘数来扩展基线模型,或者也可以搜索更适合这种新延迟约束的模型。
- 下图显示了这两种方法的性能比较。本文从(Sandler等人,2018年)所示的所有可能组合中选择最佳缩放参数(深度乘数=0.5,输入大小=192),并使用相同的缩放输入大小开始新的搜索。为了进行比较,下图还显示了在较小的17ms延迟约束下,在所有可能的参数中具有最佳精度的缩放参数(0.5,160)。如图所示,虽然本文的MnasNet在相同的扩展参数下已经优于MobileNetV2,但本文可以通过针对23毫秒延迟限制的新架构搜索来进一步提高准确性。
- Model Scaling vs. Model Search:MobileNetV2-scale:用(深度乘数,输入大小)= (0.5,160)和(0.5,192)缩放MobileNetV2,对应从左到右的点;mnasnet-scale:使用相同的深度乘数和输入大小缩放基线mnas-net;mnas-new-search:来自新架构搜索的模型,目标延迟为23毫秒。
COCO Object Detection Performance
- 对于COCO对象检测,本文选取了表ImageNet分类的性能结果中相同的MnasNet模型,并将其用作SSDLite的特征提取器,SSD是SSD的一个改进的资源高效版本(Sandler et al. 2018)。正如(Sandler等人,2018年)所建议的,只将本文的模型与其他SSD或YOLO检测器进行比较,因为本文设计的重点是设备上计算资源有限的移动设备。
- 下表显示了本文的MnasNet模型在COCO上的性能。YOLO和固态硬盘的结果来自(Redmon and Farhadi 2017),而移动互联网的结果来自(Sandler et al. 2018)。
- COCO对象检测的性能结果-# Parameters:可训练参数的数量;#Mult-Adds:每个图像的乘法-加法次数;mAP:test-dev 2017上的标准均值平均精度;mAPS,mAPM,mAPL:小、中、大物体的平均精度;CPU延迟:Pixel 1手机上的推理延迟。
- 本文在COCO trainval35k上训练MnasNet模型,并通过将结果提交到COCO服务器,在test-dev2017上对它们进行评估。如表中所示,本文的方法在MobileNet V1和V2上改进了推理延迟和映射质量(COCO挑战度量)。作为比较,本文稍大的MnasNet-92实现了与SSD300相当的地图质量(22.9比23.2),参数减少了7倍,乘加计算减少了35倍。
MnasNet Architecture and Discussions
-
下图(a)说明了表ImageNet分类的性能结果所示的基线MnasNet的神经网络架构。它由一系列线性连接的块组成,每个块由不同类型的层组成,如下图7(b) - (f)所示。正如所料,它利用深度方向卷积广泛跨越所有层,以最大限度地提高模型计算效率。
- Figure 7:MnasNet Architecture – (a)是表ImageNet分类的性能结果所示的MnasNet模型;(b) - (f)是多边核安全网的相应层次结构。
- MBConv表示移动反向瓶颈Conv,SepConv表示深度方向可分离conv,k3x3 / k5x5表示内核大小3x3或5x5,no_skip / id _skip表示无skip或同一性残差skip,H ×W ×F表示(高度、宽度、深度)的张量形状,而×1/2/3/4表示块内重复层数。
- 如果输入/输出分辨率不同,除了每个块的第一层具有跨距2之外,所有层都具有跨距1。值得注意的是,(d)和(f)也分别是MobileNetV2和MobileNetV1的基本构件。
-
此外,本文还观察到一些有趣的发现:
-
**MnasNet有什么特别之处?**为了更好地理解MnasNet模型与之前的移动CNN模型有何不同,本文注意到这些模型比之前的工作包含更多的5×5深度方向卷积,其中通常只使用3x3内核。事实上,对于深度方向可分离卷积,5×5内核确实比两个3×3内核更节省资源。在形式上,给定输入形状(H,W,M)和输出形状(H,W,N),让C5×5和C3×3分别表示由核为5×5和3×3的深度方向可分离卷积的乘加次数测量的计算成本:
-
C 5 ∗ 5 = H ∗ W ∗ M ∗ ( 25 + N ) C 3 ∗ 3 = H ∗ W ∗ M ∗ ( 9 + N ) = = > C 5 ∗ 5 < 2 ∗ C 3 ∗ 3 i f N > 7 C_{5*5}=H*W*M*(25+N)\\ C_{3*3}=H*W*M*(9+N)\\ ==> C_{5*5}<2*C_{3*3} \space if \space N>7 C5∗5=H∗W∗M∗(25+N)C3∗3=H∗W∗M∗(9+N)==>C5∗5<2∗C3∗3 if N>7
-
对于相同的有效感受野,当输入深度N > 7时,5×5核比2个3×3核具有更少的乘加。假设内核都得到了合理的优化,这可能解释了为什么本文的MnasNet在准确性和延迟都是优化指标的一部分时使用了许多5×5深度方向卷积。
-
层多样性重要吗?大多数常见的移动架构通常会多次重复一个架构主题,只是在整个模型中改变过滤器的大小和空间维度。如上图(b)、©、(d)、(e)和(f)所示,本文的分解式分层搜索空间允许模型在整个网络中具有不同类型的层,而V1和V2的MobileNet仅分别使用构建模块(f)和(d)。作为一项消融研究,下表比较了本文的MnasNet及其在整个网络中重复单一类型层的变体。如表中所示,MnasNet比那些变体具有更好的准确性-延迟权衡,这表明了层多样性在资源受限的CNN模型中的重要性。
- MnasNet及其变体的性能比较——mnasnet表示图(a)所示的相同模型;图(b)-(e)表示在整个网络中重复单一类型层的变体。所有模型都有相同的层数和每层相同的过滤器尺寸。
-
Conclusion
- 提出了一种自动神经结构搜索方法,用于使用强化学习设计资源高效的移动CNN模型。这种方法背后的关键思想是将平台感知的真实世界延迟信息结合到搜索过程中,并利用新颖的分解式分层搜索空间来搜索在准确性和延迟之间具有最佳折衷的移动模型。本文证明,本文的方法可以自动找到比现有方法明显更好的移动模型,并在典型的移动推理延迟约束下,在ImageNet分类和COCO对象检测上获得新的最先进的结果。由此产生的MnasNet架构还提供了一些有趣的发现,将指导设计下一代移动CNN模型。
强化学习 (Reinforcement Learning)
-
强化学习是机器学习领域之一,受到行为心理学的启发,主要关注智能体如何在环境中采取不同的行动,以最大限度地提高累积奖励。
-
强化学习这个概念是2017年乌镇围棋峰会上Alpha Go战胜了当时世界排名第一的柯洁而被普通大众知道,后面随着强化学习在各大游戏比如王者荣耀中被应用,而被越来越多的人熟知。王者荣耀AI团队,甚至在顶级期刊AAAI上发表过强化学习在王者荣耀中应用的论文。
-
基于环境的反馈而行动,通过不断与环境的交互、试错﹐最终完成特定目的或者使得整体行动收益最大化·强化学习不需要训练数据的label,但是它需头每一步行动环境给予的反馈﹐是奖励还是惩罚﹐反馈可以量化﹐基于反馈不断调整训练对复的行为。
-
强化学习主要由智能体(Agent)、环境(Environment)、状态(State)、动作(Action)、奖励(Reward)组成。
- **Agent(智能体):**强化学习训练的主体就是Agent,有时候翻译为“代理”,这里统称为“智能体”。
- **Environment(环境):**整个游戏的大背景就是环境;
- **State(状态):**当前 Environment和Agent所处的状态,State包含了Agent和Environment的状态。
- **Action(行动):**基于当前的State,Agent可以采取哪些action;
- **Reward(奖励):**Agent在当前State下,采取了某个特定的action后,会获得环境的一定反馈就是Reward。
-
智能体执行了某个动作后,环境将会转换到一个新的状态,对于该新的状态环境会给出奖励信号(正奖励或者负奖励)。随后,智能体根据新的状态和环境反馈的奖励,按照一定的策略执行新的动作。上述过程为智能体和环境通过状态、动作、奖励进行交互的方式。
-
智能体通过强化学习,可以知道自己在什么状态下,应该采取什么样的动作使得自身获得最大奖励。由于智能体与环境的交互方式与人类与环境的交互方式类似,可以认为强化学习是一套通用的学习框架,可用来解决通用人工智能的问题。因此强化学习也被称为通用人工智能的机器学习方法。
-
强化学习的主要特点
- **试错学习:**强化学习需要训练对象不停地和环境进行交互,通过试错的方式去总结出每一步的最佳行为决策,整个过程没有任何的指导,只有冰冷的反馈。所有的学习基于环境反馈,训练对象去调整自己的行为决策。
- **延迟反馈:**强化学习训练过程中,训练对象的“试错”行为获得环境的反馈,有时候可能需要等到整个训练结束以后才会得到一个反馈,比如Game Over或者是Win。当然这种情况,我们在训练时候一般都是进行拆解的,尽量将反馈分解到每一步。
- 时间是强化学习的一个重要因素:强化学习的一系列环境状态的变化和环境反馈等都是和时间强挂钩,整个强化学习的训练过程是一个随着时间变化,而状态&反馈也在不停变化的,所以时间是强化学习的一个重要因素。
- 当前的行为影响后续接收到的数据:为什么单独把该特点提出来,也是为了和监督学习&半监督学习进行区分。在监督学习&半监督学习中,每条训练数据都是独立的,相互之间没有任何关联。但是强化学习中并不是这样,当前状态以及采取的行动,将会影响下一步接收到的状态。数据与数据之间存在一定的关联性。
-
基于学习信号的结构复杂度和时序复杂度对机器学习方法
-
马尔可夫决策过程(Markov Decision Process, MDP)
-
本质上,RL是在解决时序上的决策问题,通过Agent与Environment不断交互获得Reward,并使得Reward最大的过程。在一个时序过程中,t时刻的状态 S t S_t St转移到t+1时刻状态 S t + 1 S_{t+1} St+1的状态转移概率受t时刻之间许多时刻的状态影响,这导致环境转化模型非常复杂,难以建模。因此,为了简化建模复杂度,个体可以通过构建马尔可夫决策过程来描述整个强化学习的决策过程。
-
不考虑动作 考虑动作 状态完全可见 马尔可夫链(MC) 马尔可夫决策过程(MDP) 状态不完全可见 隐马尔可夫模型(HMM) 不完全可观察马尔可夫决策过程(POMDP) -
MDP的理论基础是马尔可夫链,因此也被视为考虑了动作的马尔可夫模型 。在离散时间上建立的MDP被称为“离散时间马尔可夫决策过程(descrete-time MDP)”,反之则被称为“连续时间马尔可夫决策过程(continuous-time MDP)”。此外MDP存在一些变体,包括部分可观察马尔可夫决策过程、约束马尔可夫决策过程和模糊马尔可夫决策过程。
-
在应用方面,MDP被用于机器学习中强化学习(reinforcement learning)问题的建模 。通过使用动态规划、随机采样等方法,MDP可以求解使回报最大化的智能体策略 ,并在自动控制、推荐系统等主题中得到应用
-
马尔可夫决策过程:一个马尔可夫决策过程由一个四元组构成(S, A, Psa, R)
- S: 表示状态集(states)
- A:表示一组动作(actions)
- Psa: 表示状态转移概率。Psa 表示的是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况。比如,在状态s下执行动作a,转移到s’的概率可以表示为p(s’|s,a)
- R: S×A→ℝ,R是回报函数(reward function),回报函数有时也写作状态S的函数(只与S有关),这样的话,R可以简化为R: S→ℝ。
-
马尔可夫性质: P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,...,S_t) P(St+1∣St)=P(St+1∣S1,...,St),无后效性,当前状态只有上一个状态决定。
-
马尔可夫过程=状态+状态转移概率【其中Sunny S1和Rainy S2为状态,0.8是S1->S1’的状态转移概率】
-
马尔可夫过程+观测+释放概率=隐马尔可夫模型(HMM),相当于真实状态需要根据观察来进行推断。这里就体现了状态时隐的。对于释放概率就相当于通过观察来推断真实状态的概率。Emission Probability 为 P(Observation|Hidden)。这里会有三种问题产生:
- 求解隐状态的解码问题
- 求解观察情况的评估问题
- 求解释放概率的学习问题
-
马尔可夫过程+奖励=马尔可夫奖励过程(MRP)
- 即时奖励 R t + 1 R_{t+1} Rt+1
- 长期奖励 G t G_t Gt,长期奖励由即时奖励规则组合而来: G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . = ∑ k = 0 ∞ R t + k + 1 G_t=R_{t+1}+\gamma{R_{t+2}}+\gamma^2{R_{t+3}}+...=\sum_{k=0}^\infty{R_{t+k+1}} Gt=Rt+1+γRt+2+γ2Rt+3+...=∑k=0∞Rt+k+1。 γ \gamma γ为衰减系数。
- 价值函数
-
马尔可夫奖励过程+动作=马尔可夫决策过程
-
-
值函数(value function)与贝尔曼方程(Bellman equation)
神经架构搜索方法
-
神经架构搜索可以降低深度学习的门槛,有助于研究人员和从业人员更容易地使用深度学习。
-
经典的NAS方法使用RNN作为控制器(controller)产生子网络(child network),再对子网络进行训练和评估,得到其网络性能(如准确率),最后更新控制器的参数。然而,子网络的性能是不可导的,我们无法直接对控制器进行优化,幸好有强化学习这一利器,学者们采用了策略梯度的方法直接更新控制器参数。
-
受限于其离散优化的本质,这类方法有一个致命的缺点:太耗费计算资源了!例如,在CIFAR-10这么一个小数据集上进行搜索就需要800张GPU计算3到4周,受限于当时的深度学习框架,该论文甚至专门提出了基于参数服务器的分布式训练框架。如此巨大的算力需求实在是令人望洋兴叹。
-
首先我们来思考一下NAS为何如此耗时,在NAS中,为了充分挖掘每个子网络的“潜力”,控制器每次采样一个子网络,都要初始化其网络权重从头训练,那每次采样不重新初始化是不是就能大大减少训练时间?为此,后面有人提出了ENAS,即Efficient NAS,顾名思义,其目的就是提高NAS的搜索效率。
-
ENAS将搜索空间表示为一个有向无环图(DAG),其中的任一子图都代表了一个网络结构,每个节点代表了局部的计算,如矩阵乘法,而节点间的有向连接代表了信息的流动。
-
所谓的权重共享,也就是不同的网络结构共享整个有向无环图节点上的参数。如下图所示,其中左边是一有向无环图,假设红色的连接被控制器选中,我们就可以将其转换为右边的网络结构,其中包含4个计算节点,而输入输出是固定的节点,此外激活函数也是控制器选择出来的。ENAS提出的权重共享,极大地减少搜索时间,使用一张GTX1080Ti只需10小时就可以完成在CIFAR-10上的搜索。
-
虽然方法层出不穷,但基本都包括这三大部分:
- 定义搜索空间;
- 执行搜索策略采样网络;
- 对采样的网络进行性能评估。
-
搜索空间,即待搜索网络结构的候选集合。搜索空间大致分为全局搜索空间和基于细胞的搜索空间,前者代表搜索整个网络结构,后者只搜索一些小的结构,通过堆叠、拼接的方法组合成完整的大网络。
- 如下图(a)所示,早期的NAS的搜索空间是链式结构,搜索的内容只是网络的层数、每层的类型和对应的超参数。而后受到ResNet等网络的启发,跳跃连接、分支结构也被引入了搜索空间中,如下图(b)所示。
- 搜索空间的复杂程度决定了网络结构的潜力,最近的一些工作表明,精心设计的搜索空间可以大大提高网络性能的下限,换言之,在这些空间里进行随机搜索也能取得不错的效果。目前最先进的方法都得益于其适当的搜索空间,而且几乎都是类似于下图中的细胞结构,既减少了搜索代价,也提高了结构的可迁移性。
自学ing