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

微软开源NAS算法Petridish,提高神经网络迁移能力


作者 | Jesus Rodriguez

译者 | Rachel

编辑 | 夕颜

出品 | AI科技大本营(ID:rgznai100)

【导读】神经架构搜索(Neural architecture search, NAS)是深度学习中最热门的趋势之一。NAS方法针对特定问题和数据集,尝试找出最合适的神经网络架构。NAS 通过机器学习方法来解决机器学习问题。在近几年,尝试将 NAS 技术嵌入主流深度学习框架和平台的算法数量呈爆发式增长,但最初的NAS模型遇到了很多的挑战,尤其是在将 NAS 生成的神经网络由一个领域迁移到另一领域时。因此,在 NAS 领域,仍然有很多创新的潜力。

最近,微软研究团队发布了一个名为 Petridish 的算法,该算法可用于神经网络架构选择的优化。

NAS 出现的主要原因是设计神经网络的代价非常高昂。在现有的深度学习生态系统中,很多知名且效果良好的神经网络都存在迁移上的困难,尤其在用户的数据集和神经网络原始测试数据集差异较大时。在现有的 NAS 方法中,很多都需要使用数百个 GPU 时间来寻找良好的网络架构,然而其效果仅稍稍优于随机搜索。另外,特征选择问题对于 NAS 技术也是一个不小的挑战。

特征选择算法需要从数据集中抽取出相关特征以用于神经网络模型搭建,这一点和 NAS 非常相似。很显然,选择特征比选择神经网络架构要简单得多,这也成为了 Petridish 团队的灵感来源:从特征选择技术的原则中获得借鉴。

NAS 简史

考虑到 NAS 方法最近的流行程度,可能有很多人会认为 NAS 是最近才出现的学科。2016年,谷歌关于强化学习的著名论文(https://arxiv.org/abs/1611.01578)的发表使得 NAS 重新回到人们的视野。而事实上, NAS 的研究可以追溯到20世纪80年代。最早关于 NAS 的论文之一发表于 1988年,标题为“Self Organizing Neural Networks for the Identification Problem”(https://papers.nips.cc/paper/149-self-organizing-neural-networks-for-the-identification-problem). 从那之后,关于 NAS 的研究陆续发表,但直到谷歌关于 NAS 论文的发表,NAS 技术才真正得到肿瘤机器学习社区的重视。如果您对 NAS 方法的研究历史感兴趣,可以参阅 AutoML Freiburg-Hannover(https://www.automl.org/automl/literature-on-neural-architecture-search/) 网站上的相关介绍。

NAS 的两个类型:前向搜索 vs. 后向搜索

NAS 技术中主要有两个类型:后向搜索(vackward-search)和前向搜索(foward-search)。后向搜索在 NAS 技术中更为常见,该方法首先以图结构构建一个所有可能的神经网络架构的集合,之后通过梯度下降或强化学习逐步降低不需要的边的权重。尽管该方法能够有效降低 NAS 的搜索时间,其存在一个主要的缺陷:在构建初始的图结构时需要人类的领域知识。

采用前向搜索的 NAS 尝试通过对规模较小的神经网络结构进行扩展以得到更大的神经网络。这种方法继承了深度学习模型特征选择方法的很多原则。该方法和后向搜索的不同之处在于,前向搜索不需要设计一个有限的搜索空间,因此前向搜索更加普遍化且易于使用,尤其是在基于已有模型进行热启动时,或是进行长时间持续的学习时。

Petridish

Petridish 是一个前向搜索 NAS ,其借鉴了特征选择和梯度提升技术。该算法首先创建一个模型集合以作为搜索输出,之后通过多个 stop-forward 层和 stop-gradient 层来高效识别加入模型集合的最佳候选模型,并使用异步方法进行训练。

Petridish 的算法可以分为三个阶段:

  • 阶段0: Petridish 首先输入一个规模较小的母模型,该模型一般为人为定义的仅包含一到两层的简单模型,或是已经由领域专家基于数据集构建的成熟的神经网络模型。

  • 阶段1: Petridish 将候选层、 stop-gradient 和 stop-forward 层与母模型连接,并对构建出的模型的一部分进行训练。候选层可以是搜索空间中任何操作的组合。通过使用 stop-gradient 和 stop-forward 层,该算法能使得候选层的梯度在进行积累的同时不影响前向的操作和后向的梯度。如果没有 stop-gradient 和 stop-forward 层,算法将很难明确候选层对母模型效果的贡献如何,且可能导致更多的训练花销。

  • 阶段2: 如果一个特定的候选层或候选层的集合对模型的效果提升有所贡献,则将 stop-gradient 层、stop-forward 层和其他候选层一处,并对模型进行整体训练以进行融合。之后,使用散点图对训练结果进行绘制,以得到一个对帕累托边界的估计。

将帕累托边界添加到 Petridish 算法中是一个很有趣的想法,通过使用该边界,研究者能够更容易地决定针对特定任务达到最优效果的神经网络架构。另外,对帕累托边界的估计也使得多个标准间的权衡更加易于观察,包括准确率、FLOPS 、内存、时延,等等。在下图中,帕累托边界附近的点构成了搜索结果的集合,该集合包含多个模型以供研究者和工程师进行选择。

微软研究团队通过多个 NAS 基线对 Petridish 的效果进行了评估。特别地,团队使用 CIFAR-10 数据集对图片分类模型进行了评估,并将所得模型在 ImageNet 数据集上进行了测试。在 CIFAR-10 数据集上,Petridish 的平均测试错误率降低至百分之 2.75 ± 0.21,最低测试错误率达到百分之 2.51 ,且仅使用 3.2M 参数,搜索时间为五天 GPU 时间。在将模型从 CIFAR-10 迁移至 ImageNet 时, Petridish 最优时的测试错误率降低到百分之 28.7 ± 0.15 ,最低测试错误率达到百分之 28.5,且仅使用 4.3M 参数。初始的测试结果甚至超越了已有的最优 NAS 模型,且同时将计算花销控制在了合理的范围内。

对于快速成长的 NAS 技术生态系统而言, Petridish 是一个非常有趣的尝试,尤其是其使用的前向搜索方法,因为大部分流行的 NAS 技术均基于后向搜索搭建。微软已经在其 Azure ML 平台增加了 NAS 模块, Petridish 算法的增加必将使得该平台具有更加丰富的功能。

原文链接:

https://towardsdatascience.com/microsoft-introduces-project-petridish-to-find-the-best-neural-network-for-your-problem-f3022bee5fce

(*本文为AI科技大本营翻译文章,转载请微信联系1092722531)

精彩推荐

2020年,由 CSDN 主办的「Python开发者日」活动(Python Day)正式启动。我们将与 PyCon 官方授权的 PyCon中国社区合作,联手顶尖企业、行业与技术专家,通过精彩的技术干货内容、有趣多元化的活动等诸多体验,共同为中国 IT 技术开发者搭建专业、开放的技术交流与成长的家园。未来,我们和中国万千开发者一起分享技术、践行技术,铸就中国原创技术力量。

【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!

活动咨询,可扫描下方二维码加入官方交流群~

CSDN「Python Day」咨询群 ????

来~一起聊聊Python

如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)


