当前位置: 首页 > 编程日记 > 正文

入门必备 | 一文读懂神经架构搜索

640?wx_fmt=jpeg


作者 | Md Ashiqur Rahman

编译 | 刘静

转载自图灵TOPIA(ID: turingtopia)


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


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


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


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


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


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


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


以下是博文内容:


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


640?wx_fmt=png

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


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


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


640?wx_fmt=png

NAS方法的维度


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


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


640?wx_fmt=png

链状网络和多分支网络


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


640?wx_fmt=png

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


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


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


强化学习


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


640?wx_fmt=png

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


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


640?wx_fmt=png

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


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


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


论文地址:

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


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


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


640?wx_fmt=png


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


640?wx_fmt=png

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


640?wx_fmt=png

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


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


640?wx_fmt=png


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


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


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


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


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

640?wx_fmt=png

PNAS的步骤


差异化架构搜索(DARTS)


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


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


640?wx_fmt=png


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


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


640?wx_fmt=png

离散问题的连续松弛


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


640?wx_fmt=png

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, α)


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


640?wx_fmt=png

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


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


更多内容可关注:

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


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


精彩推荐


640?wx_fmt=png

推荐阅读

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

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

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

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

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

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

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

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

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

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

相关文章:

脚本化 tmux — LinuxTOY

脚本化 tmux — LinuxTOY脚本化 tmux2012-07-02 Toy Posted in TipsRSS昨天我在家试了下脚本化 tmux&#xff0c;其表现相当令人满意&#xff0c;只需稍加定制便可满足各种实际需要。这或许可以成为抛弃 GNU screen&#xff0c;改用 tmux 的又一个理由。该脚本先判断一个名为 c…

OpenCV像素点处理

转自&#xff1a;http://blog.csdn.net/hxgqh/archive/2011/02/23/6202001.aspx 获得像素点的值便可以更加灵活的进行图像处理&#xff0c;在OpenCV里可以通过cvGet2D()和cvSet2D()两个函数加上一个CvScalar结构体做到。OpenCV中&#xff0c;CvScalar结构为&#xff1a;typedef…

亲 , Zookeeper了解一下 : 概述

2019独角兽企业重金招聘Python工程师标准>>> 在学习的过程中,我们总需要一个来自灵魂的拷问: 为什么? 为什么会产生Zookeeper 这个问题有深度,那要从五百万年说起,在遥远的塞伯坦星球..... 扯远了... 在遥远在单机单服务的时代 , 想要扩展服务 , 只能增加硬件配置 …

wordpress jquery加载如何实现?

2019独角兽企业重金招聘Python工程师标准>>> 为什么写这篇文章&#xff1f; 因为之前在wordpress里面用jquery的时候没注意&#xff0c;这次因为要优化网站把没用的插件删了&#xff0c;结果发现有的jquery功能失效了&#xff0c;调试了许久才发现可能是jQuery没有定…

百度与华为重磅合作!李彦宏:技术是百度的信仰

导语&#xff1a;这是百度第三年举办AI开发者大会。一生二&#xff0c;二生三&#xff0c;三生万物。AI虽然不能产生万物&#xff0c;但是正在“唤醒万物”。 作者 | 阿司匹林 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在今天上午举行的的百度AI开发者大…

已知空间一点到另外两点直线的距离

转自&#xff1a;http://www.cnblogs.com/clarkustb/archive/2008/11/04/1326500.html 已知空间一点到另外两点直线的距离设空间中的三点为M1,M2,M3,分别用矢量a,b表示方向向量M1M2和M1M3,则&#xff1a; 1. M3到M1,M2连线的距离为|axb|/|a|&#xff0c;这里|.|表示向量的…

vue---进行post和get请求

参考文档&#xff1a; https://www.jb51.net/article/125717.htm 使用axios <script src"https://unpkg.com/axios/dist/axios.min.js"></script> 基本使用方法&#xff1a; get请求&#xff1a; // Make a request for a user with a given ID axios.ge…

CxImage图像处理类库

