快捷搜索:  汽车  科技

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)简单方法调参如何管理调参的一系列大型试验。超参数是指模型在训练过程中并不能直接从数据学到的参数。比如说随机梯度下降算法中的学习速率,出于计算复杂度和算法效率等,我们并不能从数据中直接学习一个比较不错的学习速度。但学习速率却又是十分重要的,较大的学习速率不易令模型收敛到较合适的较小值解,而较小的学习速率却又常常令模型的训练速度大大降低。对于像学习速率这样的超参数,我们通常需要在训练模型之前设定。因此,对于超参数众多的复杂模型,微调超参数就变得十分痛苦。超参数的选择同样对深度神经网络十分重要,它能大大提高模型的性能和精度。寻找优良的超参数通常需要解决这两个问题:如何高效地搜索可能的超参数空间,在实践中至少会有一些超参数相互影响。

机器之心编译

参与:蒋思源

如何优化机器学习的超参数一直是一个难题,我们在模型训练中经常需要花费大量的精力来调节超参数而获得更好的性能。因此,贝叶斯优化利用先验知识逼近未知目标函数的后验分布从而调节超参数就变得十分重要了。本文简单介绍了贝叶斯优化的基本思想和概念,更详细的推导可查看文末提供的论文。

超参数

超参数是指模型在训练过程中并不能直接从数据学到的参数。比如说随机梯度下降算法中的学习速率,出于计算复杂度和算法效率等,我们并不能从数据中直接学习一个比较不错的学习速度。但学习速率却又是十分重要的,较大的学习速率不易令模型收敛到较合适的较小值解,而较小的学习速率却又常常令模型的训练速度大大降低。对于像学习速率这样的超参数,我们通常需要在训练模型之前设定。因此,对于超参数众多的复杂模型,微调超参数就变得十分痛苦。

超参数的选择同样对深度神经网络十分重要,它能大大提高模型的性能和精度。寻找优良的超参数通常需要解决这两个问题:

  1. 如何高效地搜索可能的超参数空间,在实践中至少会有一些超参数相互影响。

  2. 如何管理调参的一系列大型试验。

简单方法调参

我们的目标并不是使用尽可能多的数据点完全推断未知的目标函数,而是希望能求得最大化目标函数值的参数。所以我们需要将注意力从确定的曲线上移开。当目标函数组合能提升曲线形成分布时,其就可以称为采集函数(Acquisition funtion),这就是贝叶斯优化背后的思想。

因此,我们的目标首要就是确定令目标函数取最大值的参数,其次再选择下一个可能的最大值,该最大值可能就是在函数曲线上。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(1)

上图是许多随机集成曲线,它们都由三个黑色的观察样本所绘制而出。我们可以看到有许多波动曲线,它表示给定一个采样点,下一个采样点可能位于函数曲线的范围。从下方的蓝色区域可以看出,分布的方差是由函数曲线的均值得出。

因为我们叠加未知函数曲线的观察值而进行估计,所以这是一种无噪声的优化方法。但是当我们需要考虑噪声优化方法时,我们未知的函数将会因为噪声误差值而轻微地偏离观察样本点。

贝叶斯优化的目标

我们一般希望能选取获得最优性能的超参数,因此超参数选择就可以看作为一种最优化问题,即最优化超参数值为自变量的性能函数 f(x)。我们可以形式化为以下表达式:

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(2)

许多优化设定都假设目标函数 f(x) 是已知的数学形式,同时还假定它为容易评估的凸函数。但是对于调参来说,目标函数是未知的,且它为计算昂贵的非凸函数。所以常用的优化方法很难起到作用,我们需要专门的贝叶斯优化方法来解决这一类问题。

贝叶斯优化方法在目标函数未知且计算复杂度高的情况下极其强大,该算法的基本思想是基于数据使用贝叶斯定理估计目标函数的后验分布,然后再根据分布选择下一个采样的超参数组合。

贝叶斯优化充分利用了前一个采样点的信息,其优化的工作方式是通过对目标函数形状的学习,并找到使结果向全局最大提升的参数。贝叶斯优化根据先验分布,假设采集函数而学习到目标函数的形状。在每一次使用新的采样点来测试目标函数时,它使用该信息来更新目标函数的先验分布。然后,算法测试由后验分布给出的最值可能点。

高斯过程

为了使用贝叶斯优化,我们需要一种高效的方式来对目标函数的分布建模。这比直接对真实数字建模要简单地多,因为我们只需要用一个置信的分布对 f(x) 建模就能求得最优解。如果 x 包含连续型超参数,那么就会有无穷多个 x 来对 f(x) 建模,即对目标函数构建一个分布。对于这个问题,高斯过程(Gaussian Process)实际上生成了多维高斯分布,这种高维正态分布足够灵活以对任何目标函数进行建模。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(3)

逼近目标函数的高斯过程。