推荐阅读

  • 集五福,我用Python

  • 2019中国Python开发者调查报告

  • AI 没让人类失业,搞 AI 的人先失业了

  • 为什么 k8s 在阿里能成功?| 问底中国 IT 技术演进

  • 好扑科技技术副总裁戎朋:从海豚浏览器技术负责人到区块链,揭秘区块链技术之路

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

相关文章:

[转]g++ 编译多个相关文件

三个文件&#xff0c;一个头文件&#xff0c;两个程序文件 /*d.h */#include <iostream>usingnamespacestd; classDataset { public: intgetdata(); }; /*d.cpp */#include "d.h"intDataset::getdata() { return1231; } /*out.cpp */#include <ios…

POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量

联系&#xff1a;http://poj.org/problem?id2391 题意&#xff1a;有f个草场&#xff0c;每一个草场当前有一定数目的牛在吃草&#xff0c;下雨时它能够让一定数量的牛在这里避雨&#xff0c;f个草场间有m条路连接&#xff0c;每头牛通过一条路从一点到还有一点有一定的时间花…

25年了,我总结出这些信息提取的经验教训

作者 | Ehud Reiter译者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】近日&#xff0c;本文作者阿伯丁大学计算科学系教授 Ehud Reiter 及其带领的阅读小组读了一篇让他们印象深刻的论文——由 Ralph Grishman 发表的《信息提取 25 年》&#xff08…

朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型

在《朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型》中&#xff0c;我们分析了它只能支持1024个连接同时处理的原因。但是在有些需要同时处理更多连接的情况下&#xff0c;1024个连接往往是不够的&#xff0c;也就是不能够高并发。那么这个时候我们就可以采用…

flashcom中远程共享对象SharedObject的用法

