optuna.samplers.NSGAIIISampler
- class optuna.samplers.NSGAIIISampler(*, population_size=50, mutation_prob=None, crossover=None, crossover_prob=0.9, swapping_prob=0.5, seed=None, constraints_func=None, reference_points=None, dividing_parameter=3, elite_population_selection_strategy=None, child_generation_strategy=None, after_trial_strategy=None)[source]
NSGA-IIIアルゴリズムを用いた多目的サンプリング手法。
NSGA-III(Non-dominated Sorting Genetic Algorithm III)は、多目的最適化問題に対応するために NSGA-IIを改良したアルゴリズムである。
NSGA-IIIに関する詳細情報は以下の論文を参照のこと:
- Parameters:
reference_points (np.ndarray | None) – 目的次元数の列を持つ2次元の
numpy.ndarray
。生存者を決定するための参照点リストを表す。population_size (int)
mutation_prob (float | None)
crossover (BaseCrossover | None)
crossover_prob (float)
swapping_prob (float)
seed (int | None)
constraints_func (Callable[[FrozenTrial], Sequence[float]] | None)
dividing_parameter (int)
elite_population_selection_strategy (Callable[[Study, list[FrozenTrial]], list[FrozenTrial]] | None)
child_generation_strategy (Callable[[Study, dict[str, BaseDistribution], list[FrozenTrial]], dict[str, Any]] | None)
after_trial_strategy (Callable[[Study, FrozenTrial, TrialState, Sequence[float] | None], None] | None)
非優占ソート後、境界面上の個体のうち誰が生き残るかは、各個体に最も近い参照点の疎密性に基づいて決定される。 デフォルト設定ではアルゴリズムは均一に分布した点を用いて結果の多様性を確保する。 アルゴリズムが参照点周辺の個体を優先するため、任意の 目標点 を与えることで 好み を反映させることも可能である。 :param dividing_parameter: デフォルト参照点の密度を決定するパラメータ。このパラメータは各軸方向の参照点間の分割数を決定する。 この値が小さいほど参照点の数が少なくなる。デフォルト値は3である。
reference_points
がNone
でない場合、このパラメータは使用されないことに注意。Note
reference_points
とdividing_parameter
以外のパラメータはNSGAIISampler
と同じである。Note
v3.2.0で実験的機能として追加。インターフェースは予告なく変更される可能性がある。 詳細は https://github.com/optuna/optuna/releases/tag/v3.2.0 を参照。
メソッド
after_trial
(study, trial, state, values)Trial post-processing.
before_trial
(study, trial)Trial pre-processing.
infer_relative_search_space
(study, trial)Infer the search space that will be used by relative sampling in the target trial.
Reseed sampler's random number generator.
sample_independent
(study, trial, param_name, ...)Sample a parameter for a given distribution.
sample_relative
(study, trial, search_space)Sample parameters in a given search space.
- after_trial(study, trial, state, values)[source]
トライアルの事後処理。
このメソッドは目的関数の評価が終了し、トライアルが終了して状態が保存される直前に呼び出される。
Note
v2.4.0で実験的機能として追加。インターフェースは予告なく変更される可能性がある。 詳細は https://github.com/optuna/optuna/releases/tag/v2.4.0 を参照。
- Parameters:
study (Study) – 対象のスタディオブジェクト。
trial (FrozenTrial) – 対象のトライアルオブジェクト。 このオブジェクトを変更する前にコピーを作成すること。
state (TrialState) – トライアルの最終状態。
values (Sequence[float] | None) – トライアルの評価値。トライアルが成功した場合、
None
ではない。
- Return type:
None
- before_trial(study, trial)[source]
トライアルの事前処理。
このメソッドは目的関数が呼び出される前に呼び出され、トライアルがインスタンス化された直後に実行される。 より正確には、トライアルの初期化中、
infer_relative_search_space()
が呼び出される直前に実行される。つまり、探索空間を推定する前に行うべき事前処理を担当する。Note
v3.3.0で実験的機能として追加。インターフェースは予告なく変更される可能性がある。 詳細は https://github.com/optuna/optuna/releases/tag/v3.3.0 を参照。
- Parameters:
study (Study) – 対象のスタディオブジェクト。
trial (FrozenTrial) – 対象のトライアルオブジェクト。
- Return type:
None
- infer_relative_search_space(study, trial)[source]
対象のトライアルで使用する探索空間を推定する。
このメソッドは
sample_relative()
メソッドの直前に呼び出され、 このメソッドが返す探索空間が渡される。探索空間に含まれないパラメータは、sample_independent()
メソッドを使用してサンプリングされる。- Parameters:
study (Study) – 対象のスタディオブジェクト。
trial (FrozenTrial) – 対象のトライアルオブジェクト。 このオブジェクトを変更する前にコピーを作成すること。
- Returns:
パラメータ名とパラメータの分布を含む辞書。
- Return type:
See also
intersection_search_space()
を参照。infer_relative_search_space()
の実装例。
- reseed_rng()[source]
サンプラーの乱数生成器のシードを再設定する。
このメソッドは、
n_jobs>1
オプションでトライアルを並列実行する際に、Study
インスタンスによって呼び出される。 この場合、乱数生成器の状態を含むサンプラーインスタンスが複製され、 同じ値を提案する可能性がある。この問題を防ぐため、各乱数生成器に異なるシードを割り当てる。- Return type:
None
- sample_independent(study, trial, param_name, param_distribution)[source]
指定された分布からパラメータをサンプリングする。
このメソッドは、
sample_relative()
メソッドが返す 探索空間に含まれないパラメータに対してのみ呼び出される。 ランダムサンプリングやTPEなど、パラメータ間の関係を使用しないサンプリングアルゴリズムに適している。Note
組み込みサンプラーは、新しいパラメータをサンプリングする際に失敗したトライアルを無視する。 したがって、失敗したトライアルはサンプラーの観点では削除されたものとして扱われる。
- Parameters:
study (Study) – 対象のスタディオブジェクト。
trial (FrozenTrial) – 対象のトライアルオブジェクト。 このオブジェクトを変更する前にコピーを作成すること。
param_name (str) – サンプリングするパラメータの名前。
param_distribution (BaseDistribution) – サンプリングアルゴリズムの事前分布とスケールを指定する分布オブジェクト。
- Returns:
パラメータ値。
- Return type:
Any
- sample_relative(study, trial, search_space)[source]
指定された探索空間からパラメータをサンプリングする。
このメソッドは、各トライアルの開始時に1回呼び出される。つまり、目的関数の評価の直前に呼び出される。 ガウス過程やCMA-ESなど、パラメータ間の関係を利用するサンプリングアルゴリズムに適している。
Note
組み込みサンプラーは、新しいパラメータをサンプリングする際に失敗したトライアルを無視する。 したがって、失敗したトライアルはサンプラーの観点では削除されたものとして扱われる。
- Parameters:
study (Study) – 対象のスタディオブジェクト。
trial (FrozenTrial) – 対象のトライアルオブジェクト。 このオブジェクトを変更する前にコピーを作成すること。
search_space (dict[str, BaseDistribution]) –
infer_relative_search_space()
が返す探索空間。
- Returns:
パラメータ名と値を含む辞書。
- Return type: