来源 | TensorFlow(公众号ID:tensorflowers)

从 5 亿年前非常简单的蠕虫大脑到今天的各种现代化结构,大脑经过了漫长时间的进化。人类大脑可以完成各种活动,其中许多活动都可以毫不费力地完成,例如说出视觉场景是否包含动物或建筑物对我们来说非常简单。要执行此类活动,人工神经网络则需要专家通过多年的艰苦研究进行精心设计,并且通常只能完成一种特定的任务,例如找出照片的内容、识别遗传突变,以及帮助诊断疾病。理想情况下,我们希望能用一种自动化方式为任何给定任务生成合适的架构。

生成这些架构的一种方式是使用进化算法。传统的拓扑神经进化研究(例如 Stanley 和 Miikkulainen 在 2002 年发表的这篇论文 :

https://www.mitpressjournals.org/doi/abs/10.1162/10636560232016981

1)奠定了基础,让我们今天可以大规模应用这些算法,许多团队都在研究这个课题,包括 OpenAI、Uber Labs、Sentient Labs 和 DeepMind。当然,Google Brain 团队也一直在思考 AutoML。除了基于学习的方法(例如强化学习)外,我们还想知道能否使用我们的计算资源通过编程方式以史无前例的规模进化图像分类器。我们可以在尽可能不需要专家参与的情况下实现解决方案吗?今天的人工进化神经网络能有多好的表现呢?我们通过两篇论文解决这些问题。

在 ICML 2017 上发表的 Large-Scale Evolution of Image Classifiers 中,我们使用简单的构建块和普通的初始条件设置了一个进化过程。想法是我们退到背后,让大规模进化执行构建架构的工作。从非常简单的网络开始,这个过程发现分类器与当时手动设计的模型相当。这是令人鼓舞的,因为许多应用可能需要很少的用户参与。例如,一些用户可能需要更好的模型,但可能没有时间深入学习相关知识,成为机器学习专家。接下来自然而然需要考虑的一个问题是,手动设计和进化的组合能否比单独使用任何一种方式效果更好。

因此,在最近的论文 Regularized Evolution for Image Classifier Architecture Search (2018) 中,我们通过提供复杂的构建块和良好的初始条件(下文将讨论)参与了这个过程。而且,我们还使用 Google 的新 TPUv2 芯片扩大了计算范围。现代化硬件、专家知识和进化的这个组合共同在 CIFAR-10 和 ImageNet 上产生了最先进的模型,CIFAR-10 和 ImageNet 是两个热门的图像分类基准。

简单的方式

下面是我们第一篇论文中某个实验的示例。在下图中,每个点都是一个在 CIFAR-10 数据集(常用于训练图像分类器)上训练的神经网络。最初,群体包含 1000 个相同的简单种子模型(没有隐藏层)。从简单的种子模型开始非常重要 - 如果我们从初始条件包含专家知识的优质模型开始,最后获得优质模型也就会更容易。使用简单的模型做种后,过程逐步推进。每一步都会随机选择一对神经网络。准确性更高的网络选作父级,并通过复制和突变生成子级,随后子级将添加到群体中,而另一个神经网络则会死亡。所有其他网络在此期间保持不变。连续应用多个这样的步骤后,群体发生进化。

进化实验的过程。每个点都表示群体中的一个神经网络。四个图是所发现架构的示例。这些图对应于最好的网络(最右侧;通过验证准确性选择)和它的三个祖先

我们第一篇论文中的突变故意设置得非常简单:随机移除卷积,在任意层之间添加一个跳过连接,或者更改学习速率,等等。这样,结果将显示进化算法的潜力,而不是搜索空间的质量。例如,如果我们在某个步骤中使用可以将一个种子网络转变成 Inception-ResNet 分类器的突变,我们将错误得出算法找到了一个好答案的结论。

不过,即使我们使用了这样的突变,我们做的所有工作也只会是将最终答案硬编码成一个复杂突变,对结果进行装配。如果我们坚持使用简单突变,这种情况就不会发生,进化也将真正完成。在图中所示的实验中,简单突变和选择过程使网络随着时间的延长而改进并达到较高的测试准确性,即使在此过程期间从未看到过测试集。在这篇论文中,网络还可以继承父级的权重。因此,除了进化架构外,群体在训练网络的同时还探索了初始条件的搜索空间和学习速率调度。因此,过程产生了具有优化的超参数的完全训练模型。实验开始后不需要任何专家输入。

总之,即使我们通过简单的初始架构和直观的突变尽可能减少了研究人员的参与,组成架构的构建块也蕴藏着大量的专家知识。这些知识包括重要的发明,例如卷积、ReLU 和批归一化层。我们进化了由这些组件组成的架构。“架构”这一术语不是随便选择的:这个过程类似于使用优质砖块建房子。

组合使用进化和手动设计

