微软&中科大提出新型自动神经架构设计方法NAO
近期,来自微软和中国科学技术大学的刘铁岩等人发表论文,介绍了一种新型自动神经架构设计方法 NAO,该方法由三个部分组成:编码器、预测器和解码器。实验证明,该方法所发现的架构在 CIFAR-10 上的图像分类任务和 PTB 上的语言建模任务中都表现强劲,在计算资源明显减少的情况下优于或持平于之前的架构搜索最佳方法。
从几十年前 [13, 22] 到现在 [48, 49, 28, 39, 8],无人干预的神经网络架构自动设计一直是机器学习社区的兴趣所在。关于自动架构设计的最新算法通常分为两类:基于强化学习(RL)的方法 [48, 49, 37, 3] 和基于进化算法(EA)的方法 [42, 35, 39, 28, 38]。在基于 RL 的方法中,对架构组件的选择被看作是一个动作。一系列动作定义了神经网络的架构,其开发集准确率被用作奖励。在基于 EA 的方法中,搜索是通过架构组件的变异和再组合来进行的,性能更优的架构会被筛选出来继续进化。
可以很容易观察到,基于 RL 和 EA 的方法本质上都是在离散的架构空间中执行搜索。因为神经网络架构的选择通常都是离散的,例如 CNN 中的滤波器大小还有 RNN 单元中的连接拓扑(connection topology)。然而,在离散空间中直接搜索最优架构是很低效的,因为随着选择的增加,搜索空间会呈指数增长。本研究提出一种优化网络架构的新方法,将架构映射到一个连续的向量空间(即网络嵌入),利用基于梯度的方法在该连续空间进行优化。一方面,与自然语言的分布式表示类似,架构的连续表示在表示拓扑信息时更加紧凑和有效; 另一方面,由于更加平滑,在连续空间中进行优化比在离散空间内直接搜索容易得多。
研究者将这种基于优化的方法称为神经架构优化(NAO),如图 1 所示。NAO 的核心是一个编码器模型,负责将神经网络架构映射到一个连续表示(图 1 左侧蓝色箭头)。在连续表示上建立一个回归模型来逼近架构的最终性能(如开发集上的分类准确率,图 1 中间黄色部分)。这里值得注意的是,回归模型类似于之前研究中的性能预测器 [4, 27, 11]。新方法与之的区别在于如何利用性能预测器:之前的研究 [27] 使用性能预测器作为启发来选择已生成的架构,以加速搜索过程,而新方法直接优化模块,并通过梯度下降获得更好网络的连续表示(图 1 中间底部黑色箭头)。然后利用优化的表示来产生预测性能更好的新神经网络架构。为了实现这一点,NAO 的另一个关键模块被设计成解码器,从连续表示中恢复离散架构(图 1 右侧红框箭头)。解码器是配备了注意力机制的 LSTM 模型,可以实现精准恢复。这三个组件(即编码器、性能预测器和解码器)在多任务设置中接受联合训练,这有利于连续表示:恢复架构的解码器目标能进一步改善架构嵌入的质量,更有效地预测性能。

图 1:NAO 的总体框架。原始架构 x 通过编码器网络映射到连续表示 e_x。然后通过最大化性能预测器 f 的输出将 e_x 优化为 ex',然后使用解码器网络将 ex'转换为新架构 x'。
研究者进行了大量实验来验证 NAO 在图像分类和语言建模任务上的有效性。使用之前研究 [48, 49, 37, 27] 常用的架构空间,通过 NAO 找到的架构在 CIFAR-10 上达到了 2.07% 的测试集误差率(使用了 cutout 正则化 [12])。此外,在 PTB 数据集上,该架构实现了 55.9 的困惑度,也超过了神经架构搜索方面的之前最优方法。此外,研究者还展示了:使用最近 [37] 提出的 ENAS 中的权重共享机制来减少子模型参数空间中的较大复杂度,该方法可以提高发现强大的对流和循环架构的效率,例如,在 1 个 GPU 上花费不到 10 小时。研究者将很快发布代码和模型。
论文:Neural Architecture Optimization

论文链接:https://arxiv.org/abs/1808.07233
摘要:自动神经架构设计非常有助于发现强大的神经网络结构。现有的方法,无论是基于强化学习(RL)还是进化算法(EA),都是在离散空间中进行架构搜索,效率非常低。本文提出了一种基于连续优化的自动神经架构设计方法。这种新方法被称为神经架构优化(NAO)。该方法有三个关键部分:(1)编码器,将神经网络架构嵌入/映射到连续空间;(2)预测器,将网络的连续表示作为输入,并预测其准确率;(3)解码器,将网络的连续表示映射回其架构。性能预测器和编码器使我们能够在连续空间中执行基于梯度的优化,以找到潜在的准确率更高的新架构嵌入。然后将这个更优的嵌入使用解码器解码到网络。实验表明,该方法所发现的架构在 CIFAR-10 上的图像分类任务和 PTB 上的语言建模任务中都表现强劲,在计算资源明显减少的情况下都优于或持平于之前的架构搜索最佳方法。其中 CIFAR-10 图像分类任务的测试集误差率为 2.07%,PTB 语言建模任务的测试集困惑度为 55.9。在两个任务中发现的最优架构可被成功迁移到其他任务,如 CIFAR-100 和 WikiText-2。此外,结合最近提出的权重共享机制,我们在计算资源都很有限的情况下(在一个 GPU 上 10 小时)在 CIFAR-10 和 PTB 上发现了功能强大的架构,前一个任务上的最优模型误差率为 3.53%,后一个任务上的困惑度为 56.3。


