optuna.samplers.BruteForceSampler

class optuna.samplers.BruteForceSampler(seed=None, avoid_premature_stop=False)[source]

ブルートフォース法を用いたサンプラー

このサンプラーは定義された探索空間に対して網羅的な探索を行います。

使用例

import optuna


def objective(trial):
    c = trial.suggest_categorical("c", ["float", "int"])
    if c == "float":
        return trial.suggest_float("x", 1, 3, step=0.5)
    elif c == "int":
        a = trial.suggest_int("a", 1, 3)
        b = trial.suggest_int("b", a, 3)
        return a + b


study = optuna.create_study(sampler=optuna.samplers.BruteForceSampler())
study.optimize(objective)

Note

探索空間は有限である必要があります。したがって、 FloatDistributionsuggest_float() を使用する場合、step=None は指定できません。

Note

同じ Study 内で提案範囲やパラメータが変更された場合、 サンプラーが探索空間全体を探索できない可能性があります。

Parameters:
  • seed (int | None) – 探索順序を固定するためのシード値。検索順序がランダムにシャッフルされるため、 このオプションの使用は推奨されません。分散最適化環境では、このオプションを使用すると トライアルの順序が保証されず、分散最適化時の重複提案が増加する可能性があるためです。

  • avoid_premature_stop (bool) – True の場合、サンプラーは厳密な網羅的探索を行います。このオプションを 有効にすると、重複サンプリングが発生する可能性が高くなることに注意してください。 このオプションが無効(デフォルト)の場合、サンプラーは探索を停止する基準を緩め、 探索空間の完全なカバーが保証されない可能性があります。詳細については、 https://github.com/optuna/optuna/issues/5780 を参照してください。

Note

バージョン 3.1.0 で実験的機能として追加されました。このインターフェースは予告なく変更される可能性があります。 詳細については、https://github.com/optuna/optuna/releases/tag/v3.1.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_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

バージョン 2.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)

トライアルの事前処理

このメソッドは目的関数が呼び出される前に呼び出され、トライアルがインスタンス化された直後に実行されます。 より正確には、トライアルの初期化中、infer_relative_search_space() が呼び出される直前に このメソッドが実行されます。つまり、探索空間を推論する前に行うべき事前処理を担当します。

Note

バージョン 3.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:

dict[str, BaseDistribution]

See also

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

reseed_rng()

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

このメソッドは、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:

dict[str, Any]