AutoMl及NAS概述:更有效地设计神经网络模型工具

简介: 还在为自己构建深度模型框架而抓耳饶腮吗?AutoML及NAS了解下,能够自动生成合适的模型结构,解脱你的双手,善待你的头发。

       随着人工智能的迅速发展,深度学习工具箱也发生比较大的变化,从之前受欢迎的Caffe到Tensorflow等框架,好的深度学习框架能够帮助开发人员快速且高效地开发出相应的任务模型,完成相关的任务。这类深度学习工具箱都需要自己设计对应的网络模型,需要大量的实验以获得最终模型,整个过程比较费时费力。那在这个构造模型的过程中,肯定会想到,能不能让机器自己根据数据集构建合适的模型呢?答案是可以的。本文介绍的是近来新的一种深度学习工具箱——AutoML和神经架构搜索( Neural Architecture Search,NAS),它们是深度学习领域中新一任国王,以快速且简单粗暴的方式,并在不需要太多人为参与的情况下为我们的机器学习任务获得高精度模型。使用起来简单有效,这才是我们想要的人工智能!那么它是怎样工作的?如何使用呢?下面为大家一一展开介绍。以下是需要了解有关AutoML和NAS的所有信息。

神经架构搜索(NAS)

       开发神经网络模型通常需要大量的模型工程,一般可以通过迁移学习快速搭建出一个“能用”的模型出来,但如果真的想要获得最佳性能,通常最好是自己根据具体任务设计自己的网络,这就需要专业的技能( 从商业角度来看,这是昂贵的),并且总的来说自己设计网络模型具有很高的挑战性,而且我们甚至可能不知道当前最先进的技术!且在设计模型的过程中需要进行很多次的试验,并根据实验结果调整网络模型,整个实验本身耗时耗力,代价昂贵。
       这就是NAS的用武之地,NAS是一种搜索最佳神经网络架构的算法。大多数模型算法都具有以下结构,首先定义一组可能用于我们网络的“构建块”。例如,在最先的NASNet论文中,为图像识别网络提出了一些常用的块:

1
用于图像识别网络的NASNet模块


       在NAS算法中,控制器递归神经网络(RNN)对这些构建块进行采样,将它们组合在一起以创建某种端到端模型。该体系结构通常体现出与最先进的网络(例如 ResNets 或 DenseNets)相同的模型样式 ,只是使用的构建块有着差别或配置的方式不同罢了。
       然后对这种新的网络架构进行训练以使得模型收敛,并在验证集上保持获得一些准确性,由此产生的精度可以用于更新控制器,以便控制器随着时间的推移产生更好的架构,可能选择出更好的构建块或更好的组合方式,使用策略梯度更新控制器权重。整个端到端设置如下所示。

02
NAS算法


       这是一种相当直观的方法!简单来说:让算法抓住不同的构建块并将这些块放在一起构成一个网络,然后训练并测试该网络。根据模型的结果,调整用于制作网络的构建块和组合方式。
       这个算法成功的部分原因及 论文中证明出这样的好结果是由于它的约束和假设。NAS发现的体系结构在比实际数据小得多的数据集上进行训练和测试,这样做是因为像ImageNet这样的大型数据集训练需要耗费很长的时间。但是,在较小但结构相似的数据集上表现好的网络也应该在更大、更复杂的数据集上表现更好,这在深度学习领域中通常是这样。
       其次,搜索空间本身是非常有限的。NAS旨在构建与当前最先进技术风格非常相似的架构。对于图像识别,网络中有一组重复的构建块,同时逐步进行下采样,如左下图所示。在当前的研究中,可以选择重复用于构建块的组合也是非常常用的。NAS发现网络的主要创新部分在于构建块是如何连接的。右下方就是在ImageNet网络中发现的最佳构建块和模型结构。

2

3

结构搜索的相关进展

       NASNet论文可以说是非常创新的,因为它为深度学习研究提供了新的方向。不幸的是,对于Google公司以外的普通用户来说,这种方法是非常低效且无法复现的。该方法使用了 450块GPU,且需要3-4天的训练才能找到表现优异的结构。因此,NAS的许多最新研究都集中在使这一过程更加高效。
       渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS) 建议使用所谓的基于序列模型的优化(SMBO)策略,而不是NASNet中使用的强化学习。使用SMBO,我们不是随机抓取并尝试从外部设置构建块,而是测试块按复杂程度增加搜索结构。这种操作不会缩小搜索空间,但它确实使得搜索以更智能的方式完成。SMBO基本上是在说: 不要一次性尝试所有事情,从简单开始,只有在需要时才使得结构变得复杂。PNAS方法比原始NAS的效率高5-8倍。
       高效神经架构搜索(Efficient Neural Architecture Search,ENAS) 是尝试使一般架构搜索更有效的另一种尝试,只使用一块GPU即可。作者的假设是,NAS的计算瓶颈是训练每个模型以使其收敛,在获得其测试精度,丢弃所有训练的权重。
       在研究和实践中反复表明,迁移学习有助于在短时间内实现高精度模型,因为针对某些类似任务进行训练的网络发现了相似的权重,且迁移学习基本上只是网络权重的转移。ENAS算法强制所有模型共享权重,而不是从头开始训练使其收敛。在之前模型中尝试过的任何构建块都将使用之前学过的权重。因此,我们 每次训练新模型时都会进行迁移学习,其收敛速度更快!
       该论文的实验结果展示了ENAS的效率,使用单个1080Ti GPU进行了半天的培训。

