3.5 基于贝叶斯优化的搜索策略


文档摘要

3.5 基于贝叶斯优化的搜索策略 第三章:NAS 的核心要素:搜索策略 (Search Strategy) 3.5 基于贝叶斯优化的搜索策略 (Bayesian Optimization for NAS) 在神经网络架构搜索(NAS)的广阔天地中,搜索策略犹如指引探险家前进的罗盘,决定了我们如何在浩如烟海的架构空间中高效寻觅到性能卓越的网络结构。前文中,我们已经探讨了随机搜索、网格搜索以及进化算法等搜索策略,它们各有千秋,但在面对 NAS 固有的挑战——评估成本高昂时,往往显得力不从心。为了克服这一难题,贝叶斯优化 (Bayesian Optimization, BO) 作为一种强大的全局优化方法,应运而生,为 NAS 搜索策略带来了新的曙光。

3.5 基于贝叶斯优化的搜索策略

第三章:NAS 的核心要素:搜索策略 (Search Strategy)

3.5 基于贝叶斯优化的搜索策略 (Bayesian Optimization for NAS)

在神经网络架构搜索(NAS)的广阔天地中,搜索策略犹如指引探险家前进的罗盘,决定了我们如何在浩如烟海的架构空间中高效寻觅到性能卓越的网络结构。前文中,我们已经探讨了随机搜索、网格搜索以及进化算法等搜索策略,它们各有千秋,但在面对 NAS 固有的挑战——评估成本高昂时,往往显得力不从心。为了克服这一难题,贝叶斯优化 (Bayesian Optimization, BO) 作为一种强大的全局优化方法,应运而生,为 NAS 搜索策略带来了新的曙光。

本节,我们将聚焦于 基于贝叶斯优化的搜索策略,深入剖析其原理、优势、应用以及面临的挑战。我们将揭示 BO 如何在 NAS 的舞台上优雅起舞,以更少的评估次数,更快地找到高性能的神经网络架构。

3.5.1 贝叶斯优化:高效优化的利器

贝叶斯优化 (BO) 是一种用于黑盒函数全局优化的强大方法。这里的“黑盒函数”指的是其函数表达式未知,但可以进行评估并获取输出值的函数。在 NAS 的背景下,评估一个神经网络架构的性能(例如,在验证集上的准确率)正是这样一个黑盒函数。我们无法直接写出一个公式来预测一个架构的性能,只能通过训练并在数据集上验证来获得。

BO 的核心优势在于其样本效率高。它能够在相对较少的函数评估次数下,找到全局最优解或接近全局最优解的解。这对于 NAS 来说至关重要,因为训练和评估一个神经网络架构通常需要大量的计算资源和时间。

那么,贝叶斯优化是如何做到高效优化的呢? 其秘诀在于它巧妙地结合了先验知识后验观测,构建了一个关于目标函数的概率模型,并利用该模型来指导下一步的采样决策。

可以用一个生动的例子来比喻 BO 的工作原理:

假设我们想要在一片未知的土地上找到埋藏最深的金矿。

  • 传统方法(如网格搜索、随机搜索): 就像盲目地在土地上随机挖掘,或者按照固定的网格进行挖掘,效率低下,很可能错过金矿所在之处。

  • 贝叶斯优化: 则更像是一位经验丰富的探矿者。

    1. 先验知识(Prior): 探矿者会根据地质特征、历史数据等先验知识,对金矿可能埋藏的区域做出初步的概率估计,例如某些区域更有可能存在金矿。 这对应于 BO 中的先验概率分布,通常使用 高斯过程 (Gaussian Process, GP) 来建模。
    2. 勘探与评估(Evaluation): 探矿者会在概率较高的区域进行勘探(采样),挖掘一些样本点,并评估这些点的金矿含量(函数评估)。 这对应于 NAS 中训练和评估神经网络架构。
    3. 更新概率模型(Posterior): 根据勘探结果,探矿者会更新对金矿分布的概率估计,例如,如果在某个区域挖到了金矿,那么该区域及周围区域的金矿概率会上升。 这对应于 BO 中根据观测数据更新后验概率分布
    4. 决策下一步勘探位置(Acquisition Function): 探矿者会综合考虑已知的金矿分布勘探的不确定性,制定下一步的勘探策略,例如,选择在概率较高不确定性较大的区域进行勘探,以期尽快找到更深的金矿。 这对应于 BO 中的采集函数 (Acquisition Function),它平衡了探索 (Exploration)利用 (Exploitation)

通过不断迭代上述过程,贝叶斯优化能够逐步聚焦于最有希望的区域,并最终找到全局最优解。