转自&#xff1a;http://blog.csdn.net/byxdaz/archive/2009/04/10/4061324.aspx CxImage是一个可以用于MFC 的C图像处理类库类&#xff0c;它可以打开&#xff0c;保存&#xff0c;显示&#xff0c;转换各种常见格式的图像文件&#xff0c;比如BMP, JPEG, GIF, PNG, TIFF, MNG…

设计模式学习2 工厂模式

工厂模式其实就是简单模式的升级版本&#xff0c; 简单模式将界面与业务逻辑区分开&#xff0c;但是如果不停的增加计算器的运算方式&#xff0c;简单模式中的工厂Factory 中判断的业务逻辑会变非常复杂&#xff0c;这不符合封装的原则。 所以在此之上将Factory抽象了出来&…

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

题目描述&#xff1a; 输入字符串&#xff0c;包含数字&#xff0c;大小写字母&#xff0c;编程输出出现做多的数字的和。 思路&#xff1a; 1.创建输入对象2.输入字符串3.利用正则将字母分离出&#xff0c;剩余的每一个字符串即为待统计的每一个数字&#xff0c;存入字符串数组…

优化思路千万种,基于下界函数的最优化效率如何?

作者丨stephenDC来源 | 大数据与人工智能&#xff08;ID:ai-big-data&#xff09;导读&#xff1a;生活中我们处处面临最优化的问题&#xff0c;比如&#xff0c;怎么样一个月减掉的体重最高&#xff1f;怎么样学习效率最高&#xff1f;怎么样可以最大化实现个人价值&#xff1…

Quintum 语音网关设置方法

Quintum 网关基本配置 Quintum 网关基本配置 登陆方式&#xff1a;方法一&#xff1a;串口登陆&#xff08;1&#xff09;&#xff0e;用配套的串口线连接网关的CONSOLE口和电脑的串口。 &#xff08;2&#xff09;&#xff0e;开启电脑的的超级终端&#xff0c;路径如下&#…

Activex test contact failed to create control 未指定的错误 控件无法加载的原因

转自&#xff1a;http://blog.csdn.net/phker/archive/2009/12/25/5073402.aspx 本文指的是vc项目的activex 出现这个问题, 我总结了总共有以下几点,可能还有其他原因: 1.中文问题:如果你的项目类型是多字节的,而不是unicode编码的,你可能要注意这个问题了,我就发生了这个问题…

人工智能技术在内容行业的应用:AI对中长尾内容平台还是奢侈品

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;随着人工智能技术的发展&#xff0c;媒体行业本身在不断地发生变化&#xff0c;从传统媒体到新媒体&#xff0c;改变的不仅是信息载体&#xff0c;更是一种新的逻辑&#xff0c;无论是内容…

QQ爬虫-爬取QQ空间

背景&#xff1a;在一篇个人博客看到了相关的爬虫的知识&#xff0c;个人比较有兴趣&#xff0c;就花了点时间研究了一下&#xff0c;主要通过好友空间的互动(相互访问量&#xff0c;点赞&#xff0c;评论&#xff0c;以及其他互动)&#xff0c;以及好友之间聊天的活跃度&#…

perl编程手册

2019独角兽企业重金招聘Python工程师标准>>> perl编程手册: -------------------------------手册-------------------------------- perl手册.chm http://vdisk.weibo.com/s/moN-p -------------------------------视频-------------------------------- 俺的…

VC使用ActiveX控件常见问题

转自&#xff1a;http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面&#xff0c;它表示将你联系到Microsoft、Internet和业界的新技术的小型快速的可重用组件。它与开发语言无关&#xff0c;任何支持 ActiveX控件的软件开发平台&#xff08;如…

你绝没用过的一款高级空间可视化工具

作者 | Shan He转载自高级农民工&#xff08;ID: Mocun6&#xff09;说起 Python 中的可视化&#xff0c;我们一般用的最多的是 Matplotlib&#xff0c;绘制一般的图效果都很好。有时候也会用风格比较好看的 Pyecharts 库&#xff0c;尤其是在展示空间地图上的数据时。不过它的…

揭秘vue——vue-cli3全面配置