在第一篇论文后,我们希望通过减小算法的选择范围来缩小搜索空间,使其更易于管理。我们从搜索空间中移除了所有可能导致大规模错误的方式,类似于盖房子,我们去除了将墙放在屋顶上的可能性。与神经网络架构搜索类似,通过修复网络的大规模结构,我们可以帮助实现算法。这要怎么做呢?Zoph et al.(2017) 中为架构搜索引入的初始模块被证明非常强大。他们的想法是获得一个由重复模块(称为细胞)组成的深度堆栈。堆栈是固定的,但各个模块的架构可以发生变化。

Zoph et al.(2017) 中引入的构建块。左图是整个神经网络的外层结构,它通过一个由重复细胞组成的堆栈从下到上解析输入数据。右图是细胞的内部结构。目标是找到一个可以产生准确网络的细胞

在第二篇论文 Regularized Evolution for Image Classifier Architecture Search (2018) 中,我们展示了将进化算法应用到上述搜索空间的结果。突变通过随机重新连接输入(图中右图上的箭头)或随机替换运算(例如,它们可以使用任意替代运算替换图中的“max 3x3”(一种最大值池化运算))的方式修改细胞。这些突变仍相对简单,但是初始条件不简单:群体现在使用模型进行初始化,这些模型必须符合由专家设计的细胞外部堆栈。即使这些种子模型中的细胞是随机的,但我们不再从简单模型开始,这就使最终获得优质模型变得更容易。

如果进化算法的贡献有意义,最终网络应明显优于我们已经知道可以在这个搜索空间中构建的网络。我们的论文显示,进化确实可以找到与手动设计相当或者更优的最先进网络。

控制对比

即使突变/选择进化过程不复杂,也许一种更直接的方式(例如随机搜索)可以直接做到这一点。其他替代过程虽然不简单,但也存在于文献(例如,强化学习)中。因此,我们第二篇论文的主要目的是对各种技术进行控制对比。

用于架构搜索的进化、强化学习和随机搜索的对比。这些实验使用 Zoph et al.(2017) 介绍的相同条件在 CIFAR-10 数据集上完成,其中,搜索空间最初用于强化学习

上图比较了进化、强化学习和随机搜索。左侧的每一条曲线都表示实验的一个过程,从中我们可以看到,进化在搜索早期要比强化学习快。这非常重要,因为计算能力较低,实验可能不得不提前停止。此外,进化对数据集或搜索空间中的变化表现出非常高的稳定性。总的来说,此控制对比的目标是向研究社区提供高计算开销实验的结果。在此过程中,我们希望通过提供不同搜索算法间关系的案例研究推动每个人的架构搜索。例如,上图显示通过进化获得的最终模型既可以达到非常高的准确率,又能使用更少的浮点运算。

我们在第二篇论文中使用的进化算法的一个重要特征是某种正则化:不管最老的神经网络有多好,我们都会将它们移除,而不是让最差的神经网络死亡。这提升了针对正在优化的任务中变化的稳定性,并且最终往往会生成更准确的网络。原因之一可能是,由于我们不允许权重继承,所有网络都必须从头训练。因此,这种正则化选择了在重新训练后仍然保持良好状态的网络。

换句话说,由于一个模型可能在偶然的情况下变得更准确,训练过程中的噪声意味着即使是相同的架构也可能得到不同的准确性值,只有经过几代后仍能保持准确的架构才能长期存活下来,让重新训练后保持良好状态的网络有被再次选择的机会。可以在论文中找到此猜想的更多细节。

我们进化的最先进模型的昵称为 AmoebaNet,它们是我们 AutoML 工作的最新成果之一。所有这些实验都进行了大量计算 - 我们使用了数百个 GPU/TPU,并且花了数天时间。就像一台现代的计算机可以胜过成千上万台几十年前的旧机器一样,我们希望这些实验未来能够家喻户晓。我们在这里只是希望帮助大家对这个未来有一个简单的了解。

论文链接:

Large-Scale Evolution of Image Classifiers:

https://arxiv.org/abs/1703.01041

Regularized Evolution for Image Classifier Architecture Search :

https://arxiv.org/abs/1802.01548

招聘

AI科技大本营现招聘AI记者和资深编译,有意者请将简历投至:gulei@csdn.net,期待你的加入!

AI科技大本营读者群(计算机视觉、机器学习、深度学习、NLP、Python、AI硬件、AI+金融、AI+PM方向)正在招募中,和你志同道合的小伙伴也在这里!关注AI科技大本营微信公众号,后台回复:读者群,添加营长请务必备注姓名,研究方向。


AI科技大本营公众号ID:rgznai100

☟☟☟点击 | 阅读原文 | 查看更多精彩内容