3.5.2 贝叶斯优化的核心组件

贝叶斯优化主要由两个核心组件构成:

  1. 代理模型 (Surrogate Model): 用于建模目标函数的后验概率分布。 最常用的代理模型是 高斯过程 (Gaussian Process, GP)
  2. 采集函数 (Acquisition Function): 用于指导下一步采样点的选择,平衡探索 (Exploration) 和 利用 (Exploitation)。

我们分别来详细了解这两个组件:

3.5.2.1 代理模型:高斯过程 (Gaussian Process)

高斯过程 (GP) 是一种强大的非参数概率模型,它可以用来描述函数值的概率分布。 与传统的参数模型不同,GP 不需要预先假设函数的形式,而是直接对函数本身进行建模。

GP 的核心思想是: 任意有限个输入点的函数值都服从联合高斯分布。 这意味着,我们可以通过 GP 来预测未知输入点的函数值,并估计预测的不确定性。

在贝叶斯优化中,GP 作为代理模型,其作用是:

  • 根据已有的观测数据 (已评估的架构及其性能),构建目标函数 (架构性能) 的后验概率分布。 这个后验分布反映了我们对架构性能的当前认知,包括预测值和预测的不确定性。
  • 提供预测均值和预测方差。 预测均值代表了 GP 对未知架构性能的最佳估计,预测方差则代表了估计的不确定性。 这两个信息是采集函数制定采样策略的关键依据。

高斯过程的优势在于:

  • 能够处理小样本数据。 GP 即使在观测数据较少的情况下,也能提供合理的预测和不确定性估计。 这对于 NAS 这种评估成本高昂的场景非常有利。
  • 能够捕捉函数的不确定性。 GP 不仅能预测函数值,还能量化预测的不确定性,这对于平衡探索和利用至关重要。
  • 非参数性。 GP 不需要预先假设函数的形式,能够适应各种复杂的函数形状。

高斯过程的局限性在于:

  • 计算复杂度较高。 GP 的计算复杂度通常与数据量的立方成正比,当数据量较大时,计算效率会降低。 这在 NAS 中,如果已经评估了大量的架构,GP 的更新和预测可能会比较耗时。
  • 超参数调优。 GP 的性能受到超参数的影响,例如核函数及其参数。 超参数的选择和调优可能会比较复杂。

尽管如此,由于其强大的建模能力和样本效率,高斯过程仍然是贝叶斯优化中最常用的代理模型,尤其是在 NAS 领域。

3.5.2.2 采集函数 (Acquisition Function)

采集函数 (Acquisition Function) 是贝叶斯优化的另一个核心组件,它决定了在每次迭代中,我们应该选择哪个新的输入点(在 NAS 中,即哪个新的神经网络架构)进行评估。

采集函数的目的在于平衡探索 (Exploration) 和 利用 (Exploitation):

  • 利用 (Exploitation): 倾向于选择预测性能高的区域进行采样,以期尽快找到最优解。
  • 探索 (Exploration): 倾向于选择不确定性高的区域进行采样,以获取更多关于目标函数的信息,避免陷入局部最优。

理想的采集函数应该能够有效地平衡探索和利用,引导贝叶斯优化快速收敛到全局最优解。

常用的采集函数包括:

  • 概率改进 (Probability of Improvement, PI): PI 函数衡量的是,新的采样点能够超越当前最优值的概率。 它倾向于选择预测均值较高的区域进行探索。

    公式:

    PI(x) = P(f(x) > f(x^+)) = Φ(Z)

    其中,f(x^+) 是当前已知的最优值,f(x) 是 GP 预测的在点 x 处的函数值,Φ 是标准正态分布的累积分布函数,Z = (μ(x) - f(x^+)) / σ(x)μ(x)σ(x) 分别是 GP 预测的均值和标准差。

    直观理解: PI 函数值越高,表明在点 x 处获得比当前最优值更好的结果的概率越高。

  • 期望改进 (Expected Improvement, EI): EI 函数衡量的是,新的采样点能够带来的期望改进量。 它不仅考虑了改进的概率,还考虑了改进的幅度。 EI 函数是实践中最常用的采集函数之一。

    公式:

    EI(x) = E[max(0, f(x) - f(x^+))]

    展开后,对于高斯过程代理模型,EI 函数可以表示为:

    EI(x) = σ(x) * [Z * Φ(Z) + φ(Z)]

    其中,Z = (μ(x) - f(x^+)) / σ(x)φ 是标准正态分布的概率密度函数。

    直观理解: EI 函数值越高,表明在点 x 处采样,期望获得的性能改进量越大。 EI 函数在探索和利用之间取得了较好的平衡。

  • 置信上限 (Upper Confidence Bound, UCB): UCB 函数倾向于选择不确定性高的区域进行探索。 它通过在预测均值上加上一个与不确定性相关的项,来鼓励探索未知的区域。

    公式:

    UCB(x) = μ(x) + κ * σ(x)

    其中,κ 是一个控制探索程度的参数。 κ 越大,探索程度越高。

    直观理解: UCB 函数值越高,表明点 x 的预测性能较高,或者不确定性较大(值得探索)。 UCB 函数更侧重于探索。

