S2DNAS 最外围的点在于设计了丰盛而简洁的搜寻空间,从而可能应用惯例的 NAS 办法即可进行动静推理网络的搜寻,解决了动静推理网络的设计问题,可进行任意指标网络的转换
起源:晓飞的算法工程笔记 公众号
论文: S2DNAS: Transforming Static CNN Model for Dynamic Inference via Neural Architecture Search
- 论文地址:https://arxiv.org/abs/1911.07033v2
Introduction
最近,动静推理作为晋升网络推理速度的无效办法,失去了大量关注。绝对于剪枝、量化等动态操作,动静推理可能依据样本的难易水平抉择适合的计算图,能够很好地均衡准确率和计算耗费,公众号之前也发过一篇相干的 Resolution Adaptive Networks for Efficient Inference,有趣味能够看看。为了实现动静推理,大多数的工作都须要专门的策略来动静地依据输出样本跳过某些计算操作。
一种经典的办法上在惯例卷积网络上增加两头预测层,如图 a 所示,当两头预测后果的置信度大于阈值,则提前退出。但晚期的分类器没有利用深层的语义特色(低分辨率的高维特色),可能会导致显著的准确率降落。
为了解决上述问题,MSDNet 设计了二维 (Layer-Scale) 多阶段架构来获取各层的粗粒度特色和细粒度特色,如图 b 所示,每个预测层都能利用深层的语义特色,可达到较好的准确率。然而,MSDNet 是精心设计的专用网络结构,若须要转换其它指标网络,则须要从新设计相似的范式。
为了解决上述问题且不须要从新设计网络结构,论文提议将指标网络转换成 channel-wise 多阶段网络,如图 c 所示。该办法放弃指标网络的构造,在 channel 层面将指标网络分成多个阶段,仅在最初的卷积层增加预测器。为了升高计算量,每个阶段的 channel 数都绝对缩小。基于图 c 的思维,论文提出通用构造 S2DNAS,可能主动地将指标网络转换成图 c 架构的动静网络。
Overview of S2DNAS
给定指标网络,S2DNAS 的转换流程如图 2 所示,次要蕴含两个模块:
- S2D(static-todynamic),生成指标网络特定的搜寻空间,由指标网络通过预设的转换方法生成的多阶段网络组成。
- NAS,在生成的搜寻空间中应用强化学习搜寻最优的模型,设计了可能反映准确率和资源耗费的回报函数。
The Details of S2D
给定指标网络 $\mathbb{M}$,S2D 生成蕴含由 $\mathbb{M}$ 转换的多个网络的搜寻空间 $\mathcal{Z}$,如图 3 所示,转换过程蕴含 split 操作和 concat 操作:
- split 操作在 channel 层面上将指标网络宰割成多阶段子网,在每个阶段最初增加分类器。
- concat 操作是为了减少阶段间的特色交互,强制以后阶段的分类器复用后面阶段的某些特色。
Notation
首先定义一些符号,$X^{(k)}=\{x^{(k)}_1, \cdots, x^{(k)}_C \}$ 为第 $k$ 层输出,$C$ 为输出维度,$W^{k}=\{w^{(k)}_1, \cdots, w^{(k)}_O \}$,$O$ 为输入维度,$w^{(k)}_i\in \mathbb{R}^{k_c\times k_c\times C}$,转换操作的指标是将指标网络 $\mathbb{M}$ 转换成多阶段网络 $a=\{f_1,\cdots, f_s \}$,$f_i$ 为 $i$ 阶段的分类器。
Split
Split 操作将输出维度的子集赋予不同阶段的分类器,假如阶段数为 $s$,间接的办法将输出维度分成 $s$ 个子集,而后将 $i$ 个子集赋予 $i$ 个分类器,但这样会生成较大的搜寻空间,妨碍后续的搜寻效率。为了升高搜寻空间的复杂度,论文先将输出维度分成多组,而后将组分成 $s$ 个子集赋予不同的分类器。
具体地,将输出维度分成 $G$ 组,每组蕴含 $m=\frac{C}{G}$ 维,以 $k$ 层为例,分组为 $X^{(k)}=\{x^{(k)}_1, \cdots, x^{(k)}_G \}$,$X^{(k)}_i=\{x^{(k)}_{(i-1)m+1}, \cdots, x^{(k)}_{im} \}$。当分组实现后,应用宰割点 $(p^{(k)}_0, p^{(k)}_1, \cdots, p^{(k)}_{s-1}, p^{(k)}_s)$ 标记分组的调配,$p^{(k)}_0=0$ 和 $p^{(k)}_s=G$ 为两个非凡点,将维度分组 $\{X^{(k)}_{p^{(k)}_{i-1}+1}, \cdots, X^{(k)}_{p^{(k)}_{i}}\}$ 分给 $i$ 阶段的分类器 $f_i$。
Concat
Concat 操作用于减少阶段间的特色交互,使得分类器可能复用后面阶段的特色。批示矩阵 $\{I^{(k)}\}^L_{k=1}$ 用来表明不同地位的特色是否复用,$k$ 为层数,$L$ 为网络的深度,成员 $m^{(k)}_{ij} \in I^{(k)}$ 表明是否在 $j$ 阶段复用 $i$ 阶段的 $k$ 层特色。这里有两个限度,首先只能复用后面阶段的特色 $m^{(k)}_{ij}=0, j<i, \forall k < L$,其次 $L$ 层必须复用后面所有阶段的特色。
Architecture Search Space
基于下面的两种转换操作,S2D 能够生成蕴含丰盛多阶段网络的搜寻空间。不同宰割点和批示矩阵有不同的意义,调整宰割点可能扭转分组特色的调配形式,从而扭转不同阶段分类器在准确率和资源耗费上的 trade-off,而调整批示矩阵则随同特色复用策略的扭转。为了升高搜寻空间的大小,在试验时规定指标网络中雷同特色大小的层应用雷同的宰割点和批示矩阵。
The Details of NAS
在生成搜寻空间后,下一个步骤就是找到最优的动静网络结构,搜寻过程将网络 $a$ 示意为两种转换的设置,并标记 $\mathcal{Z}$ 为蕴含不同设置的空间。论文采纳 NAS 罕用的 policy gradient based 强化学习办法进行搜寻,该办法的指标是优化策略 $\pi$,进而通过策略 $\pi$ 失去最优的网络结构,优化过程可公式化为嵌套的优化问题:
$\theta_a$ 是网络 $a$ 的权值,$\pi$ 是用来生成转换设置的策略,$\mathcal{D_{val}}$ 和 $\mathcal{D_{train}}$ 标记验证集和训练集,$R$ 为验证多阶段网络性能的回报函数。为了解决公式 1 的优化问题,须要解决两个子问题,依据 $\theta^{*}_a$ 优化策略 $\pi$ 和优化网络 $a$ 的 $\theta_{a}$。
Optimization of the Transformation Settings
与之前的 NAS 办法相似(公众号有很多 NAS 的论文解读,能够去看看),应用 RNN 生成指标网络每层的不同转换设置的散布,而后 policy gradient based 算法会优化 RNN 的参数来最大化回报函数:
$ACC(a, \theta_a, \mathcal{D})$ 为准确率,$COST(a, \theta_a, \mathcal{D})$ 为动静推理的均匀资源耗费。为了与其它动静推理钻研比拟,采纳 FLOPs 示意计算耗费,$w$ 为均衡准确率和资源耗费的超参数。
Optimization of the Multi-stage CNN
应用梯度降落来优化内层的优化问题,批改惯例的分类损失函数来适应多阶段模型的训练状况:
$CE$ 为穿插熵损失函数,公式 3 可认为是间断训练不同阶段的分类器,可应用 SGD 及其变种进行参数 $\theta$ 的优化。为了缩短训练工夫,仅用几个训练周期来靠近 $\theta^{*}$,没有残缺地训练网络到收敛。训练实现后,在测试集进行回报函数的测试,优化 RNN。最初抉择 10 个搜寻过程中最优的网络结构进行残缺地训练,抉择性能最好的网络结构输入。
Dynamic Inference of the Searched CNN
对于最优的多阶段网络 $a=\{f_1, \cdots, f_s \}$ 后,在应用时为每个阶段预设一个阈值。按计算图顺次进行多阶段推理,当该阶段的预测后果达到阈值时,则进行后续的推理,间接应用该阶段后果。
Experiments
与多种类型的减速办法比照不同指标网络的转化后性能。
与 MSDNet 进行 DenseNet 转换性能比照。
不同指标网络转换后各阶段的性能比照。
准确率与计算量间的 trade-off。
多阶段 ResNet-56 在 CIFAR-10 上的模型。
Conclustion
S2DNAS 最外围的点在于设计了丰盛而简洁的搜寻空间,从而可能应用惯例的 NAS 办法即可进行动静推理网络的搜寻,解决了动静推理网络的设计问题,可进行任意指标网络的转换。不过 S2DNAS 没有颁布搜寻工夫,而在采纳网络训练的时候仅用大量训练周期,没有列出验证训练形式和残缺训练得出的准确率是否有偏差。此外,S2DNAS 的外围是将动态网络转换成动静网络,如果转换时可能将动态网络的权值用上,能够更有意义,不然间接在指标数据集上搜寻就好了,没必要转换。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】