4
ENAS的性能和效率

深度学习的新方法:AutoML

       许多人将AutoML称为深度学习的新方式,即整个系统的变化。我们只需运行预设的NAS算法,而不是设计复杂的深度网络。Google最近通过提供Cloud AutoML将其发挥到了极致,只需上传你的数据,Google的NAS算法就会为你找到一个快速简便的架构!
       AutoML的这个想法是简单地抽象出深度学习的所有复杂部分,只需要你的数据,让AutoML单独完成网络设计的难点!这样,深度学习变得像其他任何一个插件工具,获取一些数据并自动创建由复杂神经网络驱动的决策功能。

5
Google Cloud的AutoML管道


       Cloud AutoML需要花费20美元,且有一点不好的是,一旦经过训练,获得的模型并不能导出,必须使用他们的API在云上运行刚刚构建好的网络。当然,还有一些完全免费的可供选择,但确实需要进行更多的工作。
        AutoKeras 是一个使用ENAS算法的GitHub项目,该软件可以使用pip安装。由于它是用Keras编写的,因此很容易被控制和使用,因此你甚至可以深入研究ENAS算法并尝试进行一些修改。如果你更喜欢 TensorFlow或 Pytorch,对应的也有公共代码项目!
       总的来说,今天使用AutoML方法有多种选择,这取决于你是否会使用你想要的算法,以及你愿意花多少钱来获取更多的代码。

NAS和AutoML未来前景预测

       很高兴看到过去几年在深度学习自动化方面取得的重大进展,它使得用户和业务更容易访问,且使得大众使用深度学习变得更加容易。但是,总有一些空间需要改进。
       架构搜索变得更加有效。与ENAS一样,使用一块GPU并在一天的训练时间里就找到一个合适的网络是非常了不起的。但是,我们的搜索空间仍然是非常有限的。目前的NAS算法仍然使用的是之前人为设计的结构块,只是将它们组合在一起!
       另外一个强大且可能具有突破性的未来发展方向将是一个更广泛的范围搜索,以真正寻找新颖的架构。这些算法可能会揭示这些庞大而复杂的网络中更隐藏的深层学习秘密。当然,这样的搜索空间需要有效的算法设计。
       NAS和AutoML的这一新方向为AI社区提供了令人兴奋的挑战,并且真正有机会在科学领域取得另一项突破。

作者信息

George Seif ,机器学习工程师
个人主页:https://towardsdatascience.com/@george.seif94
本文由阿里云云栖社区组织翻译。
文章原标题《Everything You Need to Know About AutoML and Neural Architecture Search》,译者:海棠,审校:Uncle_LLD。

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
相关文章
基于Reactor模型的高性能网络库之地址篇
这段代码定义了一个 InetAddress 类,是 C++ 网络编程中用于封装 IPv4 地址和端口的常见做法。该类的主要作用是方便地表示和操作一个网络地址(IP + 端口)
488 58
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
1625 1
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
446 2
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
363 1
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
基于Reactor模型的高性能网络库之Poller(EpollPoller)组件
封装底层 I/O 多路复用机制(如 epoll)的抽象类 Poller,提供统一接口支持多种实现。Poller 是一个抽象基类,定义了 Channel 管理、事件收集等核心功能,并与 EventLoop 绑定。其子类 EPollPoller 实现了基于 epoll 的具体操作,包括事件等待、Channel 更新和删除等。通过工厂方法可创建默认的 Poller 实例,实现多态调用。
570 60
基于Reactor模型的高性能网络库之Channel组件篇
Channel 是事件通道,它绑定某个文件描述符 fd,注册感兴趣的事件(如读/写),并在事件发生时分发给对应的回调函数。
601 60
|
安全 调度
基于Reactor模型的高性能网络库之核心调度器:EventLoop组件
它负责:监听事件(如 I/O 可读写、定时器)、分发事件、执行回调、管理事件源 Channel 等。
585 57
基于Reactor模型的高性能网络库之时间篇
是一个用于表示时间戳(精确到微秒)**的简单封装类
365 57
|
Web App开发 API 虚拟化
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
784 15
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具

热门文章

最新文章