optuna.samplers.GPSampler

class optuna.samplers.GPSampler(*, seed=None, independent_sampler=None, n_startup_trials=10, deterministic_objective=False, constraints_func=None)[source]

使用高斯过程(GP)贝叶斯优化的采样器。

此采样器将高斯过程 (GP) 拟合到目标函数,并优化采集函数以建议下一个参数。

当前实现使用
  • nu=2.5 的 Matern 核 (两次可微),

  • 每个参数长度尺度的自动相关性确定 (ARD),

  • 逆平方长度尺度、核尺度和噪声方差的 Gamma 先验,

  • 使用对数期望改进 (logEI) 作为采集函数,并且

  • 使用拟蒙特卡罗 (QMC) 采样来优化采集函数。

注意

此采样器需要 scipytorch。您可以使用 pip install scipy torch 安装这些依赖项。

参数:
  • seed (int | None) – 用于初始化内部随机数生成器的随机种子。默认为 None(随机选择一个种子)。

  • independent_sampler (BaseSampler | None) – 用于初始采样(前 n_startup_trials 次试验)和条件参数的采样器。默认为 None(使用具有相同 seed 的随机采样器)。

  • n_startup_trials (int) – 初始试验次数。默认为 10。

  • deterministic_objective (bool) – 目标函数是否是确定性的。如果为 True,采样器会将代理模型的噪声方差固定到最小值(略高于 0 以确保数值稳定性)。默认为 False

  • constraints_func (Callable[[FrozenTrial], Sequence[float]] | None)

注意

作为实验性功能在 v3.6.0 中添加。接口可能在更新版本中更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v3.6.0

方法

after_trial(study, trial, state, values)

试验后处理。

before_trial(study, trial)

试验预处理。

infer_relative_search_space(study, trial)

推断目标试验中相对采样将使用的搜索空间。

reseed_rng()

重新设置采样器的随机数生成器种子。

sample_independent(study, trial, param_name, ...)

为给定分布采样一个参数。

sample_relative(study, trial, search_space)

在给定搜索空间中采样参数。

after_trial(study, trial, state, values)[source]

试验后处理。

在目标函数返回后,试验完成并存储其状态之前,会调用此方法。

注意

作为实验性功能在 v2.4.0 中添加。接口可能在更新版本中更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v2.4.0

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制一份。

  • state (TrialState) – 结果试验状态。

  • values (Sequence[float] | None) – 结果试验值。如果试验成功,保证不为 None

返回类型:

None

before_trial(study, trial)[source]

试验预处理。

此方法在目标函数被调用之前以及试验被实例化之后立即调用。更准确地说,此方法在试验初始化期间被调用,就在调用 infer_relative_search_space() 之前。换句话说,它负责在推断搜索空间之前应执行的预处理。

注意

作为实验性功能在 v3.3.0 中添加。接口可能在更新版本中更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v3.3.0

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。

返回类型:

None

infer_relative_search_space(study, trial)[source]

推断目标试验中相对采样将使用的搜索空间。

此方法在 sample_relative() 方法之前立即调用,并且将此方法返回的搜索空间传递给它。未包含在搜索空间中的参数将使用 sample_independent() 方法进行采样。

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制一份。

返回:

一个包含参数名称和参数分布的字典。

返回类型:

dict[str, BaseDistribution]

另请参阅

请参阅 intersection_search_space() 作为 infer_relative_search_space() 的实现。

reseed_rng()[source]

重新设置采样器的随机数生成器种子。

如果试验通过 n_jobs>1 选项并行执行,Study 实例会调用此方法。在这种情况下,采样器实例会被复制,包括随机数生成器的状态,它们可能会建议相同的值。为防止此问题,此方法为每个随机数生成器分配不同的种子。

返回类型:

None

sample_independent(study, trial, param_name, param_distribution)[source]

为给定分布采样一个参数。

此方法仅针对未包含在 sample_relative() 方法返回的搜索空间中的参数调用。此方法适用于不使用参数之间关系的采样算法,例如随机采样和 TPE。

注意

内置的任何采样器在采样新参数时都会忽略失败的试验。因此,在采样器看来,失败的试验被视为已删除。

参数:
  • study (Study) – 目标研究对象。

  • trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制一份。

  • param_name (str) – 被采样参数的名称。

  • param_distribution (BaseDistribution) – 指定采样算法的先验和/或尺度的分布对象。

返回:

一个参数值。

返回类型:

Any

sample_relative(study, trial, search_space)[source]

在给定搜索空间中采样参数。

此方法在每次试验开始时调用一次,即在评估目标函数之前。此方法适用于使用参数之间关系的采样算法,例如高斯过程和 CMA-ES。

注意

内置的任何采样器在采样新参数时都会忽略失败的试验。因此,在采样器看来,失败的试验被视为已删除。

参数:
返回:

一个包含参数名称和值的字典。

返回类型:

dict[str, Any]