DARTS & MiLeNAS
基于双层优化的可微分的网络结构搜索算法及其改进
DARTS: Differentiable Architecture Search
MiLeNAS: Efficient Neural Architecture Search via Mixed-Level Reformulation
DARTS
核心:在连续域中实现对网络架构的搜索
定义Cell为网络中的基本单元,每个Cell结构都是一个有向无环图,对Cell的内部结构进行搜索:
利用softmax对每个候选运算(conv/maxpooling/zero, etc.)求和,对节点(i, j)的操作权值向量α(i, j)参数化:
o
ˉ
(
i
,
j
)
(
x
)
=
∑
o
∈
O
e
x
p
(
α
o
(
i
,
j
)
)
∑
o
‘
∈
O
e
x
p
(
α
o
‘
(
i
,
j
)
)
o
(
x
)
\bar{o}^(i, j)(x)=\sum_{o\in O}\frac{exp(\alpha_o^{(i, j)})} {\sum_{o^`\in O}exp(\alpha_{o^`}^{(i, j)})}o(x)
oˉ(i,j)(x)=o∈O∑∑o‘∈Oexp(αo‘(i,j))exp(αo(i,j))o(x)
对于每个节点而言,找到其对应最大的α(i, j),从而将混合操作替换为对应的操作,即搜索目标为:
o
(
i
,
j
)
=
a
r
g
m
a
x
o
∈
O
α
o
(
i
,
j
)
o^{(i, j)} = argmax_{o∈O}\alpha_o^{(i, j)}
o(i,j)=argmaxo∈Oαo(i,j)
训练过程中,利用loss_train对权重w进行优化,利用loss_valid对结构化参数α进行优化,采用双层优化思想:
min
α
L
v
a
l
(
ω
∗
(
α
)
,
α
)
s
.
t
.
ω
∗
(
α
)
=
a
r
g
m
i
n
ω
L
t
r
a
i
n
(
ω
,
α
)
\min_\alpha \mathcal{L}_{val}(\omega^*(\alpha), \alpha)\\ s.t.\ \omega^*(\alpha)={argmin}_{\omega}\mathcal{L}_{train}(\omega, \alpha)
αminLval(ω∗(α),α)s.t. ω∗(α)=argminωLtrain(ω,α)
伪代码如下:
单步优化时:
∇
α
L
v
a
l
(
ω
∗
(
α
)
,
α
)
≈
∇
α
L
v
a
l
(
ω
−
ξ
∇
ω
L
t
r
a
i
n
(
ω
,
α
)
,
α
)
\nabla_{\alpha} \mathcal{L}_{val}(\omega^*(\alpha), \alpha) \approx \\ \nabla_{\alpha} \mathcal{L}_{val}(\omega-\xi\nabla_{\omega}\mathcal{L}_{train}(\omega, \alpha), \alpha)
∇αLval(ω∗(α),α)≈∇αLval(ω−ξ∇ωLtrain(ω,α),α)
若令上式中学习率
ξ
=
0
\xi = 0
ξ=0,则可得到梯度的一阶近似。若
ξ
≠
0
\xi \ne 0
ξ=0,则为二阶近似,以下对其进行简化求解。
利用链式法则+复合求导可以将之写成如下形式:
∇
α
L
v
a
l
(
ω
′
,
α
)
−
ξ
∇
α
,
ω
2
L
t
r
a
i
n
(
ω
,
α
)
∇
ω
‘
L
v
a
l
(
ω
′
,
α
)
\nabla_{\alpha}\mathcal{L}_{val}(\omega^\prime,\alpha)- \xi\nabla_{\alpha,\omega}^2\mathcal{L}_{train}(\omega,\alpha)\nabla_{\omega^`}\mathcal{L}_{val}(\omega^\prime,\alpha)
∇αLval(ω′,α)−ξ∇α,ω2Ltrain(ω,α)∇ω‘Lval(ω′,α)
考虑到高阶矩阵乘法的复杂性,令
ω
±
=
ω
±
ϵ
∇
ω
′
L
v
a
l
(
ω
′
,
α
)
\omega^{\pm}=\omega\pm\epsilon\nabla_{\omega^{\prime}\mathcal{L}_{val}(\omega^{\prime}, \alpha)}
ω±=ω±ϵ∇ω′Lval(ω′,α)利用泰勒展开将上式中的后半部分做如下简化:
∇
α
,
ω
2
L
t
r
a
i
n
(
ω
,
α
)
∇
ω
′
L
v
a
l
(
ω
′
,
α
)
≈
∇
α
L
t
r
a
i
n
(
ω
+
,
α
)
−
∇
α
L
t
r
a
i
n
(
ω
−
,
α
)
2
ϵ
\nabla_{\alpha,\omega}^2\mathcal{L}_{train}(\omega,\alpha)\nabla_{\omega^\prime}\mathcal{L}_{val}(\omega^\prime,\alpha) \approx \frac{\nabla_{\alpha}\mathcal{L}_{train}(\omega^+, \alpha) - \nabla_{\alpha}\mathcal{L}_{train}(\omega^-, \alpha)} {2\epsilon}
∇α,ω2Ltrain(ω,α)∇ω′Lval(ω′,α)≈2ϵ∇αLtrain(ω+,α)−∇αLtrain(ω−,α)
MileNAS
核心:现有的许多网络结构搜索算法都可以表述为双层优化,需要使用二阶近似。本文证明了由这种近似引起的梯度误差会导致次最优性,即优化过程不能收敛到一个(局部)最优解,并提出了一种基于mixed-level的优化方法。
由于(6)式的近似,获得 ω ∗ ( α ) \omega^*(\alpha) ω∗(α)需要对 α \alpha α的每次更新重新训练两个网络。于此同时,因为建立在 ω \omega ω的一步近似上,二阶近似具有叠加效应,从而会导致梯度误差和偏离真梯度。
单层优化问题可以描述为:
min
ω
,
α
L
t
r
(
ω
,
α
)
=
min
α
L
t
r
(
ω
∗
(
α
)
,
α
)
\min_{\omega, \alpha}\mathcal{L}_{tr}(\omega, \alpha)= \min_{\alpha}\mathcal{L}_{tr}(\omega^*(\alpha),\alpha)
ω,αminLtr(ω,α)=αminLtr(ω∗(α),α)
由于
α
\alpha
α只取决于训练数据,直接对上式进行极小值搜索以获得最优的权值和结构参数可能导致对
α
\alpha
α过拟合。
利用正则化的思想,使用
L
v
a
l
(
ω
,
α
)
\mathcal{L}_{val}(\omega,\alpha)
Lval(ω,α)作为正则项,为(7)式添加约束项,其中
δ
\delta
δ为常量:
L
v
a
l
(
ω
∗
(
α
)
,
α
)
≤
L
t
r
(
ω
∗
(
α
)
,
α
)
+
δ
\mathcal{L}_{val}(\omega^*(\alpha), \alpha)\le \mathcal{L}_{tr}(\omega^*(\alpha), \alpha) + \delta
Lval(ω∗(α),α)≤Ltr(ω∗(α),α)+δ
利用拉格朗日乘子法,将约束条件下(7)式的求解问题转化为如下形式:
ω
∗
(
α
)
=
a
r
g
min
ω
L
t
r
(
ω
,
α
)
,
min
α
(
1
−
λ
′
)
L
t
r
(
ω
∗
(
α
)
,
α
)
+
λ
′
L
(
ω
∗
(
α
)
,
α
)
−
λ
′
δ
,
0
≤
λ
≤
1
\omega^*(\alpha)=arg\min_{\omega}\mathcal{L}_{tr}(\omega,\alpha),\\ \min_{\alpha}(1-\lambda^\prime)\mathcal{L}_{tr}(\omega^*(\alpha), \alpha) + \lambda^\prime\mathcal{L}(\omega^*(\alpha), \alpha) - \lambda^\prime\delta, \\ 0\le\lambda\le1
ω∗(α)=argωminLtr(ω,α),αmin(1−λ′)Ltr(ω∗(α),α)+λ′L(ω∗(α),α)−λ′δ,0≤λ≤1
对上式进行优化,只需要相应搜索:
min
α
,
ω
[
L
t
r
(
ω
∗
(
α
)
,
α
)
+
λ
L
v
a
l
(
ω
∗
(
α
)
,
α
)
]
\min_{\alpha, \omega}[\mathcal{L}_{tr}(\omega^*(\alpha), \alpha) + \lambda\mathcal{L}_{val}(\omega^*(\alpha), \alpha)]
α,ωmin[Ltr(ω∗(α),α)+λLval(ω∗(α),α)]
λ
\lambda
λ为非负的正则化参数,用于平衡训练损失和验证损失的重要性。
使用一阶方法对(10)式进行求解,对权重和结构参数进行训练更新:
ω
=
ω
−
η
ω
∇
ω
L
t
r
(
ω
,
α
)
,
α
=
α
−
η
α
(
∇
α
L
t
r
(
ω
,
α
)
+
λ
∇
α
L
v
a
l
(
ω
,
α
)
)
h
a
L
t
r
(
ω
,
α
)
+
λ
∇
α
L
v
a
l
(
ω
,
α
)
)
\omega=\omega-\eta_\omega\nabla_\omega\mathcal{L}_{tr}(\omega, \alpha), \\ \alpha=\alpha-\eta_\alpha(\nabla_\alpha\mathcal{L}_{tr}(\omega, \alpha) + \lambda\nabla_\alpha\mathcal{L}_{val}(\omega, \alpha)) ha\mathcal{L}_{tr}(\omega, \alpha) + \lambda\nabla_\alpha\mathcal{L}_{val}(\omega, \alpha))
ω=ω−ηω∇ωLtr(ω,α),α=α−ηα(∇αLtr(ω,α)+λ∇αLval(ω,α))haLtr(ω,α)+λ∇αLval(ω,α))