XX财富金融集团

新闻中心

快速通道FAST TRACK

九游app会员登录/NEWS

【机器学习】贝叶斯超参数优化原理、代码实现

2024-01-20 07:50

  概率密度函数稳定运转阶段电路在大多数机器学习流水线中已成为必不可少的一步,而贝叶斯优化则是最为广为人知的一种

  超参数优化的任务旨在帮助选择学习算法中成本(或目标)函数的一组最佳参数。这些参数可以是数据驱动的(例如,各种训练数据组合)或模型驱动的(例如神经网络中的层数、学习率、优化器、批处理大小等)。在具有深度架构的最先进复杂机器学习模型中,由于参数的组合数以及这些参数之间的相互作用,超参数优化并不是一个简单的计算任务。

  在本文中,我们将讨论贝叶斯优化作为一种具有记忆并从每次参数调整中学习的超参数优化方法。然后,我们将从头开始构建一个贝叶斯优化器,而不使用任何特定的库。

  传统的超参数优化方法,如网格搜索(grid search)和随机搜索(random search),需要多次计算给定模型的成本函数,以找到超参数的最优组合。由于许多现代机器学习架构包含大量超参数(例如深度神经网络),计算成本函数变得计算昂贵,降低了传统方法(如网格搜索)的吸引力。在这种情况下,贝叶斯优化已成为常见的超参数优化方法之一,因为它能够在迭代次数明显较少的情况下找到优化的解决方案,相较于传统方法如网格搜索和随机搜索,这得益于从每次迭代中学习。

  贝叶斯优化在概念上可能看起来复杂,但一旦实现,它会变得更简单。在这一部分中,我将提供贝叶斯优化工作原理的概念性概述,然后我们将实施它以更好地理解。

  贝叶斯优化利用贝叶斯技术对目标函数设置先验,然后添加一些新信息以得到后验函数。

  先验表示在新信息可用之前我们所知道的内容,后验表示在给定新信息后我们对目标函数的了解。

  更具体地说,收集搜索空间的样本(在这个上下文中是一组超参数),然后为给定样本计算目标函数(即训练和评估模型)。由于目标函数不容易获得,使用“替代函数”作为目标函数的贝叶斯近似。

  后验表示在那个时间点上我们对目标函数的最佳了解,并用于指导“获取函数”。获取函数(例如期望改进)优化搜索空间内位置的条件概率,以获取更有可能优化原始成本函数的新样本。

  继续使用期望改进的例子,获取函数计算超参数网格中每个点的期望改进,并返回具有最大值的点。然后,新收集的样本将通过成本函数运行,后验将被更新,这个过程重复,直到达到目标函数的可接受的优化点、产生足够好的结果,或者资源耗尽。

  本节将专注于贝叶斯优化的逐步实现,共有七个步骤。首先,我将列出这些步骤,然后提供详细的解释,以及实现代码块。

  目标函数接受一组超参数C和gamma作为输入,并返回在鸢尾花数据集上使用RBF核的支持向量分类器的负准确性。其中,C是正则化参数,gamma是RBF、poly和sigmoid核的核系数。核系数的详细信息对我们的流程并不关键,可以在这里找到。然后,我们使用load_iris加载鸢尾花数据集,并将数据分为训练集和测试集。数据准备好后,训练支持向量分类器,并返回在测试集上的负准确性。

  在这一步,我们定义超参数搜索空间的边界。我们创建一个形状为(2, 2) 的NumPy数组bounds,其中每行对应一个超参数,每列对应该超参数的下界和上界。在我们的例子中,第一个超参数是C,第二个是gamma,两者都用于训练支持向量分类器。

  设置边界的目的是限制超参数搜索空间,避免测试不太可能是最优的值,并将优化焦点放在超参数空间的最有希望的区域。我们对这个练习随机定义了边界,但在超参数范围已知的任务中,这变得很重要。

  这一步定义了我们之前讨论过的获取函数,并确定在搜索空间中要评估的下一个点。在这个具体的例子中,获取函数是期望改进(Expected Improvement, EI)函数。它测量目标函数在当前最佳观测值的基础上的期望改进,考虑到当前替代模型(高斯过程)。获取函数的定义如下:

  使用标准正态分布的累积分布函数(sps.norm.cdf)和概率密度函数(sps.norm.pdf)计算在点x处的期望改进(ei)。

  在开始贝叶斯优化循环之前,我们需要使用一些初始样本初始化高斯过程替代模型。如前所述,替代函数用于有效地逼近未知的目标函数以进行优化。高斯过程是一个概率模型,定义了对函数的先验。随着获取新数据,它允许使用贝叶斯推理来更新模型。具体而言,x_samples是从由bounds数组定义的搜索空间中随机抽样的初始点。y_samples是这些初始点对应的目标函数评估。这些样本用于训练高斯过程,并改进其替代建模。

  我们终于来到了贝叶斯优化循环。在这一步中,贝叶斯优化循环将运行指定次数(n_iter)。在每次迭代中,使用现有样本(即x_samples和y_samples)更新高斯过程模型,使用gp.fit()方法。然后,通过在参数空间生成的大量随机点(即x_random_points)优化获取函数,选择下一个由目标函数评估的样本。在这些点上评估获取函数,并选择获取函数值最大的点作为下一个样本(即x_next)。在此点记录获取函数值作为best_acq_value。最后,在选择的点上评估目标函数,并通过更新x_samples和y_samples将结果值添加到现有样本中。这个过程重复进行指定次数的迭代(即n_iter),并打印每次迭代的结果。

  最后,我们打印在贝叶斯优化循环中找到的最佳参数和最佳准确性。最佳参数是与目标函数最小值相对应的参数,这就是为什么使用np.argmin来找到y_samples最小值的索引。

  在本文中,我们介绍了机器学习流水线中的超参数优化,并深入探讨了超参数优化的世界,详细讨论了贝叶斯优化以及为什么它可能是一种相对于基本优化器(如网格搜索和随机搜索)更有效的微调策略。然后,我们逐步从头开始构建了一个用于分类的贝叶斯优化器,以更好地理解这个过程。

  特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

  成都市武侯区政府党组成员、副区长,成都市公安局武侯区分局党委书记、局长宋伟被查

  王家卫背后的女人,《繁花》里每个美人都有她的影子!倒追王家卫,先结婚后恋爱,终成他的“缪斯女神”

  苹果Vision Pro预购这一晚:很多人抢到了,代购加价1.4万,苹果却推迟发货了

  影驰预告两款名人堂 GeForce RTX 4070 SUPER 显卡:320W TGP功耗

  27999元 雷神黑武士Shark台式上新:i7-14700K+RTX 4090D

  XREAL创始人徐驰:AR眼镜将在未来10年内逐渐替代手机成为元宇宙重要终端市场

  “超满分护眼”再升级,vivo X100系列2160Hz全高频调光正式上线 Ultra龙年限定版机型公布,1月24日开售