3.4 基于梯度优化的搜索策略


文档摘要

3.4 基于梯度优化的搜索策略 第三章:NAS 的核心要素:搜索策略 - 3.4 基于梯度优化的搜索策略:通往高效架构探索的“梯度魔方” 在神经网络架构搜索(NAS)的宏伟蓝图中,搜索策略无疑是至关重要的引擎,驱动着我们从浩如烟海的架构空间中寻觅出性能卓越的模型。经历了随机搜索的“盲人摸象”,进化算法的“自然选择”,以及强化学习的“智能试错”之后,我们终于来到了一个更加精巧、高效且充满潜力的领域——基于梯度优化的搜索策略。 3.4 章节,我们将深入剖析这如同“梯度魔方”般的搜索策略,揭示其背后的核心思想、运作机制、优势与挑战,并展望其未来的发展趋势。它巧妙地将架构搜索问题转化为一个可微分的优化过程,使得我们可以借助强大的梯度下降算法,如同解开魔方一般,一步步逼近最优架构的“解”。 3.4.

3.4 基于梯度优化的搜索策略

第三章:NAS 的核心要素:搜索策略 - 3.4 基于梯度优化的搜索策略:通往高效架构探索的“梯度魔方”

在神经网络架构搜索(NAS)的宏伟蓝图中,搜索策略无疑是至关重要的引擎,驱动着我们从浩如烟海的架构空间中寻觅出性能卓越的模型。经历了随机搜索的“盲人摸象”,进化算法的“自然选择”,以及强化学习的“智能试错”之后,我们终于来到了一个更加精巧、高效且充满潜力的领域——基于梯度优化的搜索策略

3.4 章节,我们将深入剖析这如同“梯度魔方”般的搜索策略,揭示其背后的核心思想、运作机制、优势与挑战,并展望其未来的发展趋势。它巧妙地将架构搜索问题转化为一个可微分的优化过程,使得我们可以借助强大的梯度下降算法,如同解开魔方一般,一步步逼近最优架构的“解”。

3.4.1 引言:告别“黑箱”,拥抱“可微”的架构搜索

回溯 NAS 的早期探索,我们不难发现,无论是随机搜索、进化算法还是强化学习,它们在架构搜索过程中都或多或少地带有“黑箱”的色彩。这些方法通常需要对候选架构进行完整的训练和评估,才能获得反馈信号,进而指导搜索方向。这种“评估-反馈”的模式,效率低下且计算成本高昂,尤其是在庞大的架构搜索空间中,更是显得力不从心。

基于梯度优化的搜索策略的出现,犹如一缕曙光,照亮了 NAS 前进的道路。它摒弃了传统的“黑箱”搜索模式,转而追求**“可微”的架构搜索**。其核心思想是将离散的架构搜索空间进行连续化松弛 (Continuous Relaxation),使得架构参数也变得可微分,从而可以将架构搜索问题转化为一个标准的优化问题,并利用梯度下降等优化算法进行求解。

这种转变的意义是深远的:

  • 效率大幅提升: 梯度优化算法以其高效性著称,能够快速地在参数空间中找到最优解。相比于需要大量评估的传统方法,基于梯度优化的 NAS 方法能够显著减少搜索时间,降低计算成本。
  • 端到端优化: 梯度优化方法可以将架构参数和网络权重参数同时进行优化,实现真正的端到端学习,从而更好地协同优化架构和权重,提升模型性能。
  • 理论基础坚实: 梯度优化方法拥有完善的数学理论基础,例如梯度下降、反向传播等,使得我们可以更加深入地理解和分析搜索过程,并进行理论上的改进和创新。

基于梯度优化的搜索策略,就像一个精密的“梯度魔方”,通过巧妙地旋转(梯度更新),最终将架构空间调整到最优状态,找到性能卓越的神经网络架构。

3.4.2 核心思想:从离散到连续,构建可微的架构空间

