神经结构搜索(NAS)的详细指南

245 阅读10分钟

这篇文章的目的是为被称为神经结构搜索(NAS)的深度学习范式提供一个清晰而直观的理解。


目录

文章的各个部分概述如下:

  1. NAS的理由
  2. NAS:它是什么?
  3. 类比时间
  4. NAS的组成部分
  5. NAS的应用
  6. 问题
  7. 资源
  8. 总结

NAS的理由

从LeNet到Resnet以及其他,寻找新的和更好的神经网络范式一直是一项激烈的活动。由于网络设计更像是一门黑色的艺术,而不是一门科学,这就进一步加剧了这种情况。这是一种迂回的说法,即拥有最佳直觉的设计者通常会获胜!这就要求我们需要建立一种新的、可持续的网络设计方法。

这就需要一种算法或系统化的方法来设计网络,这种方法遵循公认的原则,能够与基于人类的网络设计相匹配,甚至可能对其进行改进。

通常情况下,模型设计过程依赖于设计者对超参数做出大量的决定。随着网格搜索和随机搜索等技术的使用,这项任务所需的一些努力已经被最小化了。然而,仍有一些需要改进的地方。这些技术倾向于严格处理不影响网络结构的超参数,如学习率、批量大小等。它们的功能是基于隐含的假设,即目前的模型结构已经是最优的,但这几乎总是不正确的。

这就产生了一个百万美元的问题。

如果我们不仅能以某种方式搜索到最优的超参数,而且能搜索到最优的结构,那会怎么样呢?
与其手工设计结构并通过算法自动选择超参数,是否有一种方法可以使结构设计和超参数选择都自动化?

对于这个问题,最近的一个主要答案是神经结构搜索


NAS:它是什么?

那么,NAS是...我们可以继续给出一些模糊的定义,但这对谁有帮助呢? 让我们通过联想来学习,把讨论的话题与我们的日常经验联系起来。

因此,不再多说了...

我们开始吧!


类比时间

那么,让我们假设我们有一个朋友,X先生,他需要一辆车。他刚刚得到一笔可观的收入,他认为是时候买一辆车了。

multiplevehicles

图1:选择你的车!

然而,他希望用最少的钱买到最好的汽车。他可能已经有了一些预想,比如:"我听说奔驰车很好!"或者 "我的朋友开的是奥迪,而且性能很好"。

因此,X先生下定决心后,就去了汽车经销商那里,要求看一下现有的汽车。很明显,由于他已经对什么是合适的车有了预感,他可能会在奔驰或奥迪品牌中开始寻找他想要的车,视情况而定。

然而,由于他是在一个大型的、受欢迎的经销商处购买汽车,有很多汽车,他必须对他的购买尝试有所顾忌。由于他必须试驾这些汽车,因此有一种说法是,尽快找到最好的汽车会更方便。这将为X先生和销售员节省大量的时间和精力。要做到这一点,需要他聪明地寻找,用一些疯狂的方法去做,即使是像这样简单的事情。

"选一辆车,试试。它够好吗?不......这一辆怎么样?"

然而,我们可以感到欣慰的是,X先生已经在这个方向上迈出了第一步,在奔驰和/或奥迪部分开始了他的搜索,因为他已经有一些概率上的保证,这些车的性能足够好。

话虽如此,他不可能一开始就找到理想的车辆。因此,他将不得不试驾并观察其性能。根据他的观察,他可以决定是否接受这辆车或选择其他车进行更多试驾。如果他真的回去重新选择,他仍然要牢记他的选择策略。

他一次又一次地这样做,直到最后找到一辆他喜欢的车。

任务完成了!完美!


NAS组件

随着比喻的结束,我们必须处理这个预期的问题:我们如何将这个比喻与NAS联系起来?

是的,首先,没有人,尤其是X先生,在进入一家汽车商店时,至少没有对他们正在寻找的东西有一些想法。这个想法可能既不明确也不完全充实,但它是存在的。这个想法的目的是提供一个起点,而不是一个最终的答案。如果答案已经存在,我们现在就不会去寻找,不是吗?搜索过程,如果做得好,将允许X先生缩小他的选择范围。这是进入第二点的完美转折点。

前面提到的第二点是这样的。有一份属于奥迪或奔驰品牌的汽车清单,把它们全部搜索一遍会花费太多的时间和精力。这就要求X先生在选择潜在的汽车时,要有一定的判断力。

第三,一辆潜在的汽车似乎是一个好的前景的事实并不一定使它成为一个好的前景。因此,为了避免在无意中吃亏,X先生不得不抵制对任何汽车的表面价值的想法。这可能只是一辆不适合他的车。因此,X先生不得不找到一种方法来测试汽车的性能,在这个例子中,是通过试驾。

最后,根据观察到的未来汽车的性能,X先生必须做出决定。

(a):选择该车作为他的选择或

