多保真度优化:平衡效用与成本
立即解锁
发布时间: 2025-08-31 01:43:59 阅读量: 11 订阅数: 25 AIGC 

### 多保真度优化:平衡效用与成本
#### 1. 多保真度优化中的性能衡量
在多保真度优化中,多保真度最大熵搜索(MES)策略在选择查询的保真度时能够做出合适的决策。但它是否比仅查询真实目标函数 $f(x)$ 的常规贝叶斯优化(BayesOpt)策略更优呢?若更优,又优多少呢?
在之前的优化进度衡量中,我们记录训练集中收集到的最高目标值(即最优值)。若策略 A 收集的最优值超过策略 B,就认为策略 A 的优化效果更佳。然而,在多保真度场景下,记录最优值的方法不再适用。
下面是两个场景示例:
- **场景一**:进行了三次高保真度观测,最高观测值约为 0.8,但尚未探索 $x > 0$ 的区域,客观上优化进展甚微。
- **场景二**:仅进行了低保真度观测,无法记录高保真度的最优值,但已接近找到目标函数的最优值。
显然,我们应更倾向于场景二,但使用高保真度最优值作为进展衡量指标无法区分这两个场景,因此需要新的衡量方法。
在 BayesOpt 领域,常用的进展衡量指标是当前后验均值最高位置处的目标函数值,即后验均值最大化器。它能很好地区分上述两个场景,在场景一中,后验均值最大化器位于 0 处,目标值为 0.8;而在场景二中,后验均值最大化器约在 4.5 处。
为实现该指标,我们创建一个辅助策略,将后验均值作为获取分数。此策略需要两个组件:
- 以 后验均值作为获取分数的 BayesOpt 策略类 `PosteriorMean`,可从 `botorch.acquisition` 导入。
- 仅优化高保真度指标的包装策略,这是因为我们使用的是多保真度 GP 模型,传递模型给优化策略时需指定要处理的保真度。该包装策略通过 `botorch.acquisition.fixed_feature` 中的 `FixedFeatureAcquisitionFunction` 类实现。
以下是实现后验均值最大化器指标的代码:
```python
from botorch.acquisition.fixed_feature import FixedFeatureAcquisitionFunction
from botorch.acquisition import PosteriorMean
post_mean_policy = FixedFeatureAcquisitionFunction(
acq_function=PosteriorMean(model),
d=2,
columns=[1],
values=[1],
)
from botorch.optim import optimize_acqf
final_x, _ = optimize_acqf(
post_mean_policy,
bounds=bounds,
q=1,
num_restarts=20,
raw_samples=50,
)
def get_final_recommendation(model):
post_mean_policy = FixedFeatureAcquisitionFunction(...)
final_x, _ = optimize_acqf(...)
return torch.cat([final_x, torch.ones(1, 1)], dim=1)
```
在 BayesOpt 循环中,我们调用 `get_final_recommendation` 辅助函数,同时设置最大预算,而非最大查询次数。多保真度 BayesOpt 循环的框架如下:
```python
budget_limit = 10
recommendations = []
spent_budget = []
current_budget = 0
while current_budget < budget_limit:
rec_x = get_final_recommendation(model)
recommendat
```
0
0
复制全文
相关推荐