★ vue-cli3 全面配置 ★ Nuxt.js 全面配置 创建项目 配置环境变量 通过在package.json里的scripts配置项中添加--mode xxx来选择不同环境 在项目根目录中新建.env, .env.production, .env.analyz等文件 只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端…

周礼栋:现在是计算机系统和网络研究“最好的时代”

编者按&#xff1a;随时随地使用各种系统和工具&#xff0c;对现代人来说早已是司空见惯的事&#xff0c;但这一切完美工作的技术和服务并不是凭空出现的。正是因为微软亚洲研究院副院长周礼栋博士和他带领的团队这样从事系统和网络研究工作的研发人员在幕后不断的努力和创新&a…

ChaLearn Gesture Challenge_2:examples体验

前言&#xff1a; 在上一篇博文ChaLearn Gesture Challenge_1&#xff1a;CGD数据库简单介绍中已经简单介绍过CGD2011数据库&#xff0c;了解到该数据库可以作为公开的数据库来测试在深度信息和RGB信息上的手势识别。当然了&#xff0c;也可以通过参加这个挑战赛来对比自己的手…

vs2008 外部调用ActiveX控件接口方法

转自&#xff1a;http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX &#xff0c;我写的一个 activeX控件测试程序。 分别调用两个 自定义方法&#xff0c; 分别出现 “找不到成员”&#xff0c;和“非选择性的参数”的提…

设计模式之禅笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.设计原则 1)单一职责原则 There should never be more than one reason for a class to change &#xff08;就一个类而言&#xff0c;应该只有一个引起它变化的原因&#xff09; 用于控制类的粒度大小,防止类过于复杂…

vs2008部署问题

转自&#xff1a;http://tangxingqt.blog.163.com/blog/static/2771087220098214755269/ 参考资料 1、VS2005解决"应用程序配置不正确&#xff0c;程序无法启动"问题 2、VS2005安装文件 "由于应用程序配置不正确&#xff0c;应用程序未能启动" 3、Micro…

expdp数据泵导出操作

数据泵需要在本地执行&#xff0c;不可以远程登录操作。 数据泵需要建立目录directory --sys下 create directory su as d:\xs 目录的数据字典是dba_directories SYSncbeta>select owner,directory_name,directory_path from dba_directories; 要求导出scott用户下的emp表…

slf4j 日志监控

问题描述 监控系统 新系统起步&#xff0c;旨在监控原有系统的各种问题。主要的一部分&#xff0c;就是监视原有系统的日志。 日志&#xff0c;是Java企业级应用开发必不可少的一部分&#xff0c;市场上有诸多日志框架。我们选用slf4j。 日志有以下级别&#xff1a; TRACE, DEB…

阿里90后科学家研发,达摩院开源新一代AI算法模型

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;AI科技大本营7月5日消息&#xff0c;阿里达摩院宣布开源新一代人机对话模型ESIM。该算法模型提出两年多&#xff0c;已被200多篇论文引用&#xff0c;更曾在国际顶级对话系统评测大赛&#xff08;DSTC7&…

在vs2008中配置OpenCV2.2

1、下载OpenCV2.2&#xff1a;http://www.opencv.org.cn/index.php/Download 2、下载后解压缩OpenCV-2.2.0-win.zip&#xff1b; 3、下载CMake&#xff1a;http://www.cmake.org/cmake/resources/software.html 4、安装CMake&#xff1b; 5、运行cmake-gui&#xff0c;在wh…

开发者,什么是你真正关心的问题?| AI ProCon 2019

2018 年&#xff0c;上千名开发者与上百名技术专家齐聚一堂&#xff0c;在 CSDN 2018 AI开发者大会上以“AI技术与应用”为核心&#xff0c;深度聚焦人工智能的技术创新与行业应用&#xff0c;真正做到了“只讲技术&#xff0c;拒绝空谈”。今年&#xff0c;在产业智能化的浪潮…

C语言程序的结构

1.一个程序由一个或多个源程序文件组成。 a.预处理指令 b.全局声明 c.函数定义 2.函数是C程序的主要组成部分。 3.一个函数包括两个部分。 a.函数首部 int 函数类型 max 函数名 (int 函数参数类型 x, 函数参数名 int 函数参数类型 y…