optuna.samplers.BaseSampler

class optuna.samplers.BaseSampler[source]

サンプラーの基底クラス

Optuna では、相対サンプリング独立サンプリング という 2 種類のサンプリング戦略を 組み合わせています。

相対サンプリング は、複数のパラメータの値を同時に決定し、サンプリングアルゴリズムが パラメータ間の関係(例:相関関係)を利用できるようにするものです。相対サンプリングの 対象パラメータは infer_relative_search_space() で 決定される相対探索空間内に記述されます。

独立サンプリング は、パラメータ間の関係を考慮せずに単一のパラメータの値を決定します。 独立サンプリングの対象パラメータは、相対探索空間内に記述されていないパラメータです。

より具体的には、パラメータのサンプリングは以下の手順で行われます。 トライアルの開始時に infer_relative_search_space() が 呼び出され、トライアルの相対探索空間が決定されます。 目的関数の実行中に、相対探索空間に属するパラメータを初めてサンプリングする場合に sample_relative() が 1 度だけ呼び出されます。 相対探索空間に属さないパラメータのサンプリングには sample_independent() が使用されます。

以下の図は、トライアルのライフサイクルと、上記の 3 つのメソッドがトライアル内で どのように呼び出されるかを表しています。

../../../_images/sampling-sequence.png

メソッド

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_rng()

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

abstractmethod infer_relative_search_space(study, trial)[source]

対象トライアルで使用する相対探索空間を推測します。

このメソッドは sample_relative() メソッドの直前に呼び出され、 このメソッドで返される探索空間が渡されます。探索空間に含まれないパラメータは、 sample_independent() メソッドを使用してサンプリングされます。

Parameters:
  • study (Study) – 対象のスタディオブジェクト

  • trial (FrozenTrial) – 対象のトライアルオブジェクト このオブジェクトを変更する前にコピーを取得してください。

Returns:

パラメータ名とパラメータの分布を含む辞書

Return type:

dict[str, BaseDistribution]

See also

intersection_search_space()infer_relative_search_space() の実装例として参照してください。

reseed_rng()[source]

サンプラーの乱数生成器のシードを再設定します。

このメソッドは、n_jobs>1 オプションでトライアルが並列実行される場合、 Study インスタンスによって呼び出されます。その場合、乱数生成器の状態を含む サンプラーインスタンスが複製され、同じ値が提案される可能性があります。この問題を防ぐため、 各乱数生成器に異なるシードを割り当てます。

Return type:

None

abstractmethod 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

abstractmethod 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:

dict[str, Any]