选择合适的采集函数对于贝叶斯优化的性能至关重要。 在实践中,通常会根据具体问题和需求,尝试不同的采集函数,并进行调优。 期望改进 (EI) 函数由于其良好的平衡性和实践效果,通常是首选。

3.5.3 基于贝叶斯优化的 NAS 搜索策略流程

将贝叶斯优化应用于 NAS 搜索策略,其基本流程如下:

步骤详解:

  1. 初始化架构样本: 首先,需要初始化一组神经网络架构样本。 这些样本可以是随机生成的,也可以是根据先验知识设计的。 例如,可以随机生成一些具有不同层数、不同类型的卷积核、不同连接方式的架构。

  2. 训练并评估架构性能: 对于初始化的架构样本,以及后续迭代中选择的架构,需要进行训练并在验证集评估其性能(例如,验证集准确率)。 这是 NAS 中最耗时的步骤。

  3. 构建/更新高斯过程代理程代理模型: 根据已评估的架构及其性能,构建或更新高斯过程代理模型。 代理模型用于近似目标函数(架构性能),并提供预测均值和预测方差。

  4. 使用采集函数选择下一个架构: 利用采集函数,根据高斯过程代理模型的预测结果,选择下一个要评估的神经网络架构。 采集函数平衡了探索和利用,引导搜索过程向更有希望的区域移动。

  5. 是否达到停止条件? 判断是否满足停止条件。 停止条件可以是:

    • 达到预定的迭代次数。
    • 达到预定的计算资源上限。
    • 性能提升低于某个阈值。
  6. 输出最优架构: 当满足停止条件时,输出搜索过程中找到的最优神经网络架构。

3.5.4 基于贝叶斯优化的 NAS 优势与挑战

优势:

  • 样本效率高: 相比于随机搜索、网格搜索等方法,贝叶斯优化能够在更少的评估次数下,找到高性能的神经网络架构。 这对于 NAS 这种评估成本高昂的场景至关重要。
  • 能够处理非凸、高维的搜索空间: 神经网络架构搜索空间通常是非凸、高维的,贝叶斯优化作为一种全局优化方法,能够有效地处理这些挑战。
  • 能够利用先验知识: 贝叶斯优化可以结合先验知识,例如,关于架构性能的先验分布,来加速搜索过程。
  • 灵活性高: 贝叶斯优化框架具有很高的灵活性,可以根据具体问题和需求,选择不同的代理模型、采集函数和编码方式。

挑战:

  • 高斯过程的计算复杂度: 高斯过程的计算复杂度较高,当数据量较大时,计算效率会降低。 这在 NAS 中,如果已经评估了大量的架构,GP 的更新和预测可能会比较耗时。 可以使用一些近似方法来降低 GP 的计算复杂度,例如稀疏高斯过程。
  • 超参数调优: 高斯过程和采集函数的性能受到超参数的影响,例如核函数及其参数、采集函数的探索系数等。 超参数的选择和调优可能会比较复杂。 可以使用一些自动化超参数优化方法,例如 Bayesian Optimization 本身,来优化这些超参数。
  • 架构编码: 如何将神经网络架构编码成适用于贝叶斯优化的输入向量是一个挑战。 需要设计一种能够有效地表示架构特征,并保持搜索空间连续性的编码方式。
  • 冷启动问题: 在初始阶段,由于缺乏足够的观测数据,高斯过程的预测可能不够准确,导致采集函数选择的样本质量不高。 可以使用一些探索性的策略,例如随机搜索,来初始化贝叶斯优化过程。
  • 并行化: 贝叶斯优化本质上是一个串行过程,每次迭代都需要根据之前的观测结果来选择下一个样本。 如何有效地并行化贝叶斯优化,以加速 NAS 过程,是一个重要的研究方向。

3.5.5 基于贝叶斯优化的 NAS 应用案例

