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效果良好。
<
最低0.47元/天 解锁文章
215

被折叠的 条评论
为什么被折叠?