(b):回去寻找他的理想车辆

既然我们已经探索了这个类比,我们就能更好地理解NAS过程。

根据Elsken等人,2019年,NAS过程可以通过三个主要部分进行总结:

(a).搜索空间

(b).搜索算法/策策和

(c).评估策略

nas-components

图2:NAS组件(来源:O'Reilly)

搜索空间是对前面提出的第一和第二点的回答。它是操作和/或架构选项的集合,从中选择和/或设计一个潜在的解决方案。把它看作是类似于ML模型的假设空间。

nas-search-space

图3:NAS搜索空间(来源:微软)

另一种看待它的方式是作为网络的初始化权重。我们希望学习网络的最佳权重,但要做到这一点,我们必须从某个地方开始。搜索空间是我们开始寻找最终网络架构的地方,也是我们的零点。就像初始化权重一样,"起点 "越正确,搜索就越快完成,我们就越有可能实现成功搜索。

举个例子,为了开发机器视觉问题的最佳架构,我们会将搜索空间填充为一组卷积运算,也许还有一些变换器和注意力模块,以加强图像理解。

正是由于这个原因,搜索空间通常通过人类的专业知识和直觉来选择。从一方面来说,这增加了引入偏见的可能性。另一方面,它允许我们在搜索最佳建筑方案时利用我们的现实世界知识和理解。

类似于汽车经销商内的汽车人口,有许多不同的手段来组合搜索空间中包含的操作,事实上,可能是无限多的。通常没有足够的时间来详尽地搜索所有可能的候选人和组合,因为其复杂性将是线性的(即O(n)O(n),其中nn是试验的数量)。这将耗费太多精力和时间,而且不能保证找到解决方案。

我们需要一个答案来解决这个问题,这个答案以搜索策略或算法的形式出现。这是一种手段,通过这种手段,我们明智地试图从可能的候选方案中选择我们所需要的(最佳)架构。利用之前选择的搜索算法,我们能够选择候选架构,并根据反馈信息,智能地学习优化,以选择更好的架构。

搜索算法有很多选择。它们包括

(a).随机搜索(天真;过于依赖精心设计的搜索空间)

(b).进化算法(遗传算法的一个子集)

(c).强化学习(RL)

(c).和良好的老式梯度下降(架构设计和权重的一次性学习)

关于这一点已经说得够多了。

reinforcement-learning

图4.:NAS搜索算法(强化学习)

bayes-opt

图5:NAS搜索算法(贝叶斯优化)。

如前所述,搜索算法学会了智能优化架构的选择。这意味着该算法正在学习一些东西。该算法必须观察到某种学习信号,使其能够随着时间的推移提高其架构选择能力。这是我们改善搜索过程的唯一方法,而不至于把成功的倾向完全交给机会。这是之前观察到的第四点提出的一个重要要求。

NAS框架中,这种学习信号是由对算法性能的评价提供的,而这种评价是由评价策略提供的。为了使搜索算法提高其搜索能力并有效地缩小搜索空间,它需要学习什么可能使一个架构成为比另一个更好的候选者,而且它还需要这样做(理想情况下)而不需要明确地建立模型架构。由于这个理想不能总是实现,所以通常情况下,算法能够观察到架构的性能,而不需要在这个过程中花费很多时间和计算就足够了。这就是评价策略的本质。

候选算法的性能是作为一个关注点的函数来衡量的,比如:

(a).模型大小

(b).准确度

(c).延迟,等等

评估架构候选者的一些方法包括:

(a).从头开始训练(计算和时间密集!)

(b).参数共享(利用各候选者的恒定参数集;减少评估时间)

(c).对相关的替代任务进行评估;通常是更简单的任务


NAS的应用

从前面的讨论可以推断出,NAS过程不仅适合于发现有缺陷的网络结构,也适合于选择好的模型参数。这个过程被称为一次性搜索方法

然而,NAS应用的另一个有希望的领域是在科学领域。通过NAS进行的系统和算法组合过程可能正好可以用于其他科学工作中,例如:

(a).对基因调制和操纵的研究,如DNA研究

(b).结构设计和研究,如纳米技术,等等

我们生活在一个有趣的时代,如果能看到NAS的原则在最近的将来被用于何种用途,那将是一件令人高兴的事。


问题

挑出一个奇怪的问题:

(a.)NAS可以选择最佳的模型架构

(b.)NAS可以选择最佳的模型权重

(c.)NAS过程的开始不需要人的输入

(d.)NAS可以联合选择权重和架构参数

答案:(c.)这是
正确的答案,因为NAS过程在开始之前需要一个搜索空间,而这个空间的设计需要人类的专业知识。


资源

在下面找到一些可能有助于获得更多澄清的视频。

对于更长、更详细的主题处理,下面的内容应该足够了。


结论

通过OpenGenus的这篇文章,你一定对神经结构搜索(NAS)有了完整的认识。