作者 | Md Ashiqur Rahman

编译 | 刘静

转载自图灵TOPIA(ID: turingtopia)

近期谷歌大脑团队发布了一项新研究:只靠神经网络架构搜索出的网络,不训练,不调参,就能直接执行任务。

这样的网络叫做WANN,权重不可知神经网络。前一阵子在业内引起了不小轰动。

很多同学对其中的关键方法“神经网络架构搜索(NAS)“表现出了极大兴趣。那么什么是NAS呢?

谷歌CEO Sundar Pichai曾表示:“设计神经网络非常耗时,需要具有专门背景知识的人,并且,对专业知识的高要求限制了创业公司和小的社区使用它。

使用“神经网络设计神经网络”的方法被称为神经结构搜索(NAS),通常使用强化学习或进化算法来设计新的神经网络结构。

关于NAS,原理是什么?初学者又该如何入门?

图灵君对下面这篇选自medium技术博客进行了编译,该文章全面介绍NAS的原理和三种不同方法,希望大家有所帮助。

以下是博文内容:

我们大多数人可能都对ResNet耳熟能详,它是ILSVRC 2015在图像分类、检测和本地化方面的赢家,也是MS COCO 2015检测和分割的赢家。ResNet是一个巨大的架构,遍布各种跳跃连接。当我使用这个ResNet作为自己机器学习项目的预训练网络时,我想的是“怎么会有人提出这样的体系结构呢?”'

大型人类工程图像分类体系机构

不久之后,我了解到许多工程师和科学家用他们多年的经验构建了这种架构后。并且还有更多的直觉而不是完整的数学将告诉你“我们现在需要一个5x5过滤器以达到最佳精度”。我们有很好的图像分类任务架构,但像我这样的许多年轻学习者通常花费数小时的时间来修复体系结构,同时处理那些不是Image的数据集。我们当然希望别人能为我们做这件事。

因此神经架构搜索(NAS),自动化架构工程的过程就出现了。我们只需要为NAS系统提供数据集,它将为我们提供该数据集的最佳架构。NAS可以被视为AutoML的子域,并且与超参数优化具有明显的重叠。要了解NAS,我们需要深入研究它在做什么。它通过遵循最大化性能的搜索策略,从所有可能的架构中找到架构。下图总结了NAS算法。

NAS方法的维度

它有3个独立的维度:搜索空间、搜索策略和性能评估。

搜索空间定义了NAS方法原则上可能发现的神经架构。它可以是链状结构,其中层(n-1)的输出作为层(n)的输入馈送。或者它可以是具有跳跃连接(多分支网络)的现代复杂架构。

链状网络和多分支网络

有时人们确实想要使用具有重复主题或单元的手工制作的外部架构(宏观架构)。在这种情况下,外部结构是固定的,NAS仅搜索单元体系结构。这种类型的搜索称为微搜索或单元搜索。

左:单元结构 右:单元放入手工制作的外部结构中

在许多NAS方法中,以分层方式搜索微观和宏观结构; 它由几个层次的主题组成。第一级由原始操作组成,第二级是不同的主题,通过有向无环图连接原始操作,第三级是编码如何连接二级图案的主题,依此类推。

为了解释搜索策略和性能估计,下面将讨论三种不同的NAS方法。

强化学习

我们了解强化学习; 其中根据θ参数化的一些策略执行某些操作。然后,代理从所采取的操作的奖励更新策略θ。在NAS的情况下,代理生成模型体系结构,子网络(动作)。然后在数据集上训练模型,并将模型对验证数据的性能作为奖励。

控制器扮演代理的角色,准确性被作为奖励

通常,递归神经网络(RNN)被视为控制器或代理。它产生字符串,模型是随机构建的字符串形式。

RNN用于创建模型的字符串示例

例如,在图5中,连续的RNN输出用于构建滤波器; 从过滤器高度开始到步宽。输出锚点用于指示跳跃连接。在第N层,锚点将包含N-1个基于内容的sigmoids,以指示需要连接的先前层。

通过策略梯度方法训练RNN以迭代地更新策略θ。这里省略了详细的计算,可以在原始论文的第3.2节中找到。

论文地址:

https://openreview.net/pdf?id=r1Ue8Hcxg

渐进式神经架构搜索(PNAS)

PNAS执行本教程的搜索空间部分中讨论的单元搜索。他们通过以预定义的方式添加单元来构建来自块的单元并构建完整网络。

