神经网络架构搜索(NAS)基础入门

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 神经网络架构搜索(NAS)基础入门

网络架构搜索(NAS)已成为机器学习领域的热门课题。商业服务(如谷歌的AutoML)和开源库(如Auto-Keras[1])使NAS可用于更广泛的机器学习环境。在这篇文章中,我们主要探讨NAS的思想和方法,希望可以帮助读者更好地理解该领域并发现实时应用程序的可能性。

什么是网络架构搜索(NAS)?

现代的深度神经网络有时会包含多种类型的层,而且这些层不止一个[2]。Skip connections[2]和子模块方法[3]也被用来促进模型的收敛,它们对可能形成的模型体系结构的空间没有限制。目前大多数的深度神经网络结构都是根据人类经验建立起来的,这种方式需要一个漫长而繁琐的试错过程。NAS试图在不需要人工干预的情况下能够针对特定深度学习问题检测出有效架构。

一般来说,NAS可以分为三个维度——搜索空间、搜索策略和性能评估策略[4]。

640.png

搜索空间:

搜索空间决定了哪些神经结构要被评估。好的搜索空间可以降低寻找合适神经结构的复杂性。一般来说,搜索空间要有约束,并且还要具有灵活性。约束消除了非直观的神经结构,可以创建有限的空间进行搜索。搜索空间包含了能够由NAS方法生成的每一个架构设计(通常是无限多的)。搜索空间中可能涉及堆叠在一起的所有层配置集(图2a)或包含跳过连接的更复杂的体系结构(图2b)。为了减少搜索空间的维数,可以进行子模块的设计。随后子模块堆叠在一起就可以生成模型架构(图2c)。

640.png

性能评估策略:

性能评估策略将提供一个数字,这个数字可以反映搜索空间中所有结构的效率。当一个参考数据集在预先定义的训练轮次数上先进行训练,再进行测试时,通常就可以得到模型结构的准确性。性能评估技术通常还会考虑一些因素,比如训练或推理的计算难度。在任何情况下,评估结构性能的计算成本都很高。

搜索策略:

NAS实际上依赖于搜索策略。它可以识别出好的结构,对好的结构进行性能评估,这样可以避免测试不好的架构。在接下来的文章中,我们将讨论许多搜索策略,包括随机和网格搜索、基于梯度的策略、进化算法和强化学习策略。

网格搜索遵循系统搜索。相比之下,随机搜索则是从搜索空间中随机选取结构,并通过性能估计策略来测试相应结构的准确性。这两种方法对于最小搜索区域都是可行的,特别是当问题涉及到调优少量超参数时(随机搜索通常优于网格搜索)。

作为一个优化问题,NAS可以通过基于梯度的搜索[5]很容易地表述出来。通常,NAS优化的目标是将验证的准确性最大化。由于NAS使用离散的搜索空间,因此实现梯度搜索具有很大的挑战性。因此,它要求将离散的空间结构转化为连续的空间结构,并从连续的空间表达中衍生出结构。根据变换后的连续空间,NAS就可以从优化目标中得到梯度。梯度搜索NAS的理论基础是比较独特的。同时也很难去证明全局最优收敛。但是,该方法在实际应用中展现出了良好的搜索效果。

进化算法是在生物进化问题中获得的灵感。模型架构适用于的个体能够产生后代(其他架构)或死亡并且这些个体能够被排除在种群之外。演进的NAS算法(NASNet architecture[6])通过以下流程派生(图3)。

I.随机体系结构创建N个模型的初始总体。每个个体的输出(即架构)都根据性能评估策略进行评估。

II.选择表现最佳的个体作为父母。可以为具有诱导“突变”功能的新一代体系结构制作各自的父代副本,或者它们可能来自父代组合。性能评价策略评估后代的表现。添加或删除层、添加或删除连接、更改层大小或其他超参数等操作可能包含在可能的突变列表中。

III.有N个结构被选择移除,这些结构可能是总体中最坏的个体或较老的个体。后代会替代被移除的结构并重新启动循环。

640.png

进化算法揭示了有效的结果,并产生了最先进的模型[7]。

