3.5 基于贝叶斯优化的搜索策略 第三章:NAS 的核心要素:搜索策略 (Search Strategy) 3.5 基于贝叶斯优化的搜索策略 (Bayesian Optimization for NAS) 在神经网络架构搜索(NAS)的广阔天地中,搜索策略犹如指引探险家前进的罗盘,决定了我们如何在浩如烟海的架构空间中高效寻觅到性能卓越的网络结构。前文中,我们已经探讨了随机搜索、网格搜索以及进化算法等搜索策略,它们各有千秋,但在面对 NAS 固有的挑战——评估成本高昂时,往往显得力不从心。为了克服这一难题,贝叶斯优化 (Bayesian Optimization, BO) 作为一种强大的全局优化方法,应运而生,为 NAS 搜索策略带来了新的曙光。
在神经网络架构搜索(NAS)的广阔天地中,搜索策略犹如指引探险家前进的罗盘,决定了我们如何在浩如烟海的架构空间中高效寻觅到性能卓越的网络结构。前文中,我们已经探讨了随机搜索、网格搜索以及进化算法等搜索策略,它们各有千秋,但在面对 NAS 固有的挑战——评估成本高昂时,往往显得力不从心。为了克服这一难题,贝叶斯优化 (Bayesian Optimization, BO) 作为一种强大的全局优化方法,应运而生,为 NAS 搜索策略带来了新的曙光。
本节,我们将聚焦于 基于贝叶斯优化的搜索策略,深入剖析其原理、优势、应用以及面临的挑战。我们将揭示 BO 如何在 NAS 的舞台上优雅起舞,以更少的评估次数,更快地找到高性能的神经网络架构。
贝叶斯优化 (BO) 是一种用于黑盒函数全局优化的强大方法。这里的“黑盒函数”指的是其函数表达式未知,但可以进行评估并获取输出值的函数。在 NAS 的背景下,评估一个神经网络架构的性能(例如,在验证集上的准确率)正是这样一个黑盒函数。我们无法直接写出一个公式来预测一个架构的性能,只能通过训练并在数据集上验证来获得。
BO 的核心优势在于其样本效率高。它能够在相对较少的函数评估次数下,找到全局最优解或接近全局最优解的解。这对于 NAS 来说至关重要,因为训练和评估一个神经网络架构通常需要大量的计算资源和时间。
那么,贝叶斯优化是如何做到高效优化的呢? 其秘诀在于它巧妙地结合了先验知识和后验观测,构建了一个关于目标函数的概率模型,并利用该模型来指导下一步的采样决策。
可以用一个生动的例子来比喻 BO 的工作原理:
假设我们想要在一片未知的土地上找到埋藏最深的金矿。
传统方法(如网格搜索、随机搜索): 就像盲目地在土地上随机挖掘,或者按照固定的网格进行挖掘,效率低下,很可能错过金矿所在之处。
贝叶斯优化: 则更像是一位经验丰富的探矿者。
通过不断迭代上述过程,贝叶斯优化能够逐步聚焦于最有希望的区域,并最终找到全局最优解。
贝叶斯优化主要由两个核心组件构成:
我们分别来详细了解这两个组件:
高斯过程 (GP) 是一种强大的非参数概率模型,它可以用来描述函数值的概率分布。 与传统的参数模型不同,GP 不需要预先假设函数的形式,而是直接对函数本身进行建模。
GP 的核心思想是: 任意有限个输入点的函数值都服从联合高斯分布。 这意味着,我们可以通过 GP 来预测未知输入点的函数值,并估计预测的不确定性。
在贝叶斯优化中,GP 作为代理模型,其作用是:
高斯过程的优势在于:
高斯过程的局限性在于:
尽管如此,由于其强大的建模能力和样本效率,高斯过程仍然是贝叶斯优化中最常用的代理模型,尤其是在 NAS 领域。
采集函数 (Acquisition Function) 是贝叶斯优化的另一个核心组件,它决定了在每次迭代中,我们应该选择哪个新的输入点(在 NAS 中,即哪个新的神经网络架构)进行评估。
采集函数的目的在于平衡探索 (Exploration) 和 利用 (Exploitation):
理想的采集函数应该能够有效地平衡探索和利用,引导贝叶斯优化快速收敛到全局最优解。
常用的采集函数包括:
概率改进 (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) 函数由于其良好的平衡性和实践效果,通常是首选。
将贝叶斯优化应用于 NAS 搜索策略,其基本流程如下:
步骤详解:
初始化架构样本: 首先,需要初始化一组神经网络架构样本。 这些样本可以是随机生成的,也可以是根据先验知识设计的。 例如,可以随机生成一些具有不同层数、不同类型的卷积核、不同连接方式的架构。
训练并评估架构性能: 对于初始化的架构样本,以及后续迭代中选择的架构,需要进行训练并在验证集上评估其性能(例如,验证集准确率)。 这是 NAS 中最耗时的步骤。
构建/更新高斯过程代理程代理模型: 根据已评估的架构及其性能,构建或更新高斯过程代理模型。 代理模型用于近似目标函数(架构性能),并提供预测均值和预测方差。
使用采集函数选择下一个架构: 利用采集函数,根据高斯过程代理模型的预测结果,选择下一个要评估的神经网络架构。 采集函数平衡了探索和利用,引导搜索过程向更有希望的区域移动。
是否达到停止条件? 判断是否满足停止条件。 停止条件可以是:
输出最优架构: 当满足停止条件时,输出搜索过程中找到的最优神经网络架构。
优势:
挑战:
贝叶斯优化在 NAS 领域已经取得了广泛的应用,并涌现出了一系列优秀的 NAS 算法。 下面介绍几个典型的应用案例:
这些应用案例表明,贝叶斯优化是 NAS 领域一种非常有效的搜索策略,能够显著提高搜索效率,并找到高性能的神经网络架构。
将神经网络架构应用于贝叶斯优化前,一个关键步骤是将离散的架构空间映射到连续的向量空间,即架构编码。良好的架构编码方式应该满足以下要求:
常用的架构编码方式包括:
选择合适的架构编码方式对于贝叶斯优化的性能至关重要。 需要根据具体问题和需求,选择能够有效地表达架构特征,并保持搜索空间连续性的编码方式。
基于贝叶斯优化的 NAS 搜索策略在未来仍有很大的发展空间。 一些值得关注的未来发展趋势包括:
总而言之,贝叶斯优化作为一种强大的全局优化方法,在神经网络架构搜索领域具有广阔的应用前景。 随着研究的深入和技术的进步,基于贝叶斯优化的 NAS 搜索策略将会在自动化机器学习领域发挥越来越重要的作用。