单元以预定数量串联连接以形成网络。并且每个单元由几个块(原文中使用的5个)形成。

这些块由预定义的操作组成。

块的结构。组合函数只是逐元素相加

操作结果表明,图中所示为原论文所使用的图形,可以进行扩展。

上图显示了完整的示例。即使在这种单元胞或微搜索中,也有10¹⁴个有效组合来检查以找到最佳单元结构。

因此,为了降低复杂性,首先仅构建仅具有1个块的单元。这很容易,因为通过上述操作,只有256个不同的单元是可能的。然后选择顶部K表现最佳的单元以扩展2个块单元,并重复最多5个块。

但是,对于一个合理的K,太多的2块候选来训练。作为这个问题的解决方案,我们训练了仅通过读取字符串(单元被编码成字符串)来预测最终性能的“廉价”代理模型。这种训练的数据是在单元构建、训练和验证时收集的。

例如,我们可以构造所有256个单块单元并测量它们的性能。并使用这些数据训练代理模型。然后使用此模型预测2个块单元的性能,而无需实际训练和测试它们。当然,代理模型应该能够处理可变大小的输入。

然后选择由模型预测的顶部K表现最佳的2个块单元。然后对这2个块单元进行实际训练,对“替代”模型进行微调,并将这些单元扩展为3个块并对其进行迭代

PNAS的步骤

差异化架构搜索(DARTS)

用于神经架构的搜索空间是离散的,即一种架构与另一种架构的不同之处至少在于该架构中有一层或一些参数,例如,5x5滤波器对7x7滤波器。在该方法中,采用连续松弛法进行离散搜索,以实现基于梯度的直接优化。

我们搜索的单元可以是有向无环图,其中每个节点x是潜在表示(例如卷积网络中的特征映射),并且每个有向边(i,j)与某些操作o(i,j)相关联( 卷积,最大池化等,转换x(i)并在节点x(j)处存储潜在表示。

每个节点的输出可以通过上述的等式计算。以这样的方式枚举节点,即从节点x(i)到x(j)存在边(i,j),然后i <j。

在连续松弛法中,不是在两个节点之间进行单个操作。使用每种可能操作的凸组合。为了在图中对此进行建模,保持两个节点之间的多个边缘,每个边缘对应于特定操作。并且每个边缘也具有权重α。

离散问题的连续松弛

现在O(i,j)节点x(i)和x(j)之间的操作是一组操作o(i,j)的凸组合,其中o(.)εS,其中S是所有的集合可能的操作。

O(i,j)的输出由上述方程计算。

L_train和L_val分别表示训练和验证损失。两种损失不仅由架构参数α确定,而且还由网络中的权重“w”确定。架构搜索的目标是找到最小化验证损失L_val(w *,α*)的α*,其中通过最小化训练损失来获得与架构相关联的权重'w *'。

w∗ = argmin L_train(w, α∗ ).

这意味着一个双层优化问题,α作为上层变量,w作为下层变量:

α * = argmin L_val(w ∗ (α), α)

s.t. w ∗ (α) = argmin L_train(w, α)

训练后,某些边的α变得比其他边大得多。为了得到这个连续模型的离散架构,在两个节点之间保留唯一具有最大权重的边。

a)上的操作最初是未知的。b)通过在每个边上放置候选操作的混合来连续放松搜索空间c)在双层优化期间一些权重增加并且一些权重下降d)最终体系结构仅通过采用具有两个节点之间的最大权重的边来构建。

当找到单元时,这些单元然后用于构建更大的网络。

更多内容可关注:

https://www.automl.org/automl/literature-on-neural-architecture-search/