要实现基于梯度优化的架构搜索,首要任务是将离散的架构搜索空间转化为连续可微的空间。这是因为梯度优化算法本质上是针对连续可微函数进行优化的,无法直接应用于离散的架构选择。

3.4.2.1 架构表示的连续化松弛

为了实现架构表示的连续化,通常需要引入连续的架构参数来代替离散的架构选择。具体来说,对于架构搜索空间中的每个离散选择(例如,卷积核大小、层类型、连接方式等),我们不再直接选择一个具体的选项,而是引入一组架构参数(通常是概率分布或权重),来表示选择不同选项的概率或重要程度。

举例来说,假设我们要搜索卷积层的卷积核大小,可能的选项有 {3x3, 5x5, 7x7}。在传统的离散搜索中,我们会直接选择其中一个尺寸。而在基于梯度优化的方法中,我们会引入三个架构参数 α3x3, α5x5, α7x7,它们可以表示选择这三种卷积核大小的概率。我们可以使用 Softmax 函数 将这些参数转化为概率分布。

其中,softmax 函数确保了概率值在 0 到 1 之间,并且所有概率之和为 1。这样,我们就将离散的卷积核大小选择问题,转化为连续的概率分布参数 α 的优化问题。

3.4.2.2 超网络 (Supernet) 的构建

在架构表示连续化之后,我们需要构建一个超网络 (Supernet) 来容纳所有可能的架构。超网络是一个包含所有候选操作的大型网络,它能够通过不同的架构参数组合,实例化出搜索空间中的各种子网络。

超网络的构建方式通常有两种:

  • 共享权重超网络 (Weight-sharing Supernet): 这是目前最常用的超网络构建方式。它将所有候选操作都实现为一个共享权重的模块,并在超网络中并行地执行这些操作。通过架构参数,我们可以控制每个操作的激活程度权重贡献,从而模拟选择不同操作的效果。

    图:共享权重超网络示意图。操作池中包含多个候选操作,它们共享权重。架构参数控制每个操作的贡献,最终输出由架构参数加权的操作结果组合而成。

  • 路径级超网络 (Path-level Supernet): 这种方式将超网络视为一个有向无环图 (DAG),每个节点代表一个计算层,每条边代表一个候选操作。通过架构参数,我们可以控制每条边的激活概率,从而选择不同的路径构成子网络。

    图:路径级超网络示意图。超网络由节点和边构成,边代表候选操作,架构参数控制边的激活概率,选择不同的路径构成子网络。

无论采用哪种超网络构建方式,其核心思想都是将所有可能的架构都嵌入到一个统一的网络结构中,并通过架构参数来控制子网络的生成。这样,我们就可以在超网络上进行端到端的训练,同时优化网络权重和架构参数。

3.4.2.3 可微架构搜索的目标函数

在构建了可微的架构空间和超网络之后,我们需要定义一个可微的架构搜索目标函数。这个目标函数通常是基于验证集性能来定义的,例如验证集准确率或验证集损失。我们的目标是找到一组最优的架构参数,使得在验证集上评估的子网络性能最佳。

由于架构参数是连续的,我们可以使用梯度下降算法来优化这些参数。具体来说,我们需要计算目标函数关于架构参数的梯度,并沿着梯度的反方向更新架构参数,从而逐步逼近最优架构。

3.4.3 基于梯度优化的搜索过程:解开“梯度魔方”的步骤

基于梯度优化的搜索过程通常可以分为以下几个关键步骤,如同解开“梯度魔方”的步骤一般,环环相扣,最终引导我们找到最优架构:

3.4.3.1 超网络训练 (Supernet Training)

首先,我们需要对构建好的超网络进行训练。这个训练过程的目标是学习超网络中共享权重的参数,使得超网络能够有效地模拟各种子网络的性能。

在超网络训练阶段,我们通常采用权重共享策略,即所有子网络都共享超网络中的权重参数。这样可以显著提高训练效率,因为我们只需要训练一次超网络,就可以评估多个子网络的性能。

