NAS神经架构搜索

wen IT资讯 28

本文目录导读:

NAS神经架构搜索

  1. 什么是NAS?
  2. 核心思想
  3. 主流搜索策略
  4. 搜索空间设计
  5. 性能评估策略
  6. 主要挑战与局限性
  7. 近年来的重要发展方向

神经网络架构搜索(NAS)是深度学习领域的一个重要研究方向,下面是关于NAS的详细介绍。

什么是NAS?

定义:神经架构搜索(Neural Architecture Search, NAS)是自动化设计神经网络结构的过程,传统上,神经网络的结构(如层数、类型、连接方式、超参数等)由人类专家根据经验和反复试验手工设计,NAS的目标是让计算机自动寻找性能最优的神经网络架构,从而减少对人力的依赖,并有可能发现人类未想到的、更高效的架构。

核心思想

NAS的本质是一个搜索问题,它包含三个核心组成部分:

  1. 搜索空间:定义了所有可能架构的集合,它规定了可以搜索哪些类型的层(卷积、全连接、循环、注意力等)、如何连接(链式、残差、多分支等)、以及每层的超参数(卷积核大小、通道数、步长等)。

  2. 搜索策略:定义了如何在搜索空间中找到最优或近似最优的架构,这是NAS的核心算法。

  3. 性能评估策略:对于一个候选架构,需要评估它的性能(通常在验证集上的准确率或效率),由于从头训练一个架构非常耗时,因此需要高效的评估方法。

主流搜索策略

强化学习(Reinforcement Learning, RL)

  • 流程:一个控制器(通常是一个RNN)负责生成一个网络架构的描述,这个描述被构建成完整的网络,在训练集上训练,在验证集上评估验证准确率,验证准确率作为“奖励”反馈给控制器,控制器利用强化学习(如策略梯度)来优化其策略,以生成能得到更高奖励的架构。
  • 代表工作:Google的《Neural Architecture Search with Reinforcement Learning》(NASNet)。
  • 优点:概念清晰,能发现复杂的架构。
  • 缺点:计算量巨大(需要训练成千上万个架构)。

进化算法(Evolutionary Algorithms, EA)

  • 流程:维护一个由多个架构组成的种群,对种群中的架构进行训练和评估,得到适应度(即准确率),适应度高的架构被选择出来,通过“变异”(如改变某个层的参数、添加/移除层)和“交叉”(组合两个架构的部分结构)来生成新的后代架构,这个种群不断迭代进化。
  • 代表工作:AmoebaNet。
  • 优点:并行性好,适合大规模探索。
  • 缺点:同样需要大量计算资源来训练和评估许多架构。

基于梯度的方法(Gradient-based Methods)

  • 核心创新:这是目前最主流、最高效的方法,它将离散的架构选择问题松弛化(Relaxation)为一个连续可微的变量空间,从而使整个搜索过程可以通过梯度下降来优化。
  • 代表方法DARTS (Differentiable Architecture Search)。
    • 流程:定义一个“超级网络”(SuperNet),它包含搜索空间中所有可能的操作(如3x3卷积、5x5卷积、池化等),每个边的操作被赋予一个权重(architectural weight),在搜索时,不是选择唯一的一个操作,而是对多个操作的输出进行softmax加权求和,超级网络可以端到端地通过梯度下降同时优化网络权重和架构权重,搜索完成后,根据架构权重选择最重的操作,将超级网络离散化为最终的架构。
    • 优点:计算效率远高于RL和EA,通常在单卡上几天内就能完成。
    • 缺点:搜索和最终训练之间可能存在性能差距;对超级网络的设计和正则化敏感;可能倾向于选择跳跃连接等操作。

贝叶斯优化及其它

  • 使用概率模型(如高斯过程)来建模架构和性能之间的关系,选择在下一次搜索中可能提升性能的架构进行评估。

搜索空间设计

