乐趣区

关于算法:FBNetFBNetV2FBNetV3Facebook在NAS领域的轻量级网络探索-轻量级网络

FBNet 系列是齐全基于 NAS 办法的轻量级网络系列,剖析以后搜寻办法的毛病,逐渐减少创新性改良,FBNet 联合了 DNAS 和资源束缚,FBNetV2 退出了 channel 和输出分辨率的搜寻,FBNetV3 则是应用准确率预测来进行疾速的网络结构搜寻

起源:晓飞的算法工程笔记 公众号

FBNet


论文: FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search | CVPR 2019

  • 论文地址:https://arxiv.org/abs/1812.03443
  • 论文代码:https://github.com/facebookresearch/mobile-vision

Introduction

  近期卷积网络的设计除了重视准确率之外,还须要兼顾运行性能,特地是在挪动设施上的运行性能,这使得卷积神经网络的设计变得更加难,次要有以下难点:

  • Intractable design space,因为卷积网络参数很多,导致设计空间十分复杂,目前很多办法提出自动化搜寻,可能简化人工设计的流程,但这种办法个别须要大量的算力。
  • Nontransferable optimality,卷积网络的性能取决于很多因素,比方输出分辨率和指标设施,不同的分辨率须要调整不同的网络参数,而雷同 block 在不同的设施上的效率也可能大不相同,所以须要对网络在特定的条件下进行特定的调优。
  • Inconsistent efficiency metrics,大多数效率指标不仅与网络结构相干,也和指标设施上的软硬件设置无关。为了简化,很多钻研都采纳硬件无关的指标来示意卷积的效率,比方 FLOPs,但 FLOPs 并不能总等同于性能,还跟 block 的实现形式相干,这使得网络的设计更加艰难。

  为了解决以上问题,论文提出 FBNet,应用可微神经网络搜寻 (DNAS) 来发现硬件相干的轻量级卷积网络,流程如图 1 所示。DNAS 办法将整体的搜寻空间示意为超网,将寻找最优网络结构问题转换为寻找最优的候选 block 散布,通过梯度降落来训练 block 的散布,而且能够为网络每层抉择不同的 block。为了更好的预计网络的时延,事后测量并记录了每个候选 block 的理论时延,在估算时间接依据网络结构和对应的时延累计即可。