超网络训练的目标函数通常是训练集损失函数。我们可以使用标准的梯度下降算法(例如 SGD, Adam 等)来优化超网络权重参数。

3.4.3.2 架构参数优化 (Architecture Parameter Optimization)

在超网络训练完成后,我们需要优化架构参数。这个过程的目标是找到一组最优的架构参数,使得在验证集上评估的子网络性能最佳。

架构参数优化通常采用交替优化 (Alternating Optimization) 的方式进行:

  1. 固定架构参数,优化网络权重参数: 在给定的架构参数下,我们训练超网络(或者采样一些子网络)的网络权重参数,以最小化训练集损失。
  2. 固定网络权重参数,优化架构参数: 在固定的网络权重参数下,我们优化架构参数,以最大化验证集性能(例如,最大化验证集准确率,或最小化验证集损失)。

这两个步骤交替进行,直到架构参数收敛或达到预定的迭代次数。在优化架构参数时,我们需要计算验证集性能关于架构参数的梯度。由于架构参数是通过连续化松弛得到的,因此这个梯度是可以计算的。

3.4.3.3 架构离散化 (Architecture Discretization)

当架构参数优化完成后,我们得到的是一组连续的架构参数(例如,概率分布)。为了得到最终的离散架构,我们需要进行架构离散化

架构离散化的方法通常是选择概率最高的选项。例如,对于卷积核大小的选择,如果 p5x5 的概率最高,我们就选择 5x5 的卷积核。

另一种方法是使用 Gumbel-Softmax 技巧,它可以在离散选择的过程中引入梯度,使得整个搜索过程更加平滑可微。

3.4.3.4 架构评估与精调 (Architecture Evaluation and Fine-tuning)

最后,我们需要对离散化得到的架构进行评估和精调

首先,我们需要在独立的测试集上评估离散架构的性能,以验证搜索结果的泛化能力。

如果性能不理想,我们可以对离散架构进行精调 (Fine-tuning)。精调是指在固定架构的情况下,重新训练网络的权重参数,以进一步提升模型性能。精调通常可以使用更长的训练时间和更精细的超参数设置。

通过以上步骤,我们完成了基于梯度优化的架构搜索过程,最终得到一个性能优异的神经网络架构。

图:基于梯度优化的搜索过程流程图。

3.4.4 典型算法:DARTS、SNAS、ENAS、ProxylessNAS 等

基于梯度优化的搜索策略在 NAS 领域取得了巨大的成功,涌现出了一系列经典的算法,例如 DARTS (Differentiable Architecture Search), SNAS (Stochastic Neural Architecture Search), ENAS (Efficient Neural Architecture Search), ProxylessNAS 等。

3.4.4.1 DARTS (Differentiable Architecture Search)

DARTS 是基于梯度优化 NAS 方法的代表性工作之一。它提出了一个可微架构搜索框架,将架构搜索问题转化为一个双层优化问题

  • 搜索空间: DARTS 定义了一个由节点组成的搜索空间,每个节点代表一个计算层,每条边代表一个候选操作(例如,卷积、池化、跳跃连接等)。
  • 连续化松弛: DARTS 使用 Softmax 函数 对每条边上的候选操作进行连续化松弛,引入架构参数来表示选择不同操作的概率。
  • 超网络: DARTS 构建了一个共享权重超网络,其中所有候选操作都实现为一个共享权重的模块。
  • 优化: DARTS 使用双层优化算法来优化网络权重参数和架构参数。外层优化架构参数,以最大化验证集性能;内层优化网络权重参数,以最小化训练集损失。
  • 离散化: DARTS 在架构参数优化完成后,选择每条边上概率最高的操作作为最终的架构。

DARTS 的优点是搜索效率高,可以在较短的时间内找到性能良好的架构。然而,DARTS 也存在一些问题,例如架构参数的偏差 (Bias)权重共享带来的性能瓶颈

3.4.4.2 SNAS (Stochastic Neural Architecture Search)

