贝叶斯优化(Bayesian Optimization)深入理解

本文深入探讨了贝叶斯优化在Automated Machine Learning中的作用,特别是网络超参数自动化搜索领域。对比了GridSearch和RandomSearch,详细介绍了贝叶斯优化的基本原理、算法流程及Acquisition Function的不同选择,如Probability of Improvement和Expected Improvement,展示了其在寻找最优超参数组合方面的优势。

目前在研究Automated Machine Learning,其中有一个子领域是实现网络超参数自动化搜索,而常见的搜索方法有Grid Search、Random Search以及贝叶斯优化搜索。前两者很好理解,这里不会详细介绍。本文将主要解释什么是体统(沉迷延禧攻略2333),不对应该解释到底什么是贝叶斯优化。

 

我们都知道神经网络训练是由许多超参数决定的,例如网络深度,学习率,卷积核大小等等。所以为了找到一个最好的超参数组合,最直观的的想法就是Grid Search,其实也就是穷举搜索,示意图如下。

但是我们都知道机器学习训练模型是一个非常耗时的过程,而且现如今随着网络越来越复杂,超参数也越来越多,以如今计算力而言要想将每种可能的超参数组合都实验一遍(即Grid Search)明显不现实,所以一般就是事先限定若干种可能,但是这样搜索仍然不高效。

所以为了提高搜索效率,人们提出随机搜索,示意图如下。虽然随机搜索得到的结果互相之间差异较大,但是实验证明随机搜索的确比网格搜索效果要好。

2|0II Bayesian Optimization

 

假设一组超参数组合是X=x1,x2,...,xnX=x1,x2,...,xn(xnxn表示某一个超参数的值),而这组超参数与最后我们需要优化的损失函数存在一个函数关系,我们假设是f(X)f(X)。

而目前机器学习其实是一个黑盒子(black box),即我们只知道input和output,所以上面的函数ff很难确定。所以我们需要将注意力转移到一个我们可以解决的函数上去,下面开始正式介绍贝叶斯优化。

假设我们有一个函数f:X→Rf:X→R,我们需要在X⊆XX⊆X内找到

x∗=argminx∈Xf(x)(1)(1)x∗=argminx∈Xf(x)

当ff是凸函数且定义域XX也是凸的时候,我们可以通过已被广泛研究的凸优化来处理,但是ff并不一定是凸的,而且在机器学习中ff通常是expensive black-box function,即计算一次需要花费大量资源。那么贝叶斯优化是如何处理这一问题的呢?

2|11. 详细算法

 

Sequential model-based optimization (SMBO) 是贝叶斯优化的最简形式,其算法思路如下:

下面详细介绍一下上图中的算法:

1. Input:

  • ff: 就是那个所谓的黑盒子
  • XX:是输入数据,例如图像、语音等。
  • SS:是Acquisition Function(采集函数),这个函数的作用是用来选择公式(1)中的xx,后面会详细介绍这个函数。
  • MM:是基于输入数据假设的模型,即已知的输入数据xx都是在这个模型上的,可以用来假设的模型有很多种,例如随机森林,Tree Parzen Estimators(想要了解这两种的可以阅读参考文献[1])等,但是本文主要介绍高斯模型

2. InitSamples(f,x)→D

这一步骤就是初始化获取数据集D=(X1,Y1),...,(Xn,Yn)D=(X1,Y1),...,(Xn,Yn),其中Yi=f(Xi)Yi=f(Xi),这些都是已知的。

3. 循环选参数TT次

因为每次选出参数xx后都需要计算f(x)f(x),而正如前面介绍的没计算一次函数ff,都会消耗大量资源,所以一般需要固定选参次数(或者是函数评估次数)

  • p(y|x,D)←FITMODEL(M,D)p(y|x,D)←FITMODEL(M,D)

首先我们预先假设了模型MM服从高斯分布,且已知了数据集DD,所以可以通过计算得出具体的模型具体函数表示。假设下图中的绿色实现就是基于数据集DD经过计算后的服从高斯分布模型。可以看到Each additional band of green is another half standard deviation on the output distribution.

那么高斯分布是如何计算的呢?

因为我们已经假设ff~GP(μ,K)GP(μ,K)。 (GP:高斯过程,μ:均值 K:协方差kernel,)。所以预测也是服从正态分布的,即有p(y|x,D)=N(y|μ^,σ^2)p(y|x,D)=N(y|μ^,σ^2)

  • xi←argmaxx∈XS(X,p(y|X,D))xi←argmaxx∈XS(X,p(y|X,D))