(*本文为 AI科技大本营转载文章,转载请联系原作者

精彩推荐

推荐阅读

  • 阿里达摩院刷新纪录,开放域问答成绩比肩人类水平,超微软、Facebook

  • 200行代码实现一个滑动验证码

  • 收藏!本、硕、博、程序员必备神器

  • 三十四载Windows崛起之路: 苹果、可视做过微软“铺路石”

  • 苹果首席设计师离职,或因库克对设计没兴趣?

  • 孩子学编程,更要学算法编程!否则你的机械键盘传给谁?

  • 物联网终端五年后将超 270 亿!破竹之势下程序员如何修炼内功?

  • 视频 |「以太坊开发训练营」如何带你安全、高效跑通以太坊开发全流程! 收藏!

  • 百度自动驾驶新突破:获首批T4牌照,升级Apollo 5.0,将进行复杂城市场景路测

你点的每个“在看”,我都认真当成了喜欢

入门必备 | 一文读懂神经架构搜索相关推荐

  1. 即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?

    本文引用了"蔷薇Nina"的"Nginx 相关介绍(Nginx是什么?能干嘛?)"一文部分内容,感谢作者的无私分享. 1.引言 Nginx(及其衍生产品)是目前 ...

  2. 一文读懂 SOA 架构和微服务架构的区别

    点击关注公众号,回复"1024"获取2TB学习资源! 场景 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益.累计收益等信息.假如这个页面所展示的信息,都来自各 ...

  3. 一文读懂分布式架构知识体系(内含超全核心知识大图)

    作者 | 晓土 阿里巴巴高级工程师 姊妹篇阅读推荐:<云原生时代,分布式系统设计必备知识图谱(内含22个知识点)> 导读:本文力求从分布式基础理论.架构设计模式.工程应用.部署运维.业界方 ...

  4. 从单体到Flink:一文读懂数据架构的演变

    导读:近年来随着开源社区的发展,越来越多新的技术被开源,例如雅虎的Hadoop分布式计算框架.UC伯克利分校的Apache Spark等,而伴随着这些技术的发展,促使着企业数据架构的演进,从传统的关系 ...

  5. HDFS原理 | 一文读懂HDFS架构与设计

    1 前言 HDFS(Hadoop Distributed File System)是我们熟知的Hadoop分布式文件系统,是一个高容错的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用.H ...

  6. 一文读懂多架构的中断控制器

    在计算机中,中断控制器是一种集成电路,可帮助微处理器或CPU处理来自多个不同源(如外部I / O设备)的中断请求(Interrupt Request,以下简称IRQ),这些中断请求可能同时发生.中断控 ...

  7. 一文读懂Hive(架构原理,DDL,常用函数,优化技巧)

    1.HIVE简介 1.什么是HIVE hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据: 可以将结构化的数据文件映射为一 ...

  8. 入门|一文读懂区块链“谷歌引擎”Covalent API, 无需编程实现跨链技术只需一秒

    区块链技术是可以颠覆世界的.然而,尽管区块链上数字资产出现大幅增长,但是访问详细的历史区块链数据仍是非常困难的.这番操作及其耗时且计算量大.如果主流客户对区块链产品产生兴趣,那么构建者就应该具备分析区 ...

  9. 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面

    1.引言 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ.微信.淘宝.那么,一个大型互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂? ...

最新文章

  1. 从技术角度分析推荐系统案例
  2. 深职院计算机学院教室,机电学院计算机专业赴深职院为国赛训练取经
  3. 类似于HttpModule的注入方式的事件机制示例
  4. java main 方法不能执行,AndroidStudio无法执行Java的main函数
  5. SAP创建生产订单时要求输入销售订单
  6. POS时机未到,POW强攻是实现全球货币的正确道路
  7. CSAPP:第十一章 网络编程
  8. Nginx(一):概念基础
  9. php 中断输出,PHP捕捉异常中断的方法
  10. 软件测试 -------- 数据库设计 的 E-R 模型
  11. python数据类型_Python数据类型
  12. FE File Explorer Pro for mac(文件管理器)
  13. 从信号转换角度研究血压(波形)预测的相关论文
  14. 如何开发自己的VUE组件库并打包复用
  15. matlab积分器,MATLAB_SIMULINK__积分器相关操作
  16. c语言顺序比较法字符,常用C语言排序算法解析
  17. 台式机鼠标失灵打开计算机,台式电脑鼠标不动怎么办
  18. 学习JS的这些日子——十二月总结
  19. 深入理解android 包体积优化,给apk瘦身全部技巧
  20. sublime3:解决拼音不跟随问题+markdown插件

热门文章

  1. mysql数据库备份、恢复文档
  2. 互联网+和创业潮,互联网+前提条件是什么?互联网+做什么?
  3. 关于本分类(codeforces-好题系列)
  4. Service的基本组成
  5. 2-7-PatchesAdministration
  6. ORB-SLAM2从理论到代码实现(七):Tracking.cc程序详解(中)
  7. C++忽略第三方库的警告
  8. 数据结构 – 顺序表
  9. BFS:图的最短路径  Aizu - 0558 ​​​​​​​Cheese
  10. 4. matlab 中的axis与axes的区别