贝叶斯优化与SVM超参数调优实践

1、第一部分涵盖的内容是什么?

通过改变我们对改进的定义,利用兴趣点(PoI)进行探索。

2、简述在模拟支持向量机(SVM)模型准确率表面的目标函数中使用贝叶斯优化(BayesOpt)进行超参数调优包含哪些练习内容

该部分在不同章节的多个练习中均有涉及:

  • 第3章的练习
  • 需实现模拟SVM模型超参数调优准确率表面的二维函数;
  • 在 $[0, 2]^2$ 域上可视化该函数;
  • 并随机抽取100个数据点作为训练数据。

  • 第4章的练习

  • 要在 CH04/01 - BayesOpt loop.ipynb 中重现 BayesOpt 循环;
  • 声明相应测试数据;
  • 修改可视化优化进度的辅助函数;
  • 复制并修改实现 Matérn 2.5 核与 ARD 的 GP 类。

  • 第5章的练习

  • 要在 CH04/03 - Exercise 2.ipynb 中重现 BayesOpt 循环并实现重复实验;
  • 运行 UCB 策略并设置不同的权衡参数值观察性能。

  • 第6章的练习

  • 要在 CH06/03 - Exercise 2.ipynb 中重现 BayesOpt 循环及重复实验;
  • 运行 MES 策略并增大 Sobol 序列大小观察性能。

3、重新创建贝叶斯优化(BayesOpt)循环,该循环使用一维福雷斯特(Forrester)函数作为优化目标。

以下是相关步骤及代码:

首先,需要一个用于使用贝叶斯优化进行优化的目标函数,这里使用熟悉的一维福雷斯特函数,其定义域为 -5 到 5,该函数将被最大化。同时,计算福雷斯特函数在其定义域 [-5, 5] 内的值,以 xs ys 作为真实值。代码如下:

import torch

def forrester_1d(x):
    y = -((x + 1) ** 2) * torch.sin(2 * x + 2) / 5 + 1
    return y.squeeze(-1)

bound = 5
xs = torch.linspace(-bound, bound, bound * 100 + 1).unsqueeze(1)
ys = forrester_1d(xs)

另外,需要修改高斯过程(GP)模型的实现方式,使其能够与 BoTorch 中的贝叶斯优化策略一起使用。具体实现如下:

import gpytorch
import botorch

class GPModel(gpytorch.models.ExactGP, botorch.models.gpytorch.GPyTorchModel):
    num_outputs = 1
    def __init__(self, train_x, train_y, likelihood):
        super().__init__(train_x, train_y, likelihood)
        self.mean_module = gpytorch.means.ConstantMean()
        self.covar_module = gpytorch.kernels.ScaleKernel(
            gpytorch.kernels.RBFKernel()
        )

4、在实现贝叶斯优化(BayesOpt)的for循环之前,声明一个名为epsilon的变量。这个变量将作为最小改进阈值,以鼓励探索。目前将这个变量设置为0.1。

在代码中,在实现贝叶斯优化的 for 循环之前,声明变量 epsilon 并将其值设为 0.1 ,示例代码:

epsilon = 0.1

5、在 for 循环内部,像之前一样初始化改进概率(PoI)策略,但这次要指定由 best_f 参数设置的现有最优阈值为现有最优值加上存储在 epsilon 变量中的值。

for 循环内部,像之前一样初始化改进概率(PoI)策略,但这次要指定由 best_f 参数设置的现有最优阈值为现有最优值加上存储在 epsilon 变量中的值。具体代码如下:

policy = botorch.acquisition.analytic.ProbabilityOfImprovement(model, best_f=train_y.max() + epsilon)

6、PoI的探索性增强程度在很大程度上取决于存储在epsilon中的最小改进阈值。将该变量设置为0.001,可观察到不够大的改进阈值不一定能成功鼓励探索。当将该值设置为0.5时会发生什么?

设置为0.5效果良好。

<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值