天天看点

神经架构优化(NAO):新的神经架构搜索(NAS)算法

作者:死者的青铜

本文是为AI研究所的技术博客编制的,原标题为:

在连续空间中发现最佳的神经架构|微软研究院

作者|田飞

翻译|孙志志 2

校对|酱汁帕纳埃斯奎茨整理|菠萝妹妹

链接:

https://www.microsoft.com/en-us/research/blog/discovering-the-best-neural-architectures-in-the-continuous-space/

神经架构优化(NAO):新的神经架构搜索(NAS)算法

如果你是一个深度学习从业者,你可能会发现自己经常遇到同样的关键问题:我应该为当前的任务选择哪种神经网络架构?这个决定取决于各种因素和许多其他问题的答案。我应该为此层选择什么----卷积、深度卷积还是最大池化?卷积层应该选择的核心有多大?3x3 还是 1x1 ?哪个其他节点应用作循环神经网络 (RNN) 节点的输入?这些决策对于体系结构的成功至关重要。如果您既是神经网络建模方面的专家,又是手头的任务,您可能会发现很容易找到答案。但是,如果您在某个领域的经验有限怎么办?

在这种情况下,您可以尝试神经架构搜索 (NAS),这是一个自动化过程,也是另一种机器学习算法,可指导根据以前观察到的架构及其性能创建更好的架构。多亏了NAS,我们可以看到,在广泛使用的公共数据集(如ImageNet)上性能最高的神经网络架构不需要人为干预。

然而,现有的自动设计神经网络架构的方法 - 通常基于增强的学习或进化算法 - 需要在指数增长的离散空间中进行搜索,我和我的同伴在微软亚洲研究院机器学习小组设计了一种基于连续空间优化的简化,更有效的方法。通过我们称为神经架构优化(NAO)的新方法,我们使用基于梯度的方法在更紧凑的空间中进行优化。这项工作参加了今年的NeurIPS会议

<h2>NAO的关键组成部分</h2>

在连续空间中驱动NAO进行基于梯度的优化取决于三个组成部分:

将离散神经网络架构转换为连续值向量(也称为嵌入式模型)的编码器

一种结果估计函数,它将向量作为输入,并生成一个值作为架构的性能(例如,精度)

将连续价值向量恢复到网络架构的解码器

这三个组件一起训练。完成训练后,从架构 x 开始,我们使用编码器 E 将 x 转换为 ex 的矢量,然后通过估计生成的函数 f 给出的梯度方向,将 ex 转换为新的嵌入式 ex'(由绿线表示)。由于我们正在做梯度上升,只要台阶足够小,我们就可以保证f(ex')&gt;sf(ex)。最后,我们使用解码器D将ex'转换为离散架构x'。通过这种方式,我们得到了一个更好的架构x'。通过不断更新这样的架构。我们得到了最终的架构,它应该具有最佳性能。

神经架构优化(NAO):新的神经架构搜索(NAS)算法

图1:NAO的流程

<h2>取得良好成果的资源有限</h2>

我们做了后续实验,以验证NAO自动发现最佳神经结构的有效性。表 1(下图)显示了不同的卷积神经网络 (CNN) 架构在 CIFAR-10 图像分类数据集上的表现,该数据集由不同的 NAS 算法生成。从表中可以看出,使用 NAO 发现的网络的错误率最低。此外,通过将NAO与称为NAO-WS的权重共享机制相结合,我们可以显着提高搜索速度。权重共享可以通过让多个网络结构共享相同的参数来降低网络架构搜索的计算成本。在我们的实验中,我们使用图像处理器(GPU)在七小时内获得CNN架构,错误率为3.53。通过权重共享,我们不必从头开始训练其他不同的神经网络。

表 2(下文)总结了 PTB 语言模型的结果。困惑度越低,性能越好。再一次,我们发现的NAO的RNN架构产生了良好的结果和有限的计算资源。

通过在连续空间中进行优化,NAO 可以获得更好的结果,并且与现有的 NAS 方法相比,它们直接在离散的架构空间中进行搜索。至于未来的应用,我们计划使用NAO来搜索其他重要AI任务的架构,例如神经机器翻译。同样重要的是,更简单、更高效的自动神经架构设计可以使机器学习技术成为各个阶段的2-10。

神经架构优化(NAO):新的神经架构搜索(NAS)算法

表1:CIFAR-10分类结果

神经架构优化(NAO):新的神经架构搜索(NAS)算法

表 2:PTB 语言模型的结果

想要继续查看本文的链接和引用?

点击并按住链接以打开或单击神经架构优化(NAO):新的神经架构搜索(NAS)算法:

https://ai.yanxishe.com/page/TextTranslation/1335

AI研究院每日更新精彩内容,观看更多精彩内容:雷 Feng.com 雷 Feng.com

<h3>五个非常强大的 CNN 架构</h3>

本文将带您阅读计算机视觉

<h3>使用 Pytorch 进行深度学习(第 1 部分)。</h3>

<h3>Python的高级技巧:用一行代码将内存占用量减少一半</h3>

等你翻译:

<h3>(Python) 3D 人脸处理工具 face3d</h3>

<h3>25 个语音研究数据集,可以放置在数据湖中</h3>

<h3>如何在数据科学面试中脱颖而出</h3>

<h3>Apache Spark SQL和DataFrame的基本概念,架构和用例</h3>

继续阅读