Samplers¶
-
class
optuna.multi_objective.samplers.
BaseMultiObjectiveSampler
[源代码]¶ multi-objective sampler 基类。
该类的抽象方法和
BaseSampler
定义的抽象方法一致,除了接受 multi-objective 版 study 和 trial 实例作为参数之外。注解
在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.
-
abstract
infer_relative_search_space
(study: optuna.multi_objective.study.MultiObjectiveStudy, trial: optuna.multi_objective.trial.FrozenMultiObjectiveTrial) → Dict[str, optuna.distributions.BaseDistribution][源代码]¶ 推断将在 target trial 中使用的搜索空间。
该方法在
sample_relative()
方法之前被调用。而该方法返回的搜索空间会被传入它。那些不包含在该搜索空间中的参数将通过sample_independent()
来采样。- 参数
study -- Target study object.
trial -- Target trial object.
- 返回
一个包含了参数名和参数分布的字典。
参见
参见 作为
infer_relative_search_space()
的实现的intersection_search_space()
。
-
abstract
sample_independent
(study: optuna.multi_objective.study.MultiObjectiveStudy, trial: optuna.multi_objective.trial.FrozenMultiObjectiveTrial, param_name: str, param_distribution: optuna.distributions.BaseDistribution) → Any[源代码]¶ 对给定的分布进行参数采样。
该方法只在参数不包含在
sample_relative()
方法返回的结果中的情况下使用。该方法适用于那些不依赖参数之间关系的采样算法,比如随机采样。- 参数
study -- Target study object.
trial -- Target trial object.
param_name -- 采样参数名
param_distribution -- 指定了先验或者/和采样算法的分布对象。
- 返回
参数值。
-
abstract
sample_relative
(study: optuna.multi_objective.study.MultiObjectiveStudy, trial: optuna.multi_objective.trial.FrozenMultiObjectiveTrial, search_space: Dict[str, optuna.distributions.BaseDistribution]) → Dict[str, Any][源代码]¶ 在给定的搜索空间中采样。
在每个 trial 开始时该方法会被调用一次,也就是在目标函数被求值前被调用。该方法适用于那些依赖参数间关系的采样算法。
- 参数
study -- Target study object.
trial -- Target trial object.
search_space -- 由
infer_relative_search_space()
返回的搜索空间。
- 返回
包含了参数名和参数值的字典。
-
abstract
-
class
optuna.multi_objective.samplers.
NSGAIIMultiObjectiveSampler
(population_size: int = 50, mutation_prob: Optional[float] = None, crossover_prob: float = 0.9, swapping_prob: float = 0.5, seed: Optional[int] = None)[源代码]¶ 使用 NSGA-II 算法的 Multi-objective sampler。
NSGA-II 指 "Nondominated Sorting Genetic Algorithm II",这是一个著名的快速且优秀 multi-objective 遗传算法。
要了解更多关于 NSGA-II 的信息的话,请参考以下论文:
- 参数
population_size -- 每一代中的 个体(trial)数。
mutation_prob -- 在创建新个体时每个参数突变的概率。如果设置成
None
的话,那么该值实际上会是1.0 / len(parent_trial.params)
。其中parent_trial
是 target trial 的父代 trial。crossover_prob -- 产生新的个体时发生交叉互换的概率。
swapping_prob -- 在交叉互换中交换父代参数中每一个参数的概率。
seed -- 随机数生成器种子。
注解
在 v1.5.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.5.0.
-
class
optuna.multi_objective.samplers.
RandomMultiObjectiveSampler
(seed: Optional[int] = None)[源代码]¶ 使用随机采样的 Multi-objective sampler
该 sampler 是基于 independent sampling 的。关于 'independent sampling' 的更多细节请参考
BaseMultiObjectiveSampler
。示例
import optuna from optuna.multi_objective.samplers import RandomMultiObjectiveSampler def objective(trial): x = trial.suggest_uniform('x', -5, 5) y = trial.suggest_uniform('y', -5, 5) return x ** 2, y + 10 study = optuna.multi_objective.create_study( ["minimize", "minimize"], sampler=RandomMultiObjectiveSampler() ) study.optimize(objective, n_trials=10)
- Args:
seed: 随机数生成器种子。
注解
在 v1.4.0 中作为试验性特性引入,在未来版本中,该接口可能在没有预先告知的情况下被改变。参考 https://github.com/optuna/optuna/releases/tag/v1.4.0.