现在已经将假设的模型计算出来了,那么下一步我们需要基于假设模型的基础上选择满足公式(1)的参数了,也就是选择XX,那么如何选择呢?这就涉及到了Acquisition Function,为了让文章篇幅更易阅读,想了解Acquisition Function移步到文末。

  • yi←f(xi)yi←f(xi)

既然参数选出来了,那么当然就是要计算咯。例如我们通过上述步骤已经选出了一组超参数xixi,那么我们下一步就是将超参数带入网络中去进行训练,最后得到输出yiyi。这一步骤虽然expensive,但是没办法还是得走啊。

  • D←D⋃(xi,yi)D←D⋃(xi,yi)

更新数据集。

2|22. Acquisition Function

 

Acquisition Function的选择可以有很多种,下面将分别介绍不同的AC function。

1) Probability of improvement

假设f′=minff′=minf,这个f′f′表示目前已知的ff的最小值。

然后定义utility function如下:

 

u(x)={o,1,if f(x)>f′if f(x)≤f′ u(x)={o,if f(x)>f′1,if f(x)≤f′ 

其实也可以把上面的u(x)u(x)理解成一个reward函数,如果f(x)不大于f'就有奖励,反之没有。

probability of improvement acquisition function定义为the expected utility as a function of x:

 

aPI(x)=E[u(x)|x,D]=∫f′−∞N(f;μ(x),K(x,x))df=Φ(f′;μ(x),K(x,x))aPI(x)=E[u(x)|x,D]=∫−∞f′N(f;μ(x),K(x,x))df=Φ(f′;μ(x),K(x,x))

之后只需要求出a(x)a(x)的最大值即可求出基于高斯分布的满足要求的xx。

2) Expected improvement

上面的AC function有个缺点就是找到的xx可能是局部最优点,所以有了Expected improvement。f′f′的定义和上面一样,即f′=minff′=minf。utility function定义如下:

 

u(x)=max(0,f′−f(x))u(x)=max(0,f′−f(x))

因为我们最初的目的是找到使得f(x)最小的x,所以这个utility function的含义很好理解,即接下来找到的f(x)f(x)比已知最小的f′f′越小越好,然后选出小的程度最大的那个f(x)f(x)和f′f′之间的差距的绝对值作为奖励,如果没有更小的那么奖励则为0.

AC function定义如下:

 

aEI(x)=E[u(x)|x,D]=∫f′−∞(f′−f)N(f;μ(x),K(x,x))df=(f′−μ(x))Φ(f′;μ(x),K(x,x))+K(x,x)N(f′;μ(x),K(x,x))aEI(x)=E[u(x)|x,D]=∫−∞f′(f′−f)N(f;μ(x),K(x,x))df=(f′−μ(x))Φ(f′;μ(x),K(x,x))+K(x,x)N(f′;μ(x),K(x,x))

通过计算使得aEIaEI值最大的点即为最优点。

上式中有两个组成部分。要使得上式值最大则需要同时优化左右两个部分:

  • 左边需要尽可能的减少μ(x)μ(x)
  • 右边需要尽可能的增大方差(或协方差)K(x,x)K(x,x)

但是二者并不同能是满足,所以这是一个exploitation-exploration tradeoff。

4) Upper confidence bound

3|0Reference

 