在上图中,假定我们的目标函数(虚线)未知,该目标函数是模型性能和超参数之间的实际关系。但我们的目标仅仅是搜索令性能达到最优的超参数组合。

开发和探索之间的权衡

一旦我们对目标函数建了模,那么我们就能抽取合适的样本尝试计算,这就涉及到了开发(exploitation)和探索(exploration)之间的权衡,即模型到底是在当前最优解进一步开发,还是尝试探索新的可能解。

对于贝叶斯优化,一旦它找到了局部最优解,那么它就会在这个区域不断采样,所以贝叶斯优化很容易陷入局部最优解。为了减轻这个问题,贝叶斯优化算法会在探测和开发 (exploration and exploitation) 中找到一个平衡点。

探测(exploration)就是在还未取样的区域获取采样点。开发(exploitation)就是根据后验分布,在最可能出现全局最优解的区域进行采样。我们下一个选取点(x)应该有比较大的均值(开发)和比较高的方差(探索)。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(4)

选择下一个可能的最大点,并在方差和均值间权衡。因为我们在高方差分布中搜索下一点,这意味着探测新的点 x。高均值意味着我们在较大偏移/偏差下选择下一点(x)。

在给定前 t 个观察样本,我们可以利用高斯过程计算出观察值的可能分布,即:

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(5)

μ和σ的表达式如下,其中 K 和 k 是由正定核推导出的核矩阵和向量。具体来说,K_ij=k(x_i,x_j) 为 t 乘 t 阶矩阵,k_i=k(x_i,x_t 1) 为 t 维向量。最后,y 为观察样本值的 t 维向量。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(6)

[Image: file:///-/blob/RYFAAA1FF4g/9ESrR8DT3ddY6ssP9w-aMQ] 上面的概率分布表明在拟合数据后,样本点 x 的预测值 y 成高斯分布。并且该高斯分布有样本均值和样本方差这两个统计量。现在为了权衡开发和探索,我们需要选择下一点到底是均值较高(开发)还是方差较大(探索)。

采集函数

为了编码开发探索之间的权衡,我们需要定义一个采集函数(Acquisition function)而度量给定下一个采样点,到底它的效果是怎样的。因此我们就可以反复计算采集函数的极大值而寻找下一个采样点。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(7)

随着样本增加,不同的采集函数和曲线拟合的对比。

上置信边界

也许最简单的采集函数就是采取有较高期望的样本点。给定参数 beta,它假设该样本点的值为均值加上 beta 倍标准差,即:

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(8)

通过不同的 beta 值,我们可以令算法倾向于开发还是探索。

提升的概率

提升采集函数概率背后的思想,即我们在最大化提升概率(MPI)的基础上选择下一个采样点。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(9)

高斯过程的提升概率。

在上图中,最大观察值是在 x*上的 y*,绿色区域给出了在 x_3 点的提升概率,而 x_1 和 x_2 点的提升概率非常小。因此,在 x_3 点抽样可能会在 y*的基础上得到提升。

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(10)

其中Φ(x) 为标准正态分布函数。

贝叶斯优化过程

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(11)

上图可以直观地解释贝叶斯优化。其中红色的曲线为实际的目标函数,并且我们并不知道该函数确切的表达式。所以我们希望使用高斯过程逼近该目标函数。通过采样点(上图有 4 个抽样点),我们能够得出直观或置信曲线以拟合观察到的样本点。所以上图绿色的区域为置信域,即目标曲线最有可能处于的区域。从上面的先验知识中,我们确定了第二个点(f )为最大的样本观察值,所以下一个最大点应该要比它大或至少与之相等。因此,我们绘制出一条蓝线,并且下一个最大点应该位于这一条蓝线之上。因此,下一个采样在交叉点 f 和置信域之间,我们能假定在 f 点以下的样本是可以丢弃的,因为我们只需要搜索令目标函数取极大值的参数。所以现在我们就缩小了观察区域,我们会迭代这一过程,直到搜索到最优解。下图是贝叶斯优化算法的伪代码:

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(12)

论文:Taking the Human Out of the Loop: A Review of Bayesian Optimization

贝叶斯估计的显著性(拟合目标函数后验分布的调参利器)(13)

地址:http://ieeexplore.ieee.org/document/7352306/

摘要:大数据应用通常和复杂系统联系到一起,这些系统拥有巨量用户、大量复杂性软件系统和大规模异构计算与存储架构。构建这样的系统通常也面临着分布式的设计选择,因此最终产品(如推荐系统、药物分析工具、实时游戏引擎和语音识别等)涉及到许多可调整的配置参数。这些参数通常很难由各种开发者或团队具体地编入软件中。如果我们能联合优化这些超参数,那么系统的性能将得到极大的提升。贝叶斯优化是一种联合优化超参数的强力工具,并且最近也变得越来越流行。它能自动调节超参数以提升产品质量和人类生产力。该综述论文介绍了贝叶斯优化,并重点关注该算法的方法论和列举一些广泛应用的案例。

猜您喜欢: