神经网络结构搜索 (3/3): 可微方法 Differentiable Neural Architecture Search

目前大多数NAS方法都是基于Differentiable Neural Architecture Search


– Liu, Simonyan, & Yang. DARTS: Differentiable Architecture Search. In ICLR, 2019. DARTS 定义的目标函数是神经网络超参数的可微函数。可以直接进行训练。

– Wu et al. FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search. In CVPR, 2019.可以认为是darts的一个特例。

基本思想:

用户需要事先定义一些候选模块:每个候选模快不同

暴力枚举不显示,使用super-net:

super – net:

每一层都由九个候选模块并联而成。

输出加权平均:权重ai也是可训练的:

训练:

上面是以最好的测试效果作为目标,但有时也要考虑计算量(部署到移动设备):

如何在NAS中考虑计算量:

神经网络结构搜索 Neural Architecture Search(2)RNN+RL


论文: Zoph & Le. Neural architecture search with reinforcement learning. In ICLR, 2017.

使用RNN来生成神经网络结构,然后使用RL强化学习来训练RNN,目前该方法已经过时了

第一步预测某一层卷积核数量:

第二步:

将第一步p的变成one-hot向量:a1,然后通过一个嵌入层变成x1作为第二步的输入,输出filter的大小。

第三步:预测步长

至此,第一个卷积的超参数就获得了。

因为目标函数不可微,所以只能使用强化学习来训练rnn:

神经网络结构搜索 Neural Architecture Search(1)基本概念

神经网络结构搜索 (Neural Architecture Search) 的基础知识,包括超参数 (Hyper-parameters)、搜索空间 (Search Space)、随机搜索 (Random Search) 等概念。

神经网络中有很多参数:

• Parameters :比如权重
• Hyper-parameter:搭建神经网络需要自己手动设置的一些参数(优化算法、epoch、学习率,网络结构等等)

如何自动调整超参数是一个很重要的方向。

如何调整网络结构超参数:

什么是NAS?找到最优的网络结构使得结果最好。(也有一些附加条件:比如计算量最小、网络模型最小、运行速度等等)

我们不可能遍历所有的网络 超参数取值范围,因此需要一个搜索空间search space:搜索空间指的是所有可能的 网络结构。

NAS的输出:输出一个网络结构.

如何选取超参数?

1、随机搜索

从搜索空间随机选择一组超参数,然后使用这组超参数去训练一个CNN模型,一直到模型收敛,最后用测试集做预测。

重复上述过程:。。。。。

缺点:1、每次搜索的代价昂贵 2、搜索空间太大了