觉得这篇文章比较好&#xff0c;转载回来。学习fcs也有差不多一个月了,感觉最有特色的东西还是SharedObject.SharedObject有不少东西,本地操作就不说了(相信很多人没接触fcs也用过);就说说远程共享对象吧.基本的应用流程是:my_nc new NetConnection(); my_nc.connect("rt…

Hive-1.2.0学习笔记(一)安装配置

鲁春利的工作笔记&#xff0c;好记性不如烂笔头下载hive&#xff1a;http://hive.apache.org/index.htmlHive是基于Hadoop的一个数据仓库工具&#xff0c;提供了SQL查询功能&#xff0c;能够将SQL语句解析成MapReduce任务对存储在HDFS上的数据进行处理。MySQ安装Hive有三种运行…

邮件安全隐患及其防范技术研究

邮件安全隐患及其防范技术研究<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />陈小兵【antian365.com】摘要电子邮件是Internet上使用最为频繁和广泛的服务&#xff0c;在给人们带来便利的同时&#xff0c;亦带来令人担忧的邮件…

必看!52篇深度强化学习收录论文汇总 | AAAI 2020

所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项&#xff0c;还有更多福利赠送来源 | 深度强化学习实验室&#xff08;ID:Deep-RL&#xff09;作者 | DeepRLAAAI 2020 共收到的有效论文投稿超过 8800 篇&#xff0c;其中 7737 篇论文进入评审环节&#xff0c;最终收录数量…

朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型

在阅读完《朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型》和《朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型》两篇文章后&#xff0c;我们发现一个问题&#xff0c;不管select函数还是poll函数都不够智能&#xff0c;它们只能告诉我们成功…

Scala 深入浅出实战经典 第88讲:Scala中使用For表达式实现map、flatMap、filter