SNAS 旨在解决 DARTS 中存在的架构参数偏差问题。SNAS 引入了随机搜索的思想,在架构搜索过程中对架构参数进行随机采样,从而避免过度依赖于梯度信息,减少架构参数的偏差。

  • 搜索空间和连续化松弛: SNAS 与 DARTS 类似,也采用基于节点和边的搜索空间,并使用 Softmax 函数进行连续化松弛。
  • 超网络: SNAS 也构建了一个共享权重超网络。
  • 优化: SNAS 使用随机梯度下降算法来优化网络权重参数和架构参数。不同于 DARTS 的双层优化,SNAS 将网络权重参数和架构参数放在同一个优化器中进行优化,简化了优化过程。
  • 离散化: SNAS 在架构参数优化完成后,根据架构参数的概率分布进行随机采样,得到最终的架构。

SNAS 通过引入随机搜索,能够有效地减少架构参数的偏差,提高搜索结果的泛化能力。

3.4.4.3 ENAS (Efficient Neural Architecture Search)

ENAS 的目标是进一步提高 NAS 的效率。ENAS 提出了一种控制器 (Controller) 的概念,使用一个循环神经网络 (RNN) 来生成架构参数,并使用强化学习来训练控制器,使其能够生成性能良好的架构。

  • 搜索空间: ENAS 定义了一个由单元 (Cell) 组成的搜索空间,每个单元包含多个节点和边,边代表候选操作。
  • 连续化松弛: ENAS 使用控制器的输出来表示选择不同操作的概率。
  • 超网络: ENAS 构建了一个共享权重超网络,其中所有单元共享权重参数。
  • 优化: ENAS 使用强化学习算法来训练控制器,使其能够生成性能良好的架构。控制器通过奖励信号(例如,验证集准确率)来学习如何生成更好的架构。
  • 离散化: ENAS 在控制器训练完成后,使用控制器生成概率最高的架构作为最终的架构。

ENAS 通过使用控制器和强化学习,能够更加高效地探索架构空间,并找到性能优异的架构。ENAS 的一个显著优势是权重共享,它可以显著减少训练时间和计算成本。

3.4.4.4 ProxylessNAS

ProxylessNAS 旨在解决权重共享带来的性能瓶颈问题。ProxylessNAS 认为,权重共享会导致子网络之间相互干扰,影响搜索结果的准确性。因此,ProxylessNAS 提出了一种路径二值化 (Path Binarization) 的方法,在搜索过程中只保留一条路径,避免权重共享带来的干扰。

  • 搜索空间: ProxylessNAS 定义了一个由路径组成的搜索空间,每条路径代表一个子网络。
  • 连续化松弛: ProxylessNAS 使用 Sigmoid 函数 对每条路径进行二值化,引入架构参数来表示选择不同路径的概率。
  • 超网络: ProxylessNAS 构建了一个非共享权重超网络,即每条路径都拥有独立的权重参数。
  • 优化: ProxylessNAS 使用梯度下降算法来优化网络权重参数和架构参数。在优化过程中,ProxylessNAS 只保留一条路径,并更新该路径上的权重参数。
  • 离散化: ProxylessNAS 在架构参数优化完成后,选择概率最高的路径作为最终的架构。

ProxylessNAS 通过路径二值化和非共享权重,能够有效地避免权重共享带来的性能瓶颈,提高搜索结果的准确性。然而,ProxylessNAS 的计算成本较高,因为需要训练多个独立的子网络。

算法 核心思想 优点 缺点
DARTS 可微架构搜索,双层优化 搜索效率高,可在较短时间内找到性能良好的架构 架构参数偏差,权重共享带来的性能瓶颈
SNAS 随机架构搜索,减少架构参数偏差 能够有效地减少架构参数的偏差,提高搜索结果的泛化能力 搜索效率相对较低
ENAS 控制器和强化学习,高效探索架构空间 搜索效率高,权重共享减少训练时间和计算成本 控制器的训练可能不稳定
ProxylessNAS 路径二值化,避免权重共享带来的性能瓶颈 能够有效地避免权重共享带来的性能瓶颈,提高搜索结果的准确性 计算成本较高,需要训练多个独立的子网络

