BoTorch 测试函数与基准评估:验证优化算法性能
BoTorch 是一个基于 PyTorch 的贝叶斯优化库,提供了丰富的测试函数和基准评估工具,帮助开发者验证和比较优化算法的性能。本文将详细介绍 BoTorch 的测试函数体系、使用方法以及如何通过基准评估确保优化算法的有效性。
BoTorch 测试函数概述
BoTorch 的测试函数模块位于 botorch/test_functions/ 目录下,提供了从简单到复杂的多种测试问题,涵盖单目标、多目标、带约束条件等不同场景。这些测试函数是评估优化算法性能的黄金标准,能够模拟真实世界中的各种优化挑战。
核心测试函数类型
BoTorch 测试函数主要分为以下几类:
- 基础测试问题:位于
botorch/test_functions/base.py,定义了测试函数的基本接口和属性 - 合成测试函数:位于
botorch/test_functions/synthetic.py,包含经典的单目标优化问题 - 多目标测试函数:位于
botorch/test_functions/multi_objective.py,用于多目标优化场景 - 多保真度测试函数:位于
botorch/test_functions/multi_fidelity.py,支持多保真度优化问题
常用单目标测试函数
BoTorch 实现了多种经典的单目标测试函数,适用于不同特性的优化算法测试:
- Ackley 函数:具有多个局部最优解的连续优化问题,常用于测试算法的全局搜索能力
- Rosenbrock 函数:高度非线性的连续优化问题,对优化算法的精度要求较高
- Branin 函数:具有三个全局最优解的双变量函数,适合测试算法处理多峰问题的能力
- Hartmann 函数:6 维函数,具有多个局部最优解,常用于评估高维优化算法
这些函数都继承自 SyntheticTestFunction 类,提供统一的接口进行函数评估和性能指标计算。
使用测试函数的完整流程
1. 导入测试函数
from botorch.test_functions.synthetic import Ackley, Branin, Rosenbrock
from botorch.test_functions.multi_objective import DTLZ2
2. 初始化测试问题
# 单目标测试函数
ackley = Ackley(dim=5) # 5 维 Ackley 函数
branin = Branin() # 2 维 Branin 函数
# 多目标测试函数
dtlz2 = DTLZ2(dim=6, num_objectives=2) # 6 维输入,2 个目标的 DTLZ2 函数
3. 评估函数值
import torch
X = torch.rand(, ackley.dim)
Y = ackley(X)
Y_true = ackley.evaluate_true(X)