贝叶斯优化在 NAS 领域已经取得了广泛的应用,并涌现出了一系列优秀的 NAS 算法。 下面介绍几个典型的应用案例:

  • NASNet (Neural Architecture Search Network): NASNet 是 Google 提出的一个经典的 NAS 算法,它使用循环神经网络 (RNN) 来生成神经网络架构,并使用增强学习来训练 RNN。 为了加速搜索过程,NASNet 使用了贝叶斯优化来选择 RNN 的超参数,例如 RNN 的层数、隐藏单元数等。
  • ENAS (Efficient Neural Architecture Search): ENAS 是 Google 提出的另一个高效的 NAS 算法,它通过共享权重的方式,大大降低了架构评估的成本。 ENAS 使用贝叶斯优化来选择控制器 RNN 的超参数,以及架构搜索过程中的一些参数。
  • DARTS (Differentiable Architecture Search): DARTS 是一种基于梯度优化的 NAS 算法,它将架构搜索问题转化为一个连续优化问题。 DARTS 可以使用贝叶斯优化来选择架构搜索过程中的一些超参数,例如学习率、正则化系数等。
  • Auto-Keras: Auto-Keras 是一个自动机器学习 (AutoML) 框架,它使用贝叶斯优化来搜索神经网络架构,并自动配置模型的超参数。 Auto-Keras 可以用于各种机器学习任务,例如图像分类、文本分类等。

这些应用案例表明,贝叶斯优化是 NAS 领域一种非常有效的搜索策略,能够显著提高搜索效率,并找到高性能的神经网络架构。

3.5.6 架构编码 (Architecture Encoding)

将神经网络架构应用于贝叶斯优化前,一个关键步骤是将离散的架构空间映射到连续的向量空间,即架构编码。良好的架构编码方式应该满足以下要求:

  • 表达能力: 能够充分表达架构的各种特征,例如层数、连接方式、操作类型等。
  • 连续性: 相似的架构应该在向量空间中也彼此接近,以便贝叶斯优化能够有效地利用已有的信息。
  • 可解码性: 能够方便地将向量空间中的点解码回神经网络架构。

常用的架构编码方式包括:

  • One-Hot 编码: 对于每个架构组件(例如,卷积核大小、激活函数类型),使用 One-Hot 编码来表示其取值。 然后,将所有组件的 One-Hot 编码拼接成一个向量。 这种编码方式简单直观,但维度较高,且难以反映架构之间的相似性。
  • 嵌入编码 (Embedding Encoding): 将每个架构组件映射到一个低维的嵌入向量。 然后,将所有组件的嵌入向量拼接成一个向量。 这种编码方式能够降低维度,并反映架构之间的相似性。 可以使用神经网络来学习这些嵌入向量。
  • 基于图的编码 (Graph-Based Encoding): 将神经网络架构表示成一个有向无环图 (DAG),然后使用图神经网络 (GNN) 来学习图的嵌入向量。 这种编码方式能够有效地捕捉架构的拓扑结构信息。
  • 可变长度编码 (Variable-Length Encoding): 对于具有可变长度的架构,例如循环神经网络,可以使用可变长度的编码方式。 可以使用递归神经网络 (RNN) 来生成可变长度的编码向量。

选择合适的架构编码方式对于贝叶斯优化的性能至关重要。 需要根据具体问题和需求,选择能够有效地表达架构特征,并保持搜索空间连续性的编码方式。

3.5.7 未来发展趋势

基于贝叶斯优化的 NAS 搜索策略在未来仍有很大的发展空间。 一些值得关注的未来发展趋势包括:

  • 高效代理模型: 研究更高效的代理模型,例如深度高斯过程、神经过程等,以降低计算复杂度,并提高预测精度。
  • 自适应采集函数: 设计能够自适应调整探索和利用平衡的采集函数,以提高搜索效率。
  • 并行化贝叶斯优化: 研究并行化贝叶斯优化算法,以加速 NAS 过程。
  • 结合领域知识: 将领域知识融入到贝叶斯优化过程中,例如,关于架构设计的先验知识,以提高搜索效率。
  • 多目标优化: 将 NAS 问题转化为一个多目标优化问题,同时优化模型的性能、计算成本、能耗等多个目标。
  • 元学习: 利用元学习技术,学习不同任务之间的架构迁移规律,以加速 NAS 过程。
  • 可解释 NAS: 研究可解释的 NAS 方法,分析搜索到的架构的优势和劣势,为人工设计架构提供指导。

总而言之,贝叶斯优化作为一种强大的全局优化方法,在神经网络架构搜索领域具有广阔的应用前景。 随着研究的深入和技术的进步,基于贝叶斯优化的 NAS 搜索策略将会在自动化机器学习领域发挥越来越重要的作用。


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