基于强化学习的NAS方法近年来得到了广泛的应用。一个网络控制器,通常是一个递归神经网络(RNN),可以用来从具有特定概率分布的搜索域中采样。使用性能评估策略形成并评估采样架构。由此产生的性能被用作更新控制器网络属性的奖励(图4)。此循环在超时或收敛发生之前迭代。

640.png

强化学习能够构建超越基于流行基准数据集的手工模型的网络结构,类似于进化算法。

结论:

NAS成功地建立了更深层次的神经网络体系结构,其精度超过了人工构建的结构。利用进化算法和强化学习,特别是在图像分类任务领域,NAS生成的最新体系结构得到了发展。这种方法是昂贵的,因为在NAS产生成功的结果之前,需要对成百上千个特定的深层神经网络进行训练和测试。NAS方法对于大多数实际应用程序来说太贵了。因此,需要进一步的研究以使NAS更具通用性。

参考文献:

[1] H. Jin, Q. Song and X. Hu, Auto-Keras: Efficient Neural Architecture Search with Network Morphism, arXiv, 2018.

[2] K. He, X. Zhang, S. Ren and J. Sun, Deep Residual Learning for Image Recognition, arXiv, 2015.

[3] C. Szegedy et al., Going Deeper with Convolutions, arXiv, 2014.

[4] T. Elsken, J.H. Metzen and F. Hutter, Neural Architecture Search: A Survey, Journal of Machine Learning Research, 2019.

[5] H. Liu, K. Simonyan and Y. Yang, DARTS: Differentiable Architecture Search, arXiv, 2019.

[6] B. Zoph, V. Vasudevan, J. Shlens and Q.V. Le, Learning Transferable Architectures for Scalable Image Recognition, Proceedings Conference on Computer Vision and Pattern Recognition, 2018.

[7] E. Real et al., Large-scale evolution of image classifiers, Proceedings of the 34th International Conference on Machine Learning, 2017.

[8] B. Zoph and Q.V. Le, Neural architecture search with reinforcement learning, arXiv 2016.

相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
22天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
55 3
图卷积网络入门:数学基础与架构设计
|
15小时前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
18 8
|
15天前
|
5G 数据安全/隐私保护
如果已经链接了5Gwifi网络设备是否还能搜索到其他5Gwifi网络
当设备已经连接到一个5G Wi-Fi网络时,它仍然有能力搜索和发现其他可用的5G Wi-Fi网络。这里所说的“5G Wi-Fi”通常指的是运行在5GHz频段的Wi-Fi网络,而不是与移动通信中的5G网络(即第五代移动通信技术)混淆。
|
12天前
|
Web App开发 网络协议 安全
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。
48 2
|
19天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
44 3
|
26天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
3天前
|
搜索推荐 API 定位技术
一文看懂Elasticsearch的技术架构:高效、精准的搜索神器
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,以其强大的全文本搜索功能和快速的倒排索引技术著称。它不仅支持数字、文本、地理位置等多类型数据,还提供了可调相关度分数、高级查询 DSL 等功能。Elasticsearch 的核心技术流程包括数据导入、解析、索引化、查询处理、得分计算及结果返回,确保高效处理大规模数据并提供准确的搜索结果。通过 RESTful API、Logstash 和 Filebeat 等工具,Elasticsearch 可以从多种数据源中导入和解析数据,支持复杂的查询需求。
16 0
|
1月前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)入门
【10月更文挑战第41天】在人工智能的璀璨星空下,卷积神经网络(CNN)如一颗耀眼的新星,照亮了图像处理和视觉识别的路径。本文将深入浅出地介绍CNN的基本概念、核心结构和工作原理,同时提供代码示例,带领初学者轻松步入这一神秘而又充满无限可能的领域。
|
1月前
|
消息中间件 编解码 网络协议
Netty从入门到精通:高性能网络编程的进阶之路
【11月更文挑战第17天】Netty是一个基于Java NIO(Non-blocking I/O)的高性能、异步事件驱动的网络应用框架。使用Netty,开发者可以快速、高效地开发可扩展的网络服务器和客户端程序。本文将带您从Netty的背景、业务场景、功能点、解决问题的关键、底层原理实现,到编写一个详细的Java示例,全面了解Netty,帮助您从入门到精通。
132 0
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
122 1

热门文章

最新文章