Method

  DNAS 将网络结构搜寻问题公式化为:

  给定构造空间 $\mathcal{A}$,寻找最优的构造 $a\in \mathcal{A}$,在训练好权值 $w_a$ 后,能够满足最小化损失 $\mathcal{L}(a, w_a)$,论文次要集中于 3 个因素:搜寻空间 $\mathcal{A}$、思考理论时延的损失函数 $\mathcal{L}(a, w_a)$ 以及高效的搜索算法。

  • The Search Space

  之前的办法大都搜寻单元构造,而后重叠成残缺的网络,但实际上,雷同的单元构造在不同的层对网络的准确率和时延的影响是大不相同的。为此,论文结构了整体网络结构 (macro-architecture) 固定的 layer-wise 搜寻空间,每层能够抉择不同构造的 block,整体网络结构如表 1 所示,前一层和后三层的构造是固定的,其余层的构造须要进行搜寻。后面的层因为特色分辨率较大,人工设定了较小的核数量以保障网络的轻量性。

  layer-wise 搜寻空间如图 3 所示,基于 MobileNetV2 和 ShuffleNet 的经典结构设计,通过设定不同的卷积核大小 $K$(3 或 5)、扩大率 $e$ 以及分组数来结构成不同的候选 block。若 block 的输出和输入分辨率统一,则增加 element-wise 的 shortcut,而若应用了分组卷积,则须要对卷积输入进行 channel shuffle。

  论文的试验蕴含 9 种候选 block,每种 block 的超参数如表 2 所示。另外,还有 skip 构造,间接映射输出到输入,用来缩短整体网络的深度。总体而言,整体网络蕴含 22 个须要搜寻的层,每层从 9 个候选 block 中抉择,共有 $9^{22}$ 种可能的构造。

  • Latency-Aware Loss Function

      公式 1 中的损失函数不仅要反映准确率,也要反馈指标硬件上的时延。因而,定义以下损失函数:

  $CE(a, w_a)$ 示意穿插熵损失,$LAT(a)$ 示意以后构造在指标硬件上的时延,$\alpha$ 管制整体损失函数的幅值,$\beta$ 调整时延项的幅值。时延的计算可能比拟耗时,论文应用 block 的时延 lookup 表格来预计网络的的整体:

  $b^{(a)}_l$ 为构造 $a$ 中 $l$ 层的 block,这种预计办法假如 block 间的计算互相独立,对 CPUs 和 DSPs 等串行计算设施无效,通过这种办法,可能疾速预计 $10^{21}$ 种网络的理论时延。

  • The Search Algorithm

      论文将搜寻空间示意为随机超网,超网为表 1 整体构造,每层蕴含 9 个表 2 的并行 block。在推理的时候,候选 block 被执行的概率为:

  $\theta_l$ 蕴含决定 $l$ 层每个候选 block 采样概率的参数,$l$ 层的输入可示意为:

  $m_{l,i}$ 是 $\{0, 1\}$ 随机变量,依据采样概率随机赋值,层输入为所有 block 的输入之和。因而,网络结构 $a$ 的采样概率可示意为:

  $\theta$ 蕴含所有 block 的 $\theta_{l,i}$,基于下面的定义,能够将公式 1 的离散优化问题转换为:

  这样,权值 $w_a$ 是可导的,但 $\theta$ 依然不可导,因为 $m_{l,i}$ 的定义是离散的,为此将 $m_{l,i}$ 的生成办法转换为 Gumbel Softmax:

  $g_{l,i} \sim Gumbel(0,1)$ 为 Gumbel 散布的随机噪声,$\tau$ 为温度参数。当 $\tau$ 靠近 0 时,$m_{l,i}$ 相似于 one-shot,当 $\tau$ 越大时,$m_{l,i}$ 相似于间断随机变量。这样,公式 2 的穿插熵损失就能够对 $w_a$ 和 $\theta$ 求导,而时延项 $LAT$ 也能够改写为:

  因为应用 lookup 表格,所以 $LAT(b_{l,i})$ 是个常量因子,网络 $a$ 的整体时延对 $m_{l,i}$ 和 $\theta_{l,i}$ 也是可导的。至此,损失函数对权值 $w_a$ 和构造变量 $\theta$ 都是可导的,能够应用 SGD 来高效优化损失函数。
  搜寻过程等同于随机超网的训练过程,在训练时,计算 $\partial\mathcal{L}/\partial w_a$ 更新超网每个 block 的权值,在 block 训练后,每个 block 对准确率和时延的奉献不同,计算 $\partial\mathcal{L}/\partial \theta$ 来更新每个 block 的采样概率 $P_{\theta}$。在超网训练完后,通过采样网络散布 $P_{\theta}$ 失去最优的网络结构。

Experiments

  与各轻量级网络比照在 ImageNet 上的性能比照。

  特定资源和设施条件下的性能比照。

Conclustion

  论文提出一种可微的神经网络搜寻办法,将离散的单元构造抉择转换为间断的单元构造概率分布,另外将指标设施时延退出到优化过程中,联合超网的权值共享,可能疾速地端到端地生成特定条件下的高性能轻量化网络。不过论文的 block 框架基于目前支流 MobileNetV2 和 ShuffleNet 设计,更多地是对其构造参数进行搜寻,所以在网络结构有肯定的解放。

FBNetV2


论文: FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions | CVPR 2020

  • 论文地址:https://arxiv.org/abs/2004.05565
  • 论文代码:https://github.com/facebookresearch/mobile-vision

Introduction

  DNAS 通过训练蕴含所有候选网络的超网来采样最优的子网,尽管搜寻速度快,但须要消耗大量的内存,所以搜寻空间个别比其它办法要小,且内存耗费和计算量耗费随搜寻维度线性减少。

  为了解决这个问题,论文提出 DMaskingNAS,将 channel 数和输出分辨率别离以 mask 和采样的形式退出到超网中,在带来大量内存和计算量的状况下,大幅减少 $10^{14}$ 倍搜寻空间。