<think>嗯,用户想了解贝叶斯优化在CNN中的应用和实现。首先,我需要回忆一下贝叶斯优化的基本原理贝叶斯优化是一种基于概率模型的超参数调优方法,利用高斯过程来建模目标函数,然后通过采集函数选择下一个评估点,从而高效地找到最优参数。这在机器学习中常用于自动化超参数调整,尤其是在计算资源有限的情况下。 接下来,我需要将贝叶斯优化与CNN结合起来。CNN中的超参数有很多,比如学习率、卷积核数量、层数、批处理大小、正则化参数等。手动调整这些参数非常耗时,而贝叶斯优化可以自动搜索最优组合。用户提供的引用中提到了贝叶斯优化用于优化学习率、卷积核个数和L2正则化系数,这些是关键的超参数。 然后,我得考虑实现步骤。首先确定超参数空间,比如学习率的范围、卷积核的可能数量。然后选择贝叶斯优化的代理模型,通常是高斯过程,但有时候也会用随机森林或者TPE。采集函数方面,常用的是期望提升(EI)或置信上界(UCB)。每次迭代评估CNN在验证集上的性能,更新代理模型,直到满足停止条件,比如达到最大迭代次数或性能收敛。 用户提供的引用中还提到了一些应用实例,比如故障诊断中的BO-CNN模型,包含5层卷积层和3个全连接层,使用了Batch Normalization和Dropout来防止过拟合,优化算法是Adam。这说明贝叶斯优化不仅用于超参数调优,还可能影响网络结构的设计。此外,Matlab代码的实现部分需要搭建CNN模型,定义超参数空间,集成贝叶斯优化算法,并进行训练和验证。 可能需要注意的问题包括计算资源的限制,因为贝叶斯优化虽然比网格搜索高效,但每次迭代都需要训练CNN,时间成本还是较高。另外,超参数空间的合理设定对优化效果至关重要,过宽或过窄都可能影响结果。引用中提到的代码实现部分可能需要用户具备一定的编程基础,特别是Matlab方面的知识。 用户可能的应用场景包括数据回归预测和故障诊断,如引用中的例子。因此,在回答时需要强调贝叶斯优化如何提升模型性能,自动化调参的优势,以及具体的实现步骤和工具。此外,用户可能对如何开始实施贝叶斯优化到自己的CNN项目中感兴趣,所以需要给出一些实用的建议,比如使用现有的库(如BayesianOptimization in Python或Matlab的相关工具),或者如何定义参数空间和评估指标。 最后,生成的相关问题需要围绕用户可能进一步想了解的内容,比如贝叶斯优化相比其他方法的优势、具体代码实现的细节、实际应用案例,以及可能遇到的挑战和解决方案。这样可以帮助用户更全面地理解主题,并引导他们深入探索。</think>### 贝叶斯优化在CNN中的应用与实现 贝叶斯优化Bayesian Optimization, BO)是一种基于概率模型的全局优化方法,常用于高效搜索复杂目标函数的极值点。在卷积神经网络(CNN)中,其主要应用于 **超参数优化** 和 **网络结构自适应调整**,以提高模型性能并减少人工调参成本[^1][^2][^3]。 --- #### **核心应用方向** 1. **超参数优化** - **关键参数**:学习率、卷积核数量、层数、批处理大小、正则化系数(如L2正则化)等。 - **优化过程**: 通过贝叶斯优化算法,将CNN在验证集上的性能(如准确率、损失值)作为目标函数,建立超参数与性能的概率模型(如高斯过程),逐步迭代找到最优参数组合[^3][^4]。 $$P(y|x) = \mathcal{N}(y; \mu(x), \sigma^2(x))$$ 其中,$x$为超参数,$y$为模型性能指标。 2. **网络结构优化** - 动态调整卷积层数、通道数等结构参数,例如通过贝叶斯优化确定最佳层数和特征提取能力。 --- #### **实现步骤** 1. **定义超参数空间** - 例如:学习率 $lr \in [10^{-5}, 10^{-3}]$,卷积核数量 $k \in \{16, 32, 64\}$,L2正则化系数 $\lambda \in [0.001, 0.1]$。 2. **选择代理模型与采集函数** - **代理模型**:高斯过程(Gaussian Process)、随机森林(Random Forest)或树结构Parzen估计器(TPE)。 - **采集函数**:期望提升(Expected Improvement, EI)或置信上界(Upper Confidence Bound, UCB)。 3. **迭代优化与验证** - 每次迭代训练CNN并评估验证集性能,更新代理模型,生成下一组候选参数,直至达到最大迭代次数或收敛[^2]。 --- #### **代码实现(以Matlab为例)** ```matlab % 定义CNN结构 layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3, 32, 'Padding', 'same') % 卷积核大小3x3,数量32 batchNormalizationLayer reluLayer maxPooling2dLayer(2, 'Stride', 2) fullyConnectedLayer(10) softmaxLayer classificationLayer]; % 贝叶斯优化超参数(学习率、L2系数) params = hyperparameters('trainNetwork', layers); params(1).Range = [1e-5, 1e-3]; % 学习率 params(2).Range = [0.001, 0.1]; % L2正则化系数 % 运行贝叶斯优化 results = bayesopt(@(optVars) trainCNN(optVars, layers, data), params, ... 'MaxObjectiveEvaluations', 30); ``` --- #### **优势与挑战** - **优势**: - 减少人工调参时间,尤其适合高维参数空间。 - 通过概率模型平衡探索(未知区域)与利用(已知最优区域)。 - **挑战**: - 计算成本较高,需多次训练CNN模型。 - 超参数范围设定需经验支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值