今天介绍一篇最近挂在 Arxiv 的文章 AutoHAS: Differentiable Hyper-parameter and Architecture Search,应该是要投 NIPS。作者来自 Google Brain 的 Quoc V. Le 团队,一作是来自悉尼科技大学的 Xuanyi Dong。
创新点
这篇文章的 Motivation 和前不久的 FBNet V3 有类似之处:网络结构搜索 (NAS) 应该和超参数搜索 (Hyper-parameter Optimization, HPO) 结合在一起。这里的超参数指的是比如说 optimizer 选 SGD 还是选 Adam,学习率设 1e-2 还是 2e-2,weight decay 的取值等等。之前的 NAS 方法都是固定相同的超参数,搜不同的结构。作者再 Table 1 中举了一个例子说明这种做法是不合理的:
在 Table 1 中,有两组不同的超参数 HP1,HP2,以及两个不同结构的 model 1,model 2。结果是不一致的:如果使用 HP1 ,model 1 表现的比 model 2 要好;但如果使用 HP2,model 2 表现的比 model 1 要好。换句话说,不同结构的网络,对应的最佳超参数是不一样的。因此,作者提出把网络结构搜索 (NAS) 和超参数搜索 (Hyper-parameter Optimization)结合到一起,从 NAS 推广到 HAS (Hyper-parameter and Architecture Search)。或者说 NAS 只是 HAS 在固定超参数情况下的一个特例。
搜索空间
两个结合后,搜索空间是两个的笛卡儿积,变得更大了。但会面临一个问题:NAS 的搜索空间一般是离散的(比如卷积核的 kernel size 从 {1x1, 3x3, 5x5} 中挑选);而 HO 的搜索空间有离散的(比如optimizer的选择),也有连续的(比如 weight decay 的取值)。这样就导致 NAS + HPO 的搜索空间是混合的。
为了解决这个问题,作者提出了一种可微分的方法,把连续的超参数值表示为几个离散的 basis 的线性组合。比如说 weight decay 的 basis 是 {1e-1, 1e-2, 1e-3},那么所有可能的 weight decay 值都是他们的线性组合。
搜索算法
此外,之前 DARTS 等一系列工作都有用 weight sharing 减少搜索代价的思想:先训练一个 super model,然后从中挑候选的 sub models,并且和 super model 是权重共享的。本文作者也用到了这种weight sharing 的思想:优化 hyper-parameters 的时候,super model 的权重也会拿来做初始化。
整个网络结构如下图:
这张图可以看作是两部分:(1)首先是上图中蓝线的部分:在 training set 上 算 loss,更新 weight。(2)随后根据 validation loss,更新 architecture encoding 和 HP encoding。
作者用 Gumbel - Softmax 替换了 Softmax:
其中
实验
下面说一些关键剥离实验的结果。作者比较了用普通的 Softmax 和 Gumbel-Softmax 的结果,结论是 Gumbel-Softmax 更好。此外,还验证了传统的 NAS 选取最大概率的参数的方法 (eq 6) 在连续参数空间表现不好。
接下来是在 ImageNet 上的结果:
作者展示了:
- AutoHAS 适用于搜索几乎所有种类的超参数和体系结构,而以前基于超梯度的方法仅可应用于某些超参数;
- AutoHAS 显示了七个不同的代表性模型的改进,包括轻型和重型模型;
- AutoHAS 发现的超参数优于(默认)手动调整的超参数;
- AutoHAS 发现的超参数优于其他 AutoML 算法发现的超参数;
- 与仅搜索超参数相比,在较大的联合 HAS 搜索空间中搜索可获得更好的结果;
- 基于梯度的 AutoML 算法比诸如随机搜索和 vizier 之类的黑盒优化方法更有效。
此外,作者还在 SQuAD 上做实验证明比 BERT 好,这里就不再赘述了。
结论
这篇 paper 提出了 HAS (Hyper-parameter and Architecture Search) 的新坑,还提出了一种可微的搜索算法。这个新坑在 Facebook 之前的 FBNetV3: Joint Architecture-Recipe Search using Neural Acquisition Function 也提到了。