当前位置: 首页 > 科技观察

调整参数以拟合目标函数后验分布的工具:贝叶斯优化

时间:2023-03-20 13:11:51 科技观察

机器学习的超参数如何优化一直是个难题。我们在模型训练中往往需要花费大量的精力去调整超参数以获得更好的结果。表现。因此,贝叶斯优化利用先验知识逼近未知目标函数的后验分布来调整超参数就变得非常重要。本文简要介绍了贝叶斯优化的基本思想和概念。更详细的推导可以参考文末提供的论文。超参数超参数是模型在训练期间无法直接从数据中学习的参数。比如随机梯度下降算法中的学习率,由于计算复杂度和算法效率,我们无法直接从数据中学习到一个比较好的学习率。但是,学习率非常重要。较大的学习率不容易使模型收敛到更合适的较小值的解,而较小的学习率往往会大大降低模型的训练速度。对于像学习率这样的超参数,我们通常需要在训练模型之前设置好。因此,对于具有很多超参数的复杂模型,微调超参数变得非常痛苦。超参数的选择对于深度神经网络也非常重要,可以极大地提高模型的性能和准确率。找到好的超参数通常需要解决两个问题:如何有效地搜索可能的超参数空间,以及在实践中至少有一些超参数会相互影响。关于如何管理调整参数的一系列大型实验。调参的简单方法在介绍如何使用贝叶斯优化调整超参数之前,我们首先要了解调参的简单方法。执行超参数调整的传统方法是一种称为网格搜索的技术。网格搜索本质上是一种手动指定一组超参数的详尽搜索方法。假设我们的模型有两个超参数learning_rate和num_layers,表搜索需要我们创建一个包含这两个超参数的搜索表,然后使用表中的每一对(learning_rate,num_layers)超参数来训练模型,并在Evaluatethe模型在交叉验证集或单独的验证集上的性能。网格搜索方法将使用性能最好的参数组作为最佳超参数。网格搜索穷举整个超参数空间,在高维空间效果不佳,容易出现维数灾难。对于随机搜索,稀疏简单随机抽样不会遇到这个问题,因此随机搜索方法在实践中被广泛使用。但是随机搜索并没有利用先验知识来选择下一组超参数,这个缺点在训练成本高的模型中尤为突出。因此,贝叶斯优化可以使用先验知识有效地调整超参数。贝叶斯优化的思想贝叶斯优化是一种近似逼近的方法。如果我们不知道函数是什么,那么我们可以使用一些已知的先验知识来近似或猜测函数是什么。这就是后验概率的核心思想。本文的假设是有一系列的观察样本,将数据一个一个地馈入模型进行训练(在线学习)。这样训练好的模型会显着服从某个函数,而这个未知函数也会完全依赖于它所学的数据。因此,我们的任务是找到一组最大化学习效果的超参数。具体来说,在y=mx+c中,m和c是参数,y和x分别是标签和特征。机器学习的任务就是找到合适的m和c来构建一个优秀的模型。贝叶斯优化可以帮助我们在众多模型中选择性能最好的模型。虽然我们可以使用交叉验证方法来找到更好的超参数,但我们不知道需要多少样本才能从候选模型列表中选择性能最佳的模型。这就是为什么贝叶斯方法可以通过减少计算任务来加快寻找最优参数的过程。同时,贝叶斯优化不依赖于人类猜测所需的样本数量。这种优化技术基于随机性和概率分布。简单来说,当我们将第一个样本输入模型时,模型会根据样本点构建一条直线。在输入第二个样本后,模型将这两个点结合起来,并从前一条线上绘制一条校正线。到第三个样本时,模型绘制了一条非线性曲线。随着样本数据的增加,模型包含更多的曲线。这就像统计学中的抽样定理,即我们从样本参数中估计出总体参数,希望构造的估计量是对总体参数的一致无偏估计。下面我们绘制了另一个非线性目标函数图。我们发现,对于给定的目标函数,它会在输入所有观测值后搜索最大值。即找到使目标函数最大化的参数(argmax)。我们的目标不是使用尽可能多的数据点来完全推断未知的目标函数,而是找到使目标函数值最大化的参数。因此,我们需要将注意力从已建立的曲线上移开。当目标函数的组合能够改善曲线形成分布时,可以称为获取函数(Acquisitionfunction),这就是贝叶斯优化背后的思想。因此,我们的目标是首先确定使目标函数取最大值的参数,然后选择下一个可能的最大值,这个最大值可能在函数曲线上。上面是一些随机积分曲线,都是根据三个黑色观察样本绘制的。我们可以看到有很多波动曲线,这表明给定一个采样点,下一个采样点可能位于函数曲线的范围内。从下面的蓝色区域可以看出,分布的方差由函数曲线的平均值给出。因为我们通过叠加对未知函数曲线的观察来估计,所以它是一种无噪声的优化方法。但是当我们需要考虑噪声优化方法时,我们的未知函数会因为噪声误差值的原因而与观察到的样本点略有偏差。贝叶斯优化的目标是我们一般希望选出获得最佳性能的超参数,所以超参数选择可以看作是一个优化问题,即优化超参数值作为自变量f(x)的性能函数.我们可以将其形式化为以下表达式:许多优化规范假设目标函数f(x)具有已知的数学形式,同时还假设它是一个易于评估的凸函数。但是对于调参来说,目标函数是未知的,是一个计算量大的非凸函数。因此,常用的优化方法难以奏效,需要专门的贝叶斯优化方法来解决此类问题。当目标函数未知且计算复杂度高时,贝叶斯优化方法非常强大。算法的基本思想是利用贝叶斯定理根据数据估计目标函数的后验分布,然后根据分布选择下一次采样。超参数的组合。贝叶斯优化充分利用了前一个采样点的信息,其优化工作是通过学习目标函数的形状,找到使结果提高到全局最大值的参数。假设采集函数基于先验分布,贝叶斯优化学习目标函数的形状。每次使用新的样本点来测试目标函数时,它都会使用此信息来更新目标函数的先验分布。然后该算法测试后验分布给出的最可能点。高斯过程要使用贝叶斯优化,我们需要一种有效的方法来对目标函数的分布进行建模。这比直接对实数建模要简单得多,因为我们只需要用可信分布对f(x)建模即可找到最优解。如果x包含连续的超参数,则有无限多个x来对f(x)建模,即构建目标函数的分布。对于这个问题,高斯过程实际上生成了一个多维高斯分布,一个高维正态分布,它足够灵活,可以对任何目标函数进行建模。逼近目标函数的高斯过程在上图中,我们假设我们的目标函数(虚线)是未知的,这是模型性能与超参数之间的实际关系。但我们的目标只是搜索可最大化性能的超参数组合。Thetrade-offbetweenexploitationandexploration一旦我们对目标函数进行了建模,那么我们就可以抽取合适的样本来尝试计算,这就涉及到了exploitation和exploration之间的权衡,也就是模型中的当前解是进一步发展,或尝试探索新的可能的解决方案。对于贝叶斯优化来说,一旦找到局部最优解,就会继续在这个区域进行采样,所以贝叶斯优化很容易陷入局部最优解。为了缓解这个问题,贝叶斯优化算法在探索和利用之间找到了平衡。探索是在尚未采样的区域中获取采样点。开发基于后验分布,在最有可能出现全局最优解的区域进行采样。我们的下一个选择点(x)应该具有相对较大的均值(开发)和相对较高的方差(探索)。选择下一个可能的最佳点,并在方差和均值之间进行权衡。由于我们正在搜索高方差分布中的下一个点,这意味着要探测新点x。高均值意味着我们在较大的偏移量/偏差处选择下一个点(x)。给定前t个观测样本,我们可以利用高斯过程计算观测值的可能分布,即μ和σ的表达式如下,其中K和k是核矩阵和由正定核导出的向量。具体来说,K_ij=k(x_i,x_j)是t×t阶矩阵,k_i=k(x_i,x_t+1)是t维向量。***,y是观测样本值的t维向量。上面的概率分布表明,对数据进行拟合后,样本点x的预测值y变成了高斯分布。而高斯分布有两个统计量,样本均值和样本方差。现在为了权衡开发和探索,我们需要选择下一个点是均值更高(开发)还是方差更高(探索)。采集函数为了编码开发和探索之间的权衡,我们需要定义一个采集函数(Acquisitionfunction)来衡量给定的下一个采样点的效果。因此,我们可以反复计算采集函数的最大值,找到下一个采样点。随着样本的增加,不同采集函数和曲线拟合的比较。UpperConfidenceBound或许最简单的获取函数是获取具有更高期望的样本点。给定参数beta,假设样本点的值是均值加上beta乘以标准差,即:通过不同的beta值,我们可以使算法倾向于发展或探索。ProbabilityofBoost概率提升获取函数背后的思想是,我们根据最大提升概率(MPI)选择下一个样本点。LiftingprobabilitiesforaGaussianprocess在上图中,***观测值是x*上的y*,绿色区域给出了x_3点的提升概率,而x_1和x_2点的提升概率很小。因此,在x_3点采样可能会比y*得到提升。其中Φ(x)是标准正态分布函数。贝叶斯优化过程上图可以直观的解释贝叶斯优化。红色曲线是实际的目标函数,我们不知道函数的确切表达式。所以我们想用高斯过程来逼近这个目标函数。通过采样点(上图中有4个采样点),我们可以画出启发式或置信曲线来拟合观察到的采样点。因此,上图中的绿色区域就是置信区域,即目标曲线最有可能出现的区域。从上面的先验知识,我们确定第二个点(f+)是***的样本观测值,所以下一个***点应该大于它或者至少等于它。所以我们画一条蓝线,下一个***点应该在这条蓝线上。因此,下一个样本在交点f+和置信区域之间,我们可以假设交点f+以下的样本可以丢弃,因为我们只需要搜索最大化目标函数的参数。所以现在我们缩小观察范围,我们迭代这个过程,直到我们找到最好的解决方案。下图是贝叶斯优化算法的伪代码:论文:TakingtheHumanOutoftheLoop:AReviewofBayesianOptimization地址:http://ieeexplore.ieee.org/document/7352306/Abstract:Bigdataapplicationsusuallyand这些系统拥有庞大的用户数量、大量复杂的软件系统、大规模的异构计算和存储架构。构建此类系统也经常面临分布式设计选择,因此最终产品(如推荐系统、药物分析工具、实时游戏引擎和语音识别等)涉及许多可调整的配置参数。这些参数通常很难由各种开发人员或团队专门编程到软件中。如果我们能够联合优化这些超参数,系统的性能将会有很大的提升。贝叶斯优化是联合优化超参数的有力工具,最近也越来越流行。它会自动调整超参数以提高产品质量和人类生产力。这篇评论文章介绍了贝叶斯优化,着重于算法的方法论并引用了一些广泛应用的例子。原文:https://cloud.google.com/blog/big-data/2017/08/hyperparameter-tuning-in-cloud-machine-learning-engine-using-bayesian-optimizationhttps://medium.com/towards-data-science/shallow-understanding-on-bayesian-optimization-324b6c1f7083【本文为机器之心专栏原文翻译,微信公众号“机器之心(id:almosthuman2014)”】点击在这里可以看到作者更多的好文章