DC娱乐网

Optuna AutoSampler 更新:让多目标和约束优化不再需要手动选算法

AutoSampler是个智能采样器,能根据具体问题自动挑选 Optuna 里最合适的优化算法。这个工具在 Optuna

AutoSampler是个智能采样器,能根据具体问题自动挑选 Optuna 里最合适的优化算法。这个工具在 OptunaHub 上热度很高,每周下载量超过 3 万次。最早的版本对单目标优化做了专门的自动选择逻辑,为了配合下个月发布的 Optuna v4.6,AutoSampler 终于把多目标和约束优化的完整支持做完了。这篇文章会讲清楚新功能怎么用,顺带看看基准测试的表现如何。最新版本其实现在就能用了。

多目标和约束优化的实现

新版 AutoSampler 延续了之前的设计思路——分析评估预算、搜索空间、约束条件、目标数量这些因素,然后自动选一个实际效果不比默认差的采样器。

更新后的选择规则覆盖了多目标和约束优化场景。系统会在几个采样器之间自动切换(图 1):

TPESampler:处理带分类变量和条件分支的复杂搜索空间比较在行

GPSampler:连续和整数搜索空间的首选,现在支持多目标和约束了

NSGAIISampler 和 NSGAIIISampler:评估次数多的用 NSGA-II,目标多的用 NSGA-III

图1:AutoSampler 对约束优化和多目标优化的支持终于完整了

使用方式

先装依赖,optuna 需要 4.5 或更新的版本:

pip install -U optuna optunahub  pip install -r https://hub.optuna.org/samplers/auto_sampler/requirements.txt

然后用 optunahub.load_module 加载 "samplers/auto_sampler" 包,实例化 AutoSampler,就能当普通 Optuna 采样器用了。下面代码是一个多目标优化的例子:

import optuna  import optunahub     def objective(trial: optuna.Trial) -> tuple[float]:      x = trial.suggest_float("x", 0, 5)      y = trial.suggest_float("y", 0, 3)      return  4 * x**2 + 4 * y**2, (x - 5)**2 + (y - 5)**2    study = optuna.create_study(      directions=["minimize", "minimize"],      sampler=optunahub.load_module("samplers/auto_sampler").AutoSampler()  )  study.optimize(objective, n_trials=300)    print(study.best_trials)

如果之前用过 AutoSampler 的话,本地缓存可能是旧版本,所以需要加个 force_reload=True 参数强制更新一下:

>>> import optunahub; optunahub.load_module("samplers/auto_sampler", force_reload=True)

性能表现

拿最新的 AutoSampler 和 Optuna 默认采样器对比了下多目标和约束优化场景的表现。

多目标优化测试

多目标基准用的是 WFG1 问题。从图 2 能看出来 AutoSampler 的搜索效果更好。默认采样器固定用 NSGA-II 算法,AutoSampler 会根据评估次数、目标数量、搜索空间这些特征在 GPSampler、TPESampler、NSGAIISampler、NSGAIIISampler 四个方法之间动态切换。这种自适应策略让它能找到更好的解。

图2:WFG1 基准测试结果

约束优化测试

约束问题用的是 bbob-constrained 基准集里 5 维旋转 Rastrigin 函数加三个约束条件。图 3 显示 AutoSampler 又是更好的那个。

优势来自新的选择规则引入了具备约束感知能力的 GPSampler(Optuna v4.2 引入),在约束搜索空间里导航效率明显高一些。对于同时有约束和多目标的问题,还能用上 Optuna v4.5 里 GPSampler 的进一步增强。

图3:旋转 Rastrigin 函数基准测试结果

总结

这次更新让 AutoSampler 完整支持了多目标和约束优化。在集成到工作流后,基本能达到和默认采样器持平或更好的效果,而且不需要用手动选算法。这样省下的精力可以专注在问题本身,优化策略交给 Optuna 自动处理就行。

https://avoid.overfit.cn/post/67621750374c48e1a5cf8c00e11991ac

作者:Yoshihiko Ozaki