Paper Reading - 综述系列 - Everything you need to know about NAS (上)

Paper Reading - NAS系列 - Everything you need to know about NAS - 综述 - 知乎

目录

Neural Architecture Search

早前工作

减少搜索空间

采用连续搜索空间


开了新坑,NAS与AutoML系列,本文作为综述,主要阐述了作为深度学习领域的新秀的AutoML 和 NAS的发展现状以及未来预期。同时AutoML 和 NAS不需要过多的工作量,他们可以使用最暴力的方式让你的机器学习任务达到非常高的准确率。既简单又有效率。那么 AutoML 和 NAS 是如何起作用的呢

Neural Architecture Search

神经网络架构搜索,简称 NAS。开发一个神经网络模型往往需要大量的工程架构方面的设计。有时候可以通过迁移学习完成一个任务,但是如果想要有更好的性能,最好针对特定的任务场景以及数据集设计自己的网络结构。

但是设计网络架构需要非常专业的技能,为了解决这个问题,NAS 被提出来了,这是一种可以搜索最好的神经网络结构的算法。并且需要解决以下问题:search space 如何定义搜索空间、search strategy 搜索的策略、evaluation strategy 评估的策略

大致的算法流程如下:

扫描二维码关注公众号,回复: 14127390 查看本文章
  1. 首先定义一个 Building Blocks 的集合,集合中元素代表的是可能用于神经网络搜索的基本单元。比如说 NASNet 中提出了以下 Building Block。

在 NAS 算法中,控制器 RNN 会从这些 Building Blocks 中采样,将他们拼接起来构建一个端到端的网络架构。这种结构通常与 SOTA 网络的架构相同,如 ResNet、DenseNet,但是使用的模块组合和配置有较大的区别。

2. 对新产生的网络架构进行训练,使其收敛,并在验证集上进行测试得到准确率。产生的准确率可以用于更新控制器,以便于控制器能够生成更好的网络结构。控制器的权重使用的是策略梯度进行更新的。整个端到端的设置如下图所示:

简单来说,让算法从不同的 block 之中采样,然后将这些模块组合起来构建新的网络。然后训练并测试该网络,根据获得的结果,调整使用的 block 模块以及各个 block 之间的连接方式。

对于以上结构一些经典的NAS算法如下

NAS-RL: 将神经网络的结构用一个变长字符串来描述,这样的话就可以使用RNN来作为一个控制器生成一个这样的字符串,然后使用RL来优化控制器

MetaQNN: 将NAS过程看作马尔可夫决策过程,用Q-learning来记录得到的奖励

GeNet、Large-scale Evolution: 通过随机初始化一组个体,使用预选定义好的基因操作(也就是搜索空间中的操作)来修改二进制串进而产生新的个体

这些算法最大的不足就是烧卡耗财:

  1. 每个算法的都是暴力的在整个搜索空间中找到最优结构,计算代价非常大。
  2. 要么采用随机方式,要么采用网格搜索在离散的搜索空间进行迭代。无法利用深度学习中的梯度方向去指定优化路径
  3. 每次搜索都是独立进行的,不能对其他搜索结构有帮助,每次都必须从0开始训练。可以通过基于上一步或者人工先验的网络架构作为下一次搜索的起点例如Network Transform或者Knowledge Transform
  4. 最好的情况下是NAS 设计的网络在较小的数据集上进行训练和测试。因为在类 ImageNet 这样大型数据集上训练花费时间代价很大。并且经验表示在比较小但是结构相似的数据集上表现较好的网络,在更大更复杂的数据集上也应该表现更好。

早前工作

NASNet 论文打开了深度学习研究的新方向。不幸的是,除了财大气粗的Google之外大家都很难实现。Google使用了 450 个 GPU,花费了 3 天多时间的才找到一个优秀的网络架构。因此,NAS 方面很多的研究都集中于如何提高搜索效率上。

减少搜索空间

Learning Transferable Architecturesfor Scalable Image Recognition(NASNet)

NASNet 提出模块化搜索用来构建与 SOTA 相似的网络架构,只需要搜索单元,然后通过重复堆叠单元来构成最终的网络架构。基于单元的模块搜索方法的扩展性要强于全局搜索。主要的两个模块如下

Normal Cell 与Conv类似主要用于提取特征,不改变特征图的空间分辨率

Reduction Cell 与pooling类似,可以减少特征图的空间分辨率。

对于图像分类任务来说,网络构建需要重复的模块,然后逐步进行下采样,NAS 搜出的网络主要优点就是是这些块的连接方式。下图是在 ImageNet 中搜索得到的最好的 block 结构。可以发现这几个都包含了很多随机的混合操作,包括可分离卷积。


在这方面的后续的改进,比如直接用单元操作(池化、3*3,步长为2的卷积)来取代模块搜索reduction cell因为reduction cell往往比较简单。但是该方法由于网络都不是很深,容易收敛,泛化能力很差

另一个从搜索空间优化的方法,Progressive Neural Architecture Search(PNAS) 提出使用一种基于顺序模型的优化策略 (SMBO: Sequiential Model-Based Optimisation)。与 NASNet 使用的RL方法不同,SMBO 不是随机的从 Block 集合中抓取和尝试,而是对 block 进行测试并按照复杂性增加的顺序搜索网络架构。这种方法虽然不会缩小搜索空间,但是可以early stop。SMBO 简单来说是:从复杂度降低的方案开始,而不是立即尝试所有可能。PNAS 这种方法的效率是 NAS 的 8 倍。

Early Stop 值得一提的是为了分析当前模型的有效性,人们可以根据loss曲线来判断当前模型是否有继续训练下去的价值。如果认为没有继续训练的价值,就应该及早终止,尽可能节约计算资源和减少训练时间。因此PNAS还提出了early stop的性能预测,使用预测器来评估所有的候选模型,选择topk个模型。到达一定训练阶段时,预测器可以预测网络随后的状态,得到预测的学习曲线,如果不符合要求则立即停止。

采用连续搜索空间

DARTS: Differentiable Architecture Search横空出世,将离散的网络架构空间变为连续可微分的搜索空间,通过梯度下降来搜索网络架构。主要集中于搜索卷积层的超参数如:核大小,channels。

DARTS中,通过一个softmax来relax所有可能的操作,这样就将离散搜索空间转化为连续的搜索空间问题。o代表的是所有的候选操作;代表的是有向边上的操作的参数

通过以上转换可以将问题转化为一个对连续变量a进行优化的过程。搜索完成之后,选择在边上最优的操作操作,而其他操作将会被丢弃

最终的loss设计:其中a是二次变量,是一次变量,通过同时二次优化网络,将会获得最优的, 也就是最终结构的所有操作。

如图可以看到DARTS的恐怖提升了

后续会继续减少目前NAS方面One-Shot进展

子韵如初:Paper Reading - NAS系列 - Everything you need to know about NAS - 综述(下)

猜你喜欢

转载自blog.csdn.net/weixin_43953700/article/details/124348968