optuna.samplers(采样器)

samplers 模块定义了参数采样的基类,如 BaseSampler 中详细描述的。此模块中的其余类是派生自 BaseSampler 的子类,它们实现了不同的采样策略。

另请参阅

高效优化算法 教程概述了采样器类。

另请参阅

如果您想实现自己的采样器类,用户自定义采样器 教程可能会有所帮助。

另请参阅

如果您不确定使用哪种采样器,请考虑使用 AutoSampler,它会在优化过程中自动选择采样器。更多详情请参见 关于 AutoSampler 的文章

随机采样器 (RandomSampler)

网格采样器 (GridSampler)

TPE 采样器 (TPESampler)

CMA-ES 采样器 (CmaEsSampler)

NSGA-II 采样器 (NSGAIISampler)

准蒙特卡罗采样器 (QMCSampler)

高斯过程采样器 (GPSampler)

BoTorch 采样器 (BoTorchSampler)

暴力采样器 (BruteForceSampler)

浮点参数

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\) (\(\color{red}\times\) 对于无限域)

整数参数

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

类别参数

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

剪枝

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{red}\times\) (\(\blacktriangle\) 对于单目标)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

多变量优化

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

条件搜索空间

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

多目标优化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\) (\(\blacktriangle\) 对于单目标)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

批量优化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

分布式优化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

约束优化

\(\color{red}\times\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

时间复杂度 (每次试验) (*)

\(O(d)\)

\(O(dn)\)

\(O(dn \log n)\)

\(O(d^3)\)

\(O(mp^2)\) (***)

\(O(dn)\)

\(O(n^3)\)

\(O(n^3)\)

\(O(d)\)

推荐预算 (试验次数) (**)

任意数量

组合数量

100 – 1000

1000 – 10000

100 – 10000

任意数量

– 500

10 – 100

组合数量

注意

\(\color{green}\checkmark\): 支持此功能。 \(\blacktriangle\): 可用,但效率低下。 \(\color{red}\times\): 导致错误,或无接口。

(*): 我们假设 \(d\) 是搜索空间的维度,\(n\) 是已完成试验的数量,\(m\) 是目标数量,\(p\) 是种群大小(算法特定参数)。此表显示了采样算法的时间复杂度。我们可能省略了 Optuna 实现中依赖于其他项的复杂度,包括调用采样方法的 \(O(d)\) 和收集已完成试验的 \(O(n)\)。这意味着,例如,RandomSampler 的实际时间复杂度是 \(O(d+n+d) = O(d+n)\)。从另一个角度来看,除了 NSGAIISampler,所有时间复杂度都是针对单目标优化编写的。

(**): (1) 预算取决于参数数量和目标数量。(2) 如果采样器有 n_startup_trials 作为其参数之一,则此预算包含 n_startup_trials

(***): 此时间复杂度假设种群大小 \(p\) 和并行化数量是规则的。这意味着并行化数量不应超过种群大小 \(p\)

注意

采样器在初始化时通过指定 seed 参数来初始化其随机数生成器。然而,当 optuna.study.Study.optimize()n_jobs!=1 时,采样器会重新播种它们,以避免使用同一个生成器采样重复的参数。因此,在使用 n_jobs!=1 时,我们很难重现优化结果。出于同样的原因,请确保在 轻松并行化 教程中解释的分布式优化中,要么使用 seed=None,要么在不同进程中使用不同的 seed 值。

注意

有关浮点、整数或类别参数的信息,请参见 Python 式搜索空间 教程。

有关剪枝的信息,请参见 高效优化算法 教程。

有关多变量优化的信息,请参见 BaseSampler。多变量优化在 Optuna 中实现为 sample_relative()。请查看采样器的具体文档以获取更多详情。

有关条件搜索空间的信息,请参见 Python 式搜索空间 教程和 TPESamplerTPESamplergroup 选项允许 TPESampler 处理条件搜索空间。

有关多目标优化的信息,请参见 使用 Optuna 进行多目标优化 教程。

有关批量优化的信息,请参见 批量优化 教程。TPESamplerconstant_liar 选项允许 TPESampler 处理批量优化。

有关分布式优化的信息,请参见 轻松并行化 教程。TPESamplerconstant_liar 选项允许 TPESampler 处理分布式优化。

有关约束优化的信息,请参见示例

BaseSampler

采样器的基类。

网格采样器 (GridSampler)

使用网格搜索的采样器。

随机采样器 (RandomSampler)

使用随机采样的采样器。

TPE 采样器 (TPESampler)

使用 TPE(Tree-structured Parzen Estimator)算法的采样器。

CMA-ES 采样器 (CmaEsSampler)

使用 cmaes 作为后端的采样器。

高斯过程采样器 (GPSampler)

使用基于高斯过程的贝叶斯优化的采样器。

PartialFixedSampler

具有部分固定参数的采样器。

NSGA-II 采样器 (NSGAIISampler)

使用 NSGA-II 算法的多目标采样器。

NSGAIIISampler

使用 NSGA-III 算法的多目标采样器。

准蒙特卡罗采样器 (QMCSampler)

生成低差异序列的准蒙特卡罗采样器。

暴力采样器 (BruteForceSampler)

使用暴力方法的采样器。

注意

以下 optuna.samplers.nsgaii 模块定义了 NSGAIISampler 使用的交叉操作。