FBNet: Hardware-Aware Efficient ConvNet Designvia Differentiable Neural Architecture Search
Abstract
-
ConvNet体系结构的优化取决于输入分辨率和目标设备等因素
-
作者提出了一种可微的神经网络搜索体系,可以利用梯度下降法去优化
-
code adress:https://github.com/facebookresearch/mobile-vision
1. Introduction
- 在以往的工作中,准确率的提升需要耗费大量的算力,这就限制了直接将其移植到移动端
- 所以,除了准确率,现在的工作也关注网络的延迟性
设计一个高效的网络具有一下两个挑战
Intractable design space
- kernel size和filer数量的多选择性造就了网络结构的指数型增长
- 训练其中一个结构并得到效果需要大量的时间
手工设计:
- 最近的工作采用神经结构搜索(NAS)来自动探索设计空间,多数都是利用RL
- 为了节约成本,一般采用小样本数据集或者只训练有限的epoch
- 实验证明该方法有效,但任然耗时较多
Nontransferable optimality
- 针对不同的设备和不同的输入,其最优的结构都是有区别的
- 对于输入问题,一个通用的方法是缩减输入图片的像素
- 在不同的设备会有不同的延迟性
- 我们需要设计一个“就事论事“的网络结构
Inconsistent efficiency metrics
我们关心的大多数效率指标不仅依赖于convNet架构,还依赖于目标设备上的硬件和软件配置,在本文中,主要关注延迟性
- 作者提出使用可微分神经网络搜索(DNAS)解决硬件问题
- DNAS通过一个超级网络表现搜索空间
- 作者将搜索最优网络结构问题放缩为寻找一个可以获得最优结构的分布
- loss function包括一个cross-entropy(让准确率最优)和一个latency loss(让延迟性最优)
- 通过搜索空间来计算每个操作器的延迟
- 作者将自己的网络称为FBNets
2. Related work
Efficient ConvNet models:
Neural Architecture Search:
- 最开始是利用强化学习进行搜寻最优网络结构
- 之后的研究是通过权重共享来降低计算消耗
- 然后是结合Gumble softmax进一步发展了可微神经网络结构搜索的思想
- 近期工作是关注cell-level的结构搜索,让后将相同的细胞结构分配到每一层
- 现在是探索stage-level的搜索空间,允许不同的block应用在不同的stages,在每个stage中的blocks是相同的
3. Method
优化问题:
min
a
∈
A
min
w
a
L
(
a
,
w
a
)
(1)
\min_{a\in A} \min_{w_{a}}L(a,w_{a})\tag{1}
a∈AminwaminL(a,wa)(1)
A是结构搜索空间,a是其中一种结构
3.1. The Search Space
- 作者的方法允许不同的layer选择不同的block,以此获取较好的准确率和效率
- 该方法有一个固定的大结构——在每一个layer中都包含多个block,并且定义了layer的数量和输入输出的维度
- 第一层和最后三层是固定的,不做调整;剩余的其它层需要利用搜索方法进行最优选择
- 每一个可优化的layer都包含多个block,block包含在layer级别的搜索空间;block的结构如下所示:
- 1 x 1 卷积 + ReLU
- k x k 卷积 + ReLU
- 1 x 1 卷积
- 如果该输出与输入维度相同,则可增加一个residual结构
主结构
block结构
在上图中的e是一个超参数,控制输出维度
block搜索空间
3.2. Latency-Aware Loss Function
为了考虑到延迟问题,作者提出了一个新的优化方程:
L
(
a
,
w
a
)
=
C
E
(
a
,
w
a
)
⋅
α
log
(
L
A
T
(
a
)
)
β
(2)
L(a,w_{a})=CE(a,w_{a})\cdot \alpha\log(LAT(a))^{\beta}\tag{2}
L(a,wa)=CE(a,wa)⋅αlog(LAT(a))β(2)
延迟可以通过查表计算,将查到的每个延迟相加即可
L
A
T
(
a
)
=
∑
l
L
A
T
(
b
l
(
a
)
)
(3)
LAT(a)=\sum_{l}LAT(b_{l}^{(a)})\tag{3}
LAT(a)=l∑LAT(bl(a))(3)
3.3. The Search Algorithm
作者采用了一个不同的范式解决问题(1)
-
首先,通过随机超级网络表达搜索空间,该超级网络结构与table1相同,他的每一个layer包含9个待选择block(如table2所示)
-
通过推理以后,只有个备选block可以被使用,选择方式通过下面的采样概率实现:
P θ ( b l = b l , i ) = s o f t m a x ( θ l , i ; θ l ) = e x p ( θ l , i ) ∑ i e x p ( θ l , i ) (4) P_{\theta}(b_{l}=b_{l,i})=softmax(\theta_{l,i};\theta_{l})=\frac{exp(\theta_{l,i})}{\sum_{i}exp(\theta_{l,i})}\tag{4} Pθ(bl=bl,i)=softmax(θl,i;θl)=∑iexp(θl,i)exp(θl,i)(4)
θ
l
\theta_{l}
θl包含了决定
l
l
l层采样概率的所有参数,第
l
l
l层的输出可以写成:
x
l
+
1
=
∑
i
m
l
,
i
⋅
b
l
,
i
(
x
l
)
(5)
x_{l+1}=\sum_{i}m_{l,i}\cdot b_{l,i}(x_{l})\tag{5}
xl+1=i∑ml,i⋅bl,i(xl)(5)
$m_{l,i}是一个{0,1}变量,决定了选择哪一个block
每一层的选择对于其它层都是独立的,因此结构a的采样概率分布为:
P
θ
(
a
)
=
∏
l
P
θ
(
b
l
=
b
l
,
i
(
a
)
)
(6)
P_{\theta}(a)=\prod_{l}P_{\theta}(b_{l}=b_{l,i}^{(a)})\tag{6}
Pθ(a)=l∏Pθ(bl=bl,i(a))(6)
作者将离散的搜索问题放缩为优化概率
P
θ
P_{\theta}
Pθ问题
min
θ
min
w
a
E
a
∼
P
θ
{
L
(
a
,
w
w
a
)
}
(7)
\min_{\theta}\min_{w_{a}}E_{a\sim P_{\theta}}\{L(a,w_{w_{a}})\}\tag{7}
θminwaminEa∼Pθ{L(a,wwa)}(7)
上式显然对
w
a
w_{a}
wa可微,但对
θ
\theta
θ不可微,因为无法将离散的随机变量
m
l
,
i
m_{l,i}
ml,i传播到
θ
l
,
i
\theta_{l,i}
θl,i,为了解决该问题,作者将
m
l
,
i
m_{l,i}
ml,i放缩到一个连续的随机变量(由Gumbel softmax计算得到)
m
l
,
i
=
G
u
m
b
e
l
S
o
f
t
m
a
x
(
θ
[
l
,
i
]
∣
θ
l
)
=
e
x
p
[
θ
l
,
i
+
g
l
,
i
]
/
τ
∑
i
e
x
p
[
(
θ
l
,
i
+
g
l
,
i
)
]
/
τ
(8)
m_{l,i}=GumbelSoftmax(\theta_[l,i]|\theta_{l})=\frac{exp[\theta_{l,i}+g_{l,i}]/\tau}{\sum_{i}exp[(\theta_{l,i}+g_{l,i})]/\tau}\tag{8}
ml,i=GumbelSoftmax(θ[l,i]∣θl)=∑iexp[(θl,i+gl,i)]/τexp[θl,i+gl,i]/τ(8)
其中
g
l
,
i
∼
G
u
m
b
e
l
(
0
,
1
)
g_{l,i}\sim Gumbel(0,1)
gl,i∼Gumbel(0,1)是一个随机噪声服从gumbel分布,
τ
\tau
τ是一个大于0的超参数,控制输出的连续程度
对于延迟部分,可以被写成:
L
A
T
(
a
)
=
∑
l
∑
i
m
l
,
i
⋅
L
A
T
(
b
l
,
i
)
(9)
LAT(a)=\sum_{l}\sum_{i}m_{l,i}\cdot LAT(b_{l,i})\tag{9}
LAT(a)=l∑i∑ml,i⋅LAT(bl,i)(9)
最后就可以得到一个可微的优化方程,从而可以利用梯度下降对网络进行训练
在训练过程中:
- 先通过 L L L对 w a w_{a} wa求导训练网络参数
- 再通过 L L L对 θ \theta θ求导训练采样概率 P θ P_{\theta} Pθ