Channel Search

  DNAS 个别将候选 block 都实例化在超网中,在训练过程中对候选 block 进行抉择,间接将 channel 维度退出到搜寻空间会减少会减少大量的内存以及计算量。

  惯例的实现办法如 Step A,将不同大小的卷积都实例化,为了使得不同维度卷积的输入能够交融,对维度较小的特色进行 Step B 的 zero padding。Step B 可转换成如 Step C,3 个卷积输入一样大小的特色,再用 3 个不同的 mask 对输入进行 mask(蓝色为 0,红色为 1)。因为 Step C 的 3 个卷积大小和输出都一样,能够用一个权值共享卷积进行实现,即 Step D。将 Step D 的 mask 先合并,再与卷积输入相乘,这样能够省计算量和内存,最终失去 Step E,仅须要 1 次卷积和 1 份特色图即可。

Input Resolution Search

  跟 channel 退出搜寻空间相似,输出分辨率,DNAS 的实现形式也是为每个不同输出分辨率实例化所有的层,这样会减少成倍的计算量和内存,还有一些难以避免的问题:

  • 特色输入无奈交融。输出分辨率不同的 block 的输入大小不同,如图 A,不能进行间接的交融。个别可进行如图 B 的 zero padding 解决大小统一问题,但这会造成像素不对齐的问题,所以采纳图 C 的 Interspersing zero-padding 采样办法 (最近邻 +zero-padding) 来防止像素不对齐以及像素净化。
  • 采样的特色图导致感触域减小。如图 D,假如 F 为 $3\times 3$ 卷积,采样后的特色图导致单次卷积只笼罩了 $2\times 2$ 的无效输出,所以在进行卷积操作前需对采样后的特色图进行压缩,卷积操作完后再扩大复原,如图 E。实际上图 E 可通过空洞卷积进行实现,即防止了额定的内存申请,也防止了卷积核的批改。

  论文在试验局部没有对输出分辨率的配置和搜寻过程进行形容,只是展现了试验后果,而作者只开源了搜寻失去的网络,没有开源搜寻代码。这里猜想应该搜寻时应用同一个超网对不同的分辨率输出进行特征提取,而后合并最终输入进行训练,最初取权重最大的分辨率,如图 2 所示,$F$ 为共用的超网,如果有理解的敌人麻烦告知下。

Experiments

  搜寻时设定的整体网络结构以及每个候选 block,共蕴含 $10^{35}$ 个候选网络。

  搜寻失去的多个 FBNetV2 网络,每个网络都对应不同的资源需要。

  与其它网络的性能比照。

Conclustion

  之前提到 FBNet 的 block 框架基于目前支流 MobileNetV2 和 ShuffleNet 设计,更多地是对其构造参数进行搜寻,所以在网络结构有肯定的解放。FBNetV2 马上来了个 $10^{14}$ 倍的晋升,各方面成果也比目前大多数的网络要好,但整体看下来,论文更像一个量化办法,因为基底还是固定为现有网络的结构设计。

FBNetV3


论文: FBNetV3: Joint Architecture-Recipe Search using Neural Acquisition Function

  • 论文地址:https://arxiv.org/abs/2006.02049

Introduction

  FBNetV3 目前只放在了 arxiv 上,论文认为目前的 NAS 办法大都只满足网络结构的搜寻,而没有在意网络性能验证时的训练参数的设置是否适合,这可能导致模型性能降落。为此,论文提出 JointNAS,在资源束缚的状况下,搜寻最精确的训练参数以及网络结构。