表 1:CIFAR-10 数据集上不同 CNN 模型的表现。
B 是单元内的节点数。N 是发现的正常单元(normal cell)被展开形成最终 CNN 架构的次数。F 表示滤波器大小。#op 是对单元中一个分支的不同操作数,是自动架构设计算法的架构空间尺度指标。M 是经过训练以获得所需性能的网络架构总数。/ 表示该标准对特定算法无意义。NAONet-WS 表示 NAO 发现的架构和权重共享方法。

表 2:CIFAR-100 数据集上不同 CNN 模型的表现。NAONet 代表 NAO 在 CIFAR-10 上发现的最优架构。

表 3:PTB 数据集上不同模型和技术的表现。与 CIFAR-10 实验类似,NAO-WS 代表具备权重共享机制的 NAO。

表 4:WT2 数据集上不同模型和技术的表现。NAONet 代表 NAO 在 PTB 上发现的最优架构。
微软&中科大提出新型自动神经架构设计方法NAO的更多相关文章
- 老徐FrankXuLei 受邀为花旗银行讲授《微软WCF服务分布式开发与SOA架构设计课程》
老徐FrankXuLei 受邀为花旗银行上海研发中心讲授<微软WCF服务分布式开发与SOA架构设计课程> 受邀为花旗银行上海研发中心讲授<微软WCF服务分布式开发与SOA架构设计课程 ...
- 在.vue文件中让html代码自动补全的方法(支持vscode)
在.vue文件中让html代码自动补全的方法(支持vscode) https://blog.csdn.net/qq_36529459/article/details/79196763 "fi ...
- DDD不是架构设计方法
DDD不是架构设计方法 一文读懂DDD 2019-05-28 19:18 by 春哥大魔王, 413 阅读, 3 评论, 收藏, 编辑 何为DDD DDD不是架构设计方法,不能把每个设计细节具象化,D ...
- atitit.架构设计---方法调用结果使用异常还是返回值
atitit.架构设计---方法调用结果使用异常还是返回值 1. 应该返回BOOL类型还是异常 1 2. 最终会有四种状况,抛出异常.返回特殊值.阻塞.超时 1 3. 异常的优缺点点 1 4. jav ...
- 关于项目中的DAL数据接入层架构设计
摘要:项目中对关系型数据库的接入再寻常不过,也有海量的ORM工具可供选择,一个一般性的DAL数据接入层的结构却大同小异,这里就分享一下使用Hibernate.Spring.Hessian这三大工具对D ...
- 【转】双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
架构简介 前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构.此架构主要是由kee ...
- 双机高可用、负载均衡、MySQL(读写分离、主从自动切换)架构设计
前几天网友来信说帮忙实现这样一个架构:只有两台机器,需要实现其中一台死机之后另一台能接管这台机器的服务,并且在两台机器正常服务时,两台机器都能用上.于是设计了如下的架构. 架构简介 此架构主要是由ke ...
- idea中的beautiful插件-自动生成对象set方法
1. 描述 从前端获取VO对象后,好多时候又要生成数据库对象,需要进行赋值,一个个写很浪费时间,介绍一款idea中的beautiful插件,代码开发过程中自动生成对象的set方法,很好用. 2 .插件 ...
- 【VS Code】中node.js代码自动补全的方法
原文链接: https://blog.csdn.net/qq_39189819/article/details/91347484
随机推荐
- Guided Image Filtering
在图像滤波中,人们最希望的就是可以将图像中的噪声过滤掉的同时,能够让边缘尽可能的保持.噪声属于高频信号,而边缘其实也是一种高频信号,所以一般的滤波器,比如高斯模糊,均值模糊,都是一种低通滤波器,能够将 ...
- valgrind- 内存泄漏-how to install and use
1.how to install my host computer is ARM, U need to Attention yours... valgrind下载: http://valgrind.o ...
- Spring Boot启动 Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not instantiate id generator错误
开始运行得很好的项目,因为前一天高度了项目结构和名称突然报上面的错误 查了很多网上资料很多解决方案 造成这个错误的原因有很多,例如 1.@Entity 类有变动,无非正常生成对应的数据库. 解决:使用 ...
- 【01_292】Nim Game
Nim Game Total Accepted: 25342 Total Submissions: 50672 Difficulty: Easy You are playing the followi ...
- CTF-练习平台-Misc之 细心的大象
十五.细心的大象 打开图片属性 发现备注里有短信息,看着也不像flag,仔细观察里面只有只有大小写字母和数字应该是base64编码,解密后得到:MSDS456ASD123zz 好像也不是flag,题目 ...
- hdu1281 棋盘游戏 二分图最大匹配
小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决 ...
- ThinkPHP AJAX分页及JS缓存的应用
//AJAX分页详见兄弟连PHP项目视频教程22讲35分钟左右 主要实现是需要将分页中的每个链接都改为AJAX请求 //前端缓存技术:基于javascript传输的数据,只要浏览器没关,都保存在内存中 ...
- jdreact相关操作注意事项
1:sublime 安装 babel 插件可以 识别react代码,变色,使用javascipt(babel): 2:热更新:import React, {Component } from 'reac ...
- selinux操作
setenforce 0 关闭SELinux setenforce 1 临时打开SELinux getenforce 查看SELinux状态 永久关闭SELinux : # cat /etc/seli ...
- lseek成功但未生效?
如果open打开文件时,指定了O_APPEND,即“追加”模式,那么lseek的向前移动指针的操作无法凑效,包括lseek(fd, 负数, SEEK_CUR)和lseek(fd, 小于当前偏移的位置, ...