使用可进化的AutoML发现神经网络架构相关推荐

  1. 谷歌大脑AutoML最新进展:用进化算法发现神经网络架构

    来源:AI中国 大脑的进化进程持续已久,从5亿年前的蠕虫大脑到现如今各种现代结构.例如,人类的大脑可以完成各种各样的活动,其中许多活动都是毫不费力的.例如,分辨一个视觉场景中是否包含动物或建筑物对我们 ...

  2. 神经网络架构搜索(NAS)综述 | 附AutoML资料推荐

    本文是一篇神经网络架构搜索综述文章,从 Search Space.Search Strategy.Performance Estimation Strategy 三个方面对架构搜索的工作进行了综述,几 ...

  3. ICLR 2021 | 美团AutoML论文:鲁棒的神经网络架构搜索 DARTS-

    高质量模型的设计和更新迭代是当前 AI 生产开发的痛点和难点,在这种背景下,自动化机器学习(AutoML)应运而生.2017年,谷歌正式提出神经网络架构搜索(Neural Architecture S ...

  4. 旷视张祥雨:神经网络架构设计新思路

    智源导读:深度学习模型在很多任务上都取得了不错的效果,但调参却是一项非常痛苦的事情,大量的超参数和网络结构参数会产生爆炸性的组合.因此最近几年神经网络的架构搜索和超参数优化成为一个研究热点.此外,对于 ...

  5. 神经网络架构搜索(NAS)综述

    在阅读近期的CVPR2019时,看到一篇比较亮眼的图像分割论文.来自斯坦福 Li Fei-Fei组(Auto-deeplab),关于利用NAS策略进行图像分割,达到了较优的水平,仅仅比deeplabv ...

  6. NeurIPS 2022 | ​NAS-Bench-Graph: 图神经网络架构搜索Benchmark

    ©作者 | 梁峰绮 单位 | 北京邮电大学 来源 | 北邮 GAMMA Lab 本文旨在简要介绍近期发表在 NeurIPS 2022 Datasets and Benchmarks Track 上的一 ...

  7. NeuralFinder:集成人工生命和遗传算法自动发现神经网络最优结构

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ 张俊林 黄通文 马柏樟  薛会萍                一.为什么要做神经网络结构自动发现 从16年年中开始,我们开始 ...

  8. 单机玩转神经网络架构搜索(NAS) - Auto-Keras学习笔记

    介绍 AutoML这个topic在机器学习领域越来越火,新的研究成果也是层出不穷.在网络架构(NAS),模型压缩(AMC),数据增强(AutoAugment),优化器设计(Neural Optimiz ...

  9. 机器学习研究人员需要学习8种神经网络架构

    翻译 | AI科技大本营(rgznai100) 参与 | 林椿眄 编辑 | Donna 为什么我们需要机器学习? 机器学习可以解决人类不能直接用编程来应对的复杂难题,因此,我们喂给机器学习算法大量的数 ...

最新文章

  1. JVM的垃圾回收机制详解和调优
  2. 无人化运维离我们有多远?阿里智能化运帷平台深度揭秘
  3. 大数据WEB阶段Spring框架 AOP面向切面编程(一)
  4. 【Linux系统编程】vfork() 函数详解
  5. php支持cs吗,关于composer、phpmd和phpcs于windows中的安装与使用方法
  6. C++ 异常变量的生命周期
  7. 华为悬红“奥林帕斯奖”,促进数据产业基础技术研究与生态建设
  8. 云服务器常用端口及其含义
  9. 无人机计算机模拟飞行,学习无人机,怎么安装无人机模拟器?
  10. Python 算法设计(2) - 大数运算 - 基于字符串的数字运算和进位
  11. 树莓派遇见逻辑分析仪,看看树莓派PWM信号和UART信号!
  12. 台式电脑主板插线步骤图_图解电脑主机电源线接法图解
  13. fid fopen MATLAB
  14. python list 迭代_python迭代、列表生成式
  15. SQL——汇总分组排序
  16. 【ES6】Reflect 反射
  17. 初识Vue——八皇后小游戏
  18. 【cocos2d游戏开发实战】一款射击类小游戏《Zombie Age》的开发(一)
  19. 三菱或尝试抛弃后视镜,使用摄像头和AI技术来导航
  20. 纯css绘制齿轮加载动画

热门文章

  1. Loonframwork到SWT的移植测试(JAVA GAME TEST SOURCE)
  2. npm 重新安装依赖_npm-shrinkwrap锁定依赖
  3. Qt嵌入外部EXE程序,并显示在主界面中!
  4. 单页面与多页面的区别及优缺点
  5. python命令行参数解析OptionParser类用法实例
  6. 关闭webstorm自动保存,并显示文件未保存标识
  7. Python 文件 close() 方法
  8. tomcat在服务器上改了8080的端口之后所带来的问题
  9. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
  10. TemplatedParent 与 TemplateBinding