JointNAS

  JointNAS 优化指标可公式化为:

  $A$、$h$ 和 $\Omega$ 别离代表网络结构 embedding、训练参数 embedding 和搜寻空间,$acc$ 计算以后构造和训练参数下的准确率,$g_i$ 和 $\gamma$ 别离为资源耗费计算和资源数量。

  JointNAS 的搜寻过程如 Alg. 1 所示,将搜寻分为两个阶段:

  • 粗粒度阶段(coarse-grained),该阶段次要迭代式地寻找高性能的候选网络结构 - 超参数对以及训练准确率预测器。
  • 细粒度阶段(fine-grained stages),借助粗粒度阶段训练的准确率预测器,对候选网络进行疾速的进化算法搜寻,该搜寻集成了论文提出的超参数优化器 AutoTrain。

Coarse-grained search: Constrained iterative optimization

  粗粒度搜寻生成准确率预测器和一个高性能候选网络集。

  • Neural Acquisition Function

  预测器的构造如图 4 所示,蕴含一个构造编码器以及两个 head,别离为辅助的代理 head 以及准确率 head。代理 head 预测网络的属性(FLOPs 或参数量等),次要在编码器预训练时应用,准确率 head 依据训练参数以及网络结构预测准确率,应用代理 head 预训练的编码器在迭代优化过程中进行 fine-tuned。

  • Step 1. Pre-train embedding layer

  预测器蕴含一个预训练过程,首先训练模型以网络结构作为输出,预测网络的属性(FLOPs 或参数量等),这样的训练数据是很容易获取的,随机生成大量网络并计算其属性即可,而后将编码器共享给准确率 head,再正式开展后续的网络搜寻中。编码器的预训练可能显著进步预测器的准确率和稳定性,成果如图 5 所示。

  • Step 2. Constrained iterative optimization

      首先应用拟蒙特卡罗从搜寻空间采样网络结构 - 超参数对,而后迭代地训练预测器:

  • 基于预测器后果抉择一个 batch 符合条件的网络结构 - 超参数对

  1. 训练和测试网络结构 - 超参数对的准确率,训练采纳了早停策略。取第一次迭代的网络的最终准确率以及每个 epoch 的准确率,绘制每个 epoch 的网络排名与最终排名相关性曲线,如图 3 所示,取相关性为 0.92 的周期作为训练周期。
  2. 更新预测器,预测器的前 50 个 epoch 固定编码器参数,后续采纳学习率逐渐降落的学习测量。准确率预测 head 应用 Huber loss 进行训练,能扛住异样点对模型训练的影响。

  这个迭代过程可能缩小候选者的数量,防止了不必要的验证,进步摸索效率。

Fine-grained search: Predictor-based evolutionary search

  第二阶段应用自适应的基因算法,抉择第一阶段的最优网络结构 - 训练参数对作为第一代种群。在每轮迭代中,对种群进行渐变产生满足束缚的新子群,应用粗粒度阶段训练的预测器来疾速预测个体的得分,抉择最优的 $K$ 个网络结构 - 训练参数对作为下一代种群。计算以后迭代绝对于上一轮迭代的最高得分增长,当增长不够时退出,失去最终的高准确率网络结构以及相应的训练参数。
  须要留神,当资源束缚扭转时,预测器仍然能够重复使用,可能疾速地应用细粒度阶段搜寻到适合的网络结构和训练参数。

Search space

  搜寻空间如表 1 所示,共蕴含 $10^{17}$ 种网络结构以及 $10^{7}$ 种训练超参数。

Experiments

  固定网络结构,测试训练参数搜寻的有效性。

  与其它网络进行 ImageNet 性能比照。

Conclustion

  FBNetV3 齐全脱离了 FBNetV2 和 FBNet 的设计,应用的准确率预测器以及基因算法都曾经在 NAS 畛域有很多利用,次要亮点在于将训练参数退出到了搜寻过程中,这对性能的晋升非常重要。

Conclustion


  FBNet 系列是齐全基于 NAS 办法的轻量级网络系列,剖析以后搜寻办法的毛病,逐渐减少创新性改良,FBNet 联合了 DNAS 和资源束缚,FBNetV2 退出了 channel 和输出分辨率的搜寻,FBNetV3 则是应用准确率预测来进行疾速的网络结构搜寻,期待残缺的代码开源。



如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

退出移动版