搜索空间的设计对NAS的性能至关重要,常见的设计:

  • 宏观搜索(Macro Search):直接搜索整个网络的结构,计算量大,因为整个网络要考虑整个架构。
  • 基于模块的搜索(Cell-based Search)最常用,只搜索一个小型单元(Cell)的结构,然后将这个Cell重复堆叠多次形成一个完整网络,比如NASNet、AmoebaNet、DARTS等,这大大缩小了搜索空间,提高了效率,并且发现的Cell可以移植到其他数据集上。

性能评估策略

  • 完整训练:每个候选架构从头训练到收敛,最准确,但最耗时。
  • 低精度评估
    • 缩短训练周期:只训练少量epoch。
    • 知识蒸馏:使用一个预训练的教师网络来指导学生架构。
    • 参数共享:在梯度方法中,所有架构共享同一个超级网络的参数(权重共享),评估时只需继承这些预训练的权重,无需从头训练,大大加速了评估过程。
    • 早停法:训练过程中监控性能,如果性能不佳则提前停止。

主要挑战与局限性

  1. 计算成本:尽管梯度方法有所改进,但NAS仍然需要大量计算资源(特别是对大模型来说)。
  2. 可重复性:不同随机种子、不同初始化、甚至不同实现细节,都可能得到截然不同的搜索结果,导致实验结果难以复现。
  3. 性能差距(Generalization Gap):在搜索过程中(使用超级网络)获得的性能与最终训练的模型性能之间存在较大差异。
  4. 搜索空间依赖性:NAS的性能高度依赖于人为设计的搜索空间,一个糟糕的搜索空间限制了其潜力,可能无法发现真正创新的结构。
  5. 数据集依赖性:在某个数据集上(如CIFAR-10)搜索到的架构,往往需要迁移到别的数据集(如ImageNet)上重新调整,否则效果会大打折扣。

近年来的重要发展方向

  • One-Shot NAS:通过权重共享和超网络训练,所有架构可以在一个超网络中得到验证,大大降低了搜索成本,但这会引入权重共享带来的性能评估偏差。
  • Zero-Cost / Proxy NAS:放弃训练,直接通过一些简单的指标(如NASWOT、Grad Norm、SNIP等)来预测网络结构的质量,无需任何训练,极大地加速了搜索,但预测的准确性受限于代理指标的有效性。
  • 硬件感知NAS:在搜索过程中同时考虑硬件性能指标(如延迟、功耗、内存占用、吞吐量),让搜索出的模型不仅准确率高,还能在特定硬件(如手机、边缘设备)上高效运行,这是NAS走向实际部署的关键方向。
  • Transformers & NAS:将NAS应用于自动搜索Transformer架构(如Vison Transformer, ViT)或大型语言模型(LLMs)的结构。
  • 跨领域迁移:将搜索到的Cell或架构迁移到其他任务(如语义分割、目标检测)中。
方向 核心思想 优点 缺点 代表方法
强化学习 用奖励反馈优化控制器 概念清晰,可发现复杂结构 计算量巨大 NASNet
进化算法 种群选择、变异、交叉 并行好,适合大规模探索 计算量巨大 AmoebaNet
梯度方法 松弛化搜索空间,梯度下降 计算效率极高 搜索-训练差距,对设计敏感 DARTS
One-Shot 权重共享,所有架构共一超网 加速评估,低成本 权重共享偏差 ENAS, DARTS
Zero-Cost 代理指标预测性能 超快,无需训练 预测准确性有限 NASWOT
  1. 超越手动设计的限制:最终目标是能够自动发现人类未知的、革命性的网络架构。
  2. 更高效、更鲁棒:开发出在有限资源下也能稳定运行、结果可复现的NAS方法。
  3. 与其他自动化方法结合:如与AutoML超参数优化、模型压缩、量化等结合,实现端到端的完全自动化深度学习工作流。
  4. 模型部署的自动化:让NAS与硬件平台、部署约束无缝对接。

NAS已经从计算密集型的早期阶段进化到了更高效、更实际的梯度方法和零代价方法阶段,它正在从研究走向工业应用,特别是在移动端和边缘侧设备,以及在需要定制化模型的任务中,价值日益显著。

抱歉,评论功能暂时关闭!