高级函数 map,flatMap,filter用for循环的实现。package com.dt.scala.forexpressionobject For_Advanced {def main(args: Array[String]) {}def map[A, B](list: List[A], f: A > B): List[B] for(element <- list) yield f(element)def flatMap[A, B](list: List[A], f…

抛弃Python,我们为什么用Go编写机器学习架构?

所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项&#xff0c;还有更多福利赠送作者 | Caleb Kaiser译者 | 弯月&#xff0c;编辑 | 郭芮来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;如今&#xff0c;众所周知Python是机器学习项目中最流行的语言。尽管R、C…

朴素、Select、Poll和Epoll网络编程模型实现和分析——模型比较

经过之前四篇博文的介绍&#xff0c;可以大致清楚各种模型的编程步骤。现在我们来回顾下各种模型&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 模型编程步骤对比《朴素、Select、Poll和Epoll网络编程模型实现和分析——朴素模型》中介绍的是最基本的网络编程…

使用VM虚拟机的一点小技巧

今天想为朋友弄一个虚拟机系统文件&#xff0c;这样就可以直接拷贝过去&#xff0c;直接让他用了。哪成想电脑里的系统镜像文件不能用&#xff0c;也不知道是不是VM不支持&#xff0c;反正怎么着也引导不起来了。无奈只好用硬件光驱来装虚拟系统&#xff0c;把2003系统盘装入光…

翻译:AKKA笔记 - Actor消息 -1(二)

消息 我们只是让QuoteRequest到ActorRef去但是我们根本没见过消息类&#xff01; 它是这样的&#xff1a;&#xff08;一个最佳实践是把你的消息类包装在一个完整的对象里以利于更好的组织&#xff09; TeacherProtocol package me.rerun.akkanotes.messaging.protocolsobject …

远程安装oracle 10.2.1 for redhat 5.0 2.6.18-53.el5xen

远程安装oracle <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" />10.2.1 for redhat 5.0 2.6.18-53.el5xen<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />今天有个朋友打电…

伯克利新无监督强化学习方法:减少混沌所产生的突现行为

作者 | Glen Berseth译者 | Arvin编辑 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】所有生命有机体都在环境中占据一席之地&#xff0c;使它们在周围不断增加的熵中可以保持相对可预测性。例如&#xff0c;人类竭尽全力保护自己免受意外袭击--我们…

朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较

在《朴素、Select、Poll和Epoll网络编程模型实现和分析——模型比较》一文中&#xff0c;我们分析了各种模型在处理短连接时的能力。本文我们将讨论处理长连接时各个模型的性能。&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 我们可以想象下场景&#xff0c…

Topcoder SRM 663 DIV 1

ABBADiv1 题意&#xff1a; 规定两种操作&#xff0c;一种是在字符串的末尾添加A&#xff0c;另一种是在末尾添加B然后反转字符串。现在给你一个起始串&#xff0c;一个终点串&#xff0c;然后问你是否能够通过以上两种操作&#xff0c;从起始串变为终点串。 题解&#xff1a; …

跨平台PHP调试器设计及使用方法——立项

作为一个闲不住且希望一直能挑战自己的人&#xff0c;我总是在琢磨能做点什么。自从今年初开始接触PHP&#xff0c;我也总想能在这个领域内产生点贡献。那能做点什么呢&#xff1f;我经常看到很多phper说自己设计了一个什么框架&#xff0c;或者说自己搭建了一个什么系统。虽然…

机器推理文本+视觉,跨模态预训练新进展

作者 | 李根、段楠、周明来源 | 微软研究院AI头条&#xff08;ID:MSRAsia&#xff09;【导读】机器推理要求利用已有的知识和推断技术对未见过的输入信息作出判断&#xff0c;在自然语言处理领域中非常重要。本文将介绍微软亚洲研究院在跨模态预训练领域的研究进展。近年来&…

[LeetCode]:94:Binary Tree Inorder Traversal

题目&#xff1a; Given a binary tree, return the inorder traversal of its nodes values. For example:Given binary tree {1,#,2,3}, 1\2/3return [1,3,2]. 代码&#xff1a; public class Solution {public static ArrayList<Integer> listResult new ArrayList&l…

腾讯 AI 2019这一年

所有参与投票的 CSDN 用户都参加抽奖活动群内公布奖项&#xff0c;还有更多福利赠送近日&#xff0c;腾讯AI实验室总结了 2019 年其取得重大进展的两大研究方向&#xff0c;推动实现的行业应用以及前沿研究探索方面的成果。一、两大难题攻坚&#xff1a;通用人工智能与数字人用…

跨平台PHP调试器设计及使用方法——探索和设计

在《跨平台PHP调试器设计及使用方法——立项》一文中&#xff0c;我确定了使用xdebug作为调试器插件部分的基础组件。xdebug提供了一个远程调试的功能&#xff08;相关资料可以详见https://xdebug.org/docs/remote&#xff09;&#xff0c;我们这个项目便是基于这个功能实现的。…

Ubuntu下允许Root用户直接登录图形界面

ubuntu root是默认禁用了&#xff0c;不允许用root登陆&#xff0c;所以先要设置root密码。 执行&#xff1a;sudo passwd root 接着输入密码和root密码&#xff0c;重复密码。再重新启动就可以用root登陆。 另外&#xff0c;默认情况下是不允许用root帐号直接登陆图形界面的。…

携程App for Apple Watch探索

在Apple Watch发布之后&#xff0c;很多App都针对它设计了相应的版本。旅行作为与Apple Watch时间管理特性契合度较高的场景&#xff0c;同时携程旅行作为国内领先的OTA行业App&#xff0c;也成为了首批适配Apple Watch并荣登Apple官网和App Store推荐的应用之一。InfoQ就App f…

跨平台PHP调试器设计及使用方法——通信

首先引用《跨平台PHP调试器设计及使用方法——探索和设计》中的结构图&#xff08;转载请指明出于breaksoftware的csdn博客&#xff09; 本文要介绍的是我们逻辑和pydbgp通信的实现&#xff08;图中红框内内容&#xff09;。 设计通信之前&#xff0c;我需要先设计一种通信协议…

MVP模式的相关知识

MVP 是从经典的模式MVC演变而来&#xff0c;它们的基本思想有相通的地方&#xff1a;Controller/Presenter负责逻辑的处理&#xff0c;Model提供数据&#xff0c;View负责显示。作为一种新的模式&#xff0c;MVP与MVC有着一个重大的区别&#xff1a;在MVP中View并不直接使用Mod…

“数学不行,还能干点啥?”面试官+CTO:干啥都费劲!

关于数学与程序员的“暧昧”关系&#xff0c;先看看网友的看法&#xff1a;同时编程圈也流传着一个段子&#xff1a;一流程序员靠数学&#xff0c;二流程序员靠算法&#xff0c;末端程序员靠百度&#xff0c;低端看高端就是黑魔法。想一想&#xff0c;我们日常学习、求职、工作…

CentOS7 yum 源的配置与使用

YUM&#xff1a;Yellowdog Updater Modified Yum&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖…

跨平台PHP调试器设计及使用方法——协议解析

在《跨平台PHP调试器设计及使用方法——探索和设计》一文中&#xff0c;我介绍了将使用pydbgp作为和Xdebug的通信库&#xff0c;并让pydbgp以&#xff08;孙&#xff09;子进程的方式存在。《跨平台PHP调试器设计及使用方法——通信》解决了和pydbgp通信的问题&#xff0c;本文…