3.4.5 优势与挑战:硬币的两面

基于梯度优化的搜索策略,凭借其独特的优势,在 NAS 领域占据了重要的地位。然而,它也面临着一些挑战,需要我们不断探索和改进。

3.4.5.1 优势

  • 高效性: 梯度优化算法以其高效性著称,能够快速地在参数空间中找到最优解。相比于需要大量评估的传统方法,基于梯度优化的 NAS 方法能够显著减少搜索时间,降低计算成本。
  • 端到端优化: 梯度优化方法可以将架构参数和网络权重参数同时进行优化,实现真正的端到端学习,从而更好地协同优化架构和权重,提升模型性能。
  • 理论基础坚实: 梯度优化方法拥有完善的数学理论基础,例如梯度下降、反向传播等,使得我们可以更加深入地理解和分析搜索过程,并进行理论上的改进和创新。
  • 灵活性: 基于梯度优化的 NAS 方法具有很强的灵活性,可以应用于各种不同的搜索空间和任务。

3.4.5.2 挑战

  • 连续化松弛的近似性: 将离散的架构空间连续化,必然会引入一定的近似误差。连续化的架构参数可能无法完全准确地反映离散架构的性能,导致搜索结果的偏差。
  • 权重共享带来的性能瓶颈: 权重共享虽然能够提高训练效率,但也会导致子网络之间相互干扰,影响搜索结果的准确性。
  • 优化难度: 基于梯度优化的 NAS 方法通常需要优化一个复杂的非凸目标函数,容易陷入局部最优解。
  • 计算资源需求: 尽管相比于传统 NAS 方法,基于梯度优化的方法效率更高,但仍然需要大量的计算资源来进行超网络训练和架构参数优化。

3.4.6 未来展望:无限可能

尽管基于梯度优化的搜索策略面临着一些挑战,但其发展前景依然十分广阔。未来的研究方向可以包括:

  • 更加有效的连续化松弛方法: 探索更加精确的连续化松弛方法,以减少近似误差,提高搜索结果的准确性。
  • 更加高效的权重共享策略: 设计更加巧妙的权重共享策略,以减少子网络之间的干扰,同时保持训练效率。
  • 更加先进的优化算法: 应用更加先进的优化算法,例如自适应学习率算法、二阶优化算法等,以提高优化效率和避免陷入局部最优解。
  • 结合其他搜索策略: 将基于梯度优化的搜索策略与其他搜索策略(例如,强化学习、进化算法)相结合,以发挥各自的优势,提高搜索效果。
  • 自动化超参数优化: 进一步自动化 NAS 过程,包括超网络结构的设计、优化算法的选择、超参数的调整等,以降低 NAS 的使用门槛。
  • 面向特定硬件的 NAS: 设计面向特定硬件平台的 NAS 方法,以充分利用硬件的特性,提高模型在特定硬件上的性能。
  • 可解释的 NAS: 研究可解释的 NAS 方法,以理解搜索到的架构的内在机制,为模型设计提供指导。

基于梯度优化的搜索策略,作为 NAS 领域的一颗璀璨明珠,正在不断地发展和完善。相信在未来,它将会在自动化机器学习领域发挥更加重要的作用,帮助我们构建更加智能、高效的神经网络模型。

总而言之,基于梯度优化的搜索策略,如同一个精密的“梯度魔方”,通过巧妙地将架构搜索问题转化为可微优化问题,并借助强大的梯度下降算法,最终将架构空间调整到最优状态,找到性能卓越的神经网络架构。虽然它面临着一些挑战,但其高效性、灵活性和理论基础的坚实性,使其成为 NAS 领域最具潜力的发展方向之一。未来,我们期待着更多创新性的研究,能够进一步完善基于梯度优化的搜索策略,推动 NAS 技术的进步,为人工智能的发展做出更大的贡献。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U