From 5f070249fb1048f4665a83efec061a929a464edf Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 13 Nov 2024 09:31:55 +0100 Subject: [PATCH 01/11] Add a draft of c-TPE --- package/samplers/ctpe/LICENSE | 21 +++ package/samplers/ctpe/README.md | 111 +++++++++++++++ package/samplers/ctpe/__init__.py | 4 + package/samplers/ctpe/components.py | 48 +++++++ package/samplers/ctpe/parzen_estimator.py | 162 ++++++++++++++++++++++ package/samplers/ctpe/requirements.txt | 1 + package/samplers/ctpe/sampler.py | 122 ++++++++++++++++ 7 files changed, 469 insertions(+) create mode 100644 package/samplers/ctpe/LICENSE create mode 100644 package/samplers/ctpe/README.md create mode 100644 package/samplers/ctpe/__init__.py create mode 100644 package/samplers/ctpe/components.py create mode 100644 package/samplers/ctpe/parzen_estimator.py create mode 100644 package/samplers/ctpe/requirements.txt create mode 100644 package/samplers/ctpe/sampler.py diff --git a/package/samplers/ctpe/LICENSE b/package/samplers/ctpe/LICENSE new file mode 100644 index 00000000..f6547d35 --- /dev/null +++ b/package/samplers/ctpe/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Shuhei Watanabe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md new file mode 100644 index 00000000..42582c22 --- /dev/null +++ b/package/samplers/ctpe/README.md @@ -0,0 +1,111 @@ +--- +author: Shuhei Watanabe +title: c-TPE; Tree-structured Parzen Estimator with Inequality Constraints for Expensive Hyperparameter Optimization +description: The optimizer that reproduces the algorithm described in the paper ``c-TPE; Tree-structured Parzen Estimator with Inequality Constraints for Expensive Hyperparameter Optimization''. +tags: [sampler, tpe, c-tpe, paper, research] +optuna_versions: [v4.1.0] +license: MIT License +--- + +## Abstract + +This package aims to reproduce the TPE algorithm used in the paper published at IJCAI'23: + +- [c-TPE: Tree-structured Parzen Estimator with Inequality Constraints for Expensive Hyperparameter Optimization](https://arxiv.org/abs/2211.14411) + +The default parameter set of this sampler is the recommended setup from the paper and the experiments in the paper can also be reproduced by this sampler. + +## Class or Function Names + +- cTPESampler + +## Installation + +The version constraint of this package is Optuna v4.0.0 or later. + +```shell +# The requirement is only Optuna. +$ pip install optuna + +# You can also optionally install as follows: +$ pip install -r https://hub.optuna.org/samplers/ctpe/requirements.txt +``` + +## Example + +TODO: Change here. + +This sampler supports the arguments discussed in [the original paper](https://arxiv.org/abs/2304.11127) and can be used in this way. + +```python +import numpy as np + +import optuna + +import optunahub + + +def objective(trial): + x = trial.suggest_float("x", -5, 5) + y = trial.suggest_int("y", -5, 5) + z = trial.suggest_categorical("z", ["a", "aa", "aaa"]) + return len(z) * (x**2 + y**2) + + +module = optunahub.load_module(package="samplers/tpe_tutorial") +optuna.logging.set_verbosity(optuna.logging.CRITICAL) +arg_choices = { + "consider_prior": [True, False], + "consider_magic_clip": [True, False], + "multivariate": [True, False], + "b_magic_exponent": [0.5, 1.0, 2.0, np.inf], + "min_bandwidth_factor": [0.01, 0.1], + "gamma_strategy": ["linear", "sqrt"], + "weight_strategy": ["uniform", "old-decay", "old-drop", "EI"], + "bandwidth_strategy": ["optuna", "hyperopt", "scott"], + "categorical_prior_weight": [0.1, None], +} +for arg_name, choices in arg_choices.items(): + results = [] + for choice in choices: + print(arg_name, choice) + sampler = module.CustomizableTPESampler(seed=0, **{arg_name: choice}) + study = optuna.create_study(sampler=sampler) + study.optimize(objective, n_trials=100 if arg_name != "b_magic_exponent" else 200) + results.append(study.trials[-1].value) + + print(f"Did every setup yield different results for {arg_name}?: {len(set(results)) == len(results)}") + +``` + +In the paper, the following arguments, which do not exist in Optuna, were researched: + +- `gamma_strategy`: The splitting algorithm in Table 3. The choices are `linear` and `sqrt`. +- `gamma_beta`: The beta parameter for the splitting algorithm in Table 3. This value must be positive. +- `weight_strategy`: The weighting algorithm in Table 3. The choices are `uniform`, `old-decay`, `old-drop`, and `EI`. +- `categorical_prior_weight`: The categorical bandwidth in Table 3. If `None`, the Optuna default algorithm will be used. +- `bandwidth_strategy`: The bandwidth selection heuristic in Table 6. The choices are `optuna`, `hyperopt`, and `scott`. +- `min_bandwidth_factor`: The minimum bandwidth factor in Table 6. This value must be positive. +- `b_magic_exponent`: The exponent alpha in Table 6. Optuna takes 1.0 by default. + +For more details, please check [the paper](https://arxiv.org/abs/2304.11127). + +### Bibtex + +When you use this sampler, please cite the following: + +```bibtex +@inproceedings{watanabe_ctpe_ijcai_2023, + title={{c-TPE}: Tree-structured {P}arzen Estimator with Inequality Constraints for Expensive Hyperparameter Optimization}, + author={Watanabe, Shuhei and Hutter, Frank}, + booktitle={International Joint Conference on Artificial Intelligence}, + year={2023} +} + +@inproceedings{watanabe_ctpe_workshop_2022, + title={{c-TPE}: Generalizing Tree-structured {P}arzen Estimator with Inequality Constraints for Continuous and Categorical Hyperparameter Optimization}, + author={Watanabe, Shuhei and Hutter, Frank}, + journal = {Gaussian Processes, Spatiotemporal Modeling, and Decision-making Systems Workshop at Advances in Neural Information Processing Systems}, + year={2022} +} +``` diff --git a/package/samplers/ctpe/__init__.py b/package/samplers/ctpe/__init__.py new file mode 100644 index 00000000..079ad70e --- /dev/null +++ b/package/samplers/ctpe/__init__.py @@ -0,0 +1,4 @@ +from .sampler import cTPESampler + + +__all__ = ["cTPESampler"] diff --git a/package/samplers/ctpe/components.py b/package/samplers/ctpe/components.py new file mode 100644 index 00000000..71a8d6d1 --- /dev/null +++ b/package/samplers/ctpe/components.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +import numpy as np + + +class GammaFunc: + def __init__(self, strategy: str, beta: float): + strategy_choices = ["linear", "sqrt"] + if strategy not in strategy_choices: + raise ValueError(f"strategy must be in {strategy_choices}, but got {strategy}.") + + self._strategy = strategy + self._beta = beta + + def __call__(self, x: int) -> int: + if self._strategy == "linear": + n = int(np.ceil(self._beta * x)) + elif self._strategy == "sqrt": + n = int(np.ceil(self._beta * np.sqrt(x))) + else: + assert "Should not reach." + + return min(n, 25) + + +class WeightFunc: + def __init__(self, strategy: str): + strategy_choices = ["old-decay", "old-drop", "uniform"] + if strategy not in strategy_choices: + raise ValueError(f"strategy must be in {strategy_choices}, but got {strategy}.") + + self._strategy = strategy + + def __call__(self, x: int) -> np.ndarray: + if x == 0: + return np.asarray([]) + elif x < 25 or self._strategy == "uniform": + return np.ones(x) + elif self._strategy == "old-decay": + ramp = np.linspace(1.0 / x, 1.0, num=x - 25) + flat = np.ones(25) + return np.concatenate([ramp, flat], axis=0) + elif self._strategy == "old-drop": + weights = np.ones(x) + weights[:-25] = 1e-12 + return weights + else: + assert "Should not reach." diff --git a/package/samplers/ctpe/parzen_estimator.py b/package/samplers/ctpe/parzen_estimator.py new file mode 100644 index 00000000..4bba2390 --- /dev/null +++ b/package/samplers/ctpe/parzen_estimator.py @@ -0,0 +1,162 @@ +from __future__ import annotations + +from collections.abc import Callable +from typing import NamedTuple + +import numpy as np +from optuna.distributions import CategoricalDistribution +from optuna.samplers._tpe.parzen_estimator import _ParzenEstimator +from optuna.samplers._tpe.probability_distributions import _BatchedCategoricalDistributions +from optuna.samplers._tpe.probability_distributions import _BatchedDiscreteTruncNormDistributions +from optuna.samplers._tpe.probability_distributions import _BatchedDistributions +from optuna.samplers._tpe.probability_distributions import _BatchedTruncNormDistributions + + +class _CustomizableParzenEstimatorParameters(NamedTuple): + consider_prior: bool + prior_weight: float | None + consider_magic_clip: bool + weights: Callable[[int], np.ndarray] + multivariate: bool + b_magic_exponent: float + min_bandwidth_factor: float + bandwidth_strategy: str + categorical_prior_weight: float | None + + +def _bandwidth_hyperopt( + mus: np.ndarray, + low: float, + high: float, + step: float | None, +) -> np.ndarray: + step_or_0 = step or 0 + sorted_indices = np.argsort(mus) + sorted_mus_with_endpoints = np.empty(len(mus) + 2, dtype=float) + sorted_mus_with_endpoints[0] = low - step_or_0 / 2 + sorted_mus_with_endpoints[1:-1] = mus[sorted_indices] + sorted_mus_with_endpoints[-1] = high + step_or_0 / 2 + sorted_sigmas = np.maximum( + sorted_mus_with_endpoints[1:-1] - sorted_mus_with_endpoints[0:-2], + sorted_mus_with_endpoints[2:] - sorted_mus_with_endpoints[1:-1], + ) + return sorted_sigmas[np.argsort(sorted_indices)] + + +def _bandwidth_optuna( + n_observations: int, + consider_prior: bool, + domain_range: float, + dim: int, +) -> np.ndarray: + SIGMA0_MAGNITUDE = 0.2 + sigma = SIGMA0_MAGNITUDE * max(n_observations, 1) ** (-1.0 / (dim + 4)) * domain_range + return np.full(shape=(n_observations + consider_prior,), fill_value=sigma) + + +def _bandwidth_scott(mus: np.ndarray) -> np.ndarray: + std = np.std(mus, ddof=int(mus.size > 1)) + IQR = np.subtract.reduce(np.percentile(mus, [75, 25])) + return np.full_like(mus, 1.059 * min(IQR / 1.34, std) * mus.size**-0.2) + + +def _clip_bandwidth( + sigmas: np.ndarray, + n_observations: int, + domain_range: float, + consider_prior: bool, + consider_magic_clip: bool, + b_magic_exponent: float, + min_bandwidth_factor: float, +) -> np.ndarray: + # We adjust the range of the 'sigmas' according to the 'consider_magic_clip' flag. + maxsigma = 1.0 * domain_range + if consider_magic_clip: + bandwidth_factor = max( + min_bandwidth_factor, 1.0 / (1 + n_observations + consider_prior) ** b_magic_exponent + ) + minsigma = bandwidth_factor * domain_range + else: + minsigma = 1e-12 + + clipped_sigmas = np.asarray(np.clip(sigmas, minsigma, maxsigma)) + if consider_prior: + clipped_sigmas[-1] = maxsigma + + return clipped_sigmas + + +class _CustomizableParzenEstimator(_ParzenEstimator): + def _calculate_numerical_distributions( + self, + observations: np.ndarray, + low: float, + high: float, + step: float | None, + parameters: _CustomizableParzenEstimatorParameters, + ) -> _BatchedDistributions: + domain_range = high - low + (step or 0) + consider_prior = parameters.consider_prior or len(observations) == 0 + + if consider_prior: + mus = np.append(observations, [0.5 * (low + high)]) + else: + mus = observations.copy() + + if parameters.bandwidth_strategy == "hyperopt": + sigmas = _bandwidth_hyperopt(mus, low, high, step) + elif parameters.bandwidth_strategy == "optuna": + sigmas = _bandwidth_optuna( + n_observations=len(observations), + consider_prior=consider_prior, + domain_range=domain_range, + dim=len(self._search_space), + ) + elif parameters.bandwidth_strategy == "scott": + sigmas = _bandwidth_scott(mus) + else: + raise ValueError(f"Got unknown bandwidth_strategy={parameters.bandwidth_strategy}.") + + sigmas = _clip_bandwidth( + sigmas=sigmas, + n_observations=len(observations), + domain_range=domain_range, + consider_magic_clip=parameters.consider_magic_clip, + consider_prior=consider_prior, + b_magic_exponent=parameters.b_magic_exponent, + min_bandwidth_factor=parameters.min_bandwidth_factor, + ) + + if step is None: + return _BatchedTruncNormDistributions(mus, sigmas, low, high) + else: + return _BatchedDiscreteTruncNormDistributions(mus, sigmas, low, high, step) + + def _calculate_categorical_distributions( + self, + observations: np.ndarray, + param_name: str, + search_space: CategoricalDistribution, + parameters: _CustomizableParzenEstimatorParameters, + ) -> _BatchedDistributions: + choices = search_space.choices + n_choices = len(choices) + if len(observations) == 0: + return _BatchedCategoricalDistributions( + weights=np.full((1, n_choices), fill_value=1.0 / n_choices) + ) + + n_kernels = len(observations) + parameters.consider_prior + observed_indices = observations.astype(int) + if parameters.categorical_prior_weight is None: + weights = np.full(shape=(n_kernels, n_choices), fill_value=1.0 / n_kernels) + weights[np.arange(len(observed_indices)), observed_indices] += 1 + weights /= weights.sum(axis=1, keepdims=True) + else: + assert 0 <= parameters.categorical_prior_weight <= 1 + b = parameters.categorical_prior_weight + weights = np.full(shape=(n_kernels, n_choices), fill_value=b / (n_choices - 1)) + weights[np.arange(len(observed_indices)), observed_indices] = 1 - b + weights[-1] = 1.0 / n_choices + + return _BatchedCategoricalDistributions(weights) diff --git a/package/samplers/ctpe/requirements.txt b/package/samplers/ctpe/requirements.txt new file mode 100644 index 00000000..afa8210b --- /dev/null +++ b/package/samplers/ctpe/requirements.txt @@ -0,0 +1 @@ +optuna>=4.0.0 diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py new file mode 100644 index 00000000..ee3f436c --- /dev/null +++ b/package/samplers/ctpe/sampler.py @@ -0,0 +1,122 @@ +from __future__ import annotations + +from collections.abc import Callable +from collections.abc import Sequence +from typing import Any + +import numpy as np +from optuna.distributions import BaseDistribution +from optuna.logging import get_logger +from optuna.samplers import TPESampler +from optuna.samplers._tpe.parzen_estimator import _ParzenEstimator +from optuna.study import Study +from optuna.trial import FrozenTrial +from optuna.trial import TrialState + +from .components import GammaFunc +from .components import WeightFunc +from .parzen_estimator import _CustomizableParzenEstimator +from .parzen_estimator import _CustomizableParzenEstimatorParameters + + +_logger = get_logger(f"optuna.{__name__}") + + +def _split_trials( + study: Study, trials: list[FrozenTrial], n_below: int, enable_constriants: bool +) -> tuple[list[FrozenTrial], list[FrozenTrial]]: + return [], [] + + +class cTPESampler(TPESampler): + def __init__( + self, + *, + consider_prior: bool = True, + prior_weight: float = 1.0, + consider_magic_clip: bool = True, + n_startup_trials: int = 10, + n_ei_candidates: int = 24, + seed: int | None = None, + categorical_prior_weight: float | None = 0.2, + multivariate: bool = True, + b_magic_exponent: float = np.inf, + min_bandwidth_factor: float = 0.01, + gamma_strategy: str = "sqrt", + gamma_beta: float = 0.25, + weight_strategy: str = "uniform", + bandwidth_strategy: str = "scott", + constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, + ): + gamma = GammaFunc(strategy=gamma_strategy, beta=gamma_beta) + weights = WeightFunc(strategy=weight_strategy) + super().__init__( + consider_prior=consider_prior, + prior_weight=prior_weight, + consider_magic_clip=consider_magic_clip, + consider_endpoints=True, + warn_independent_sampling=False, + n_startup_trials=n_startup_trials, + n_ei_candidates=n_ei_candidates, + gamma=gamma, + weights=weights, + seed=seed, + multivariate=multivariate, + ) + self._parzen_estimator_cls = _CustomizableParzenEstimator + self._parzen_estimator_parameters = _CustomizableParzenEstimatorParameters( + consider_prior=consider_prior, + prior_weight=prior_weight, + consider_magic_clip=consider_magic_clip, + weights=weights, + multivariate=multivariate, + b_magic_exponent=b_magic_exponent, + min_bandwidth_factor=min_bandwidth_factor, + bandwidth_strategy=bandwidth_strategy, + categorical_prior_weight=categorical_prior_weight, + ) + self._weight_strategy = weight_strategy + + def _sample( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> dict[str, Any]: + if study._is_multi_objective(): + _logger.warning("Multi-objective c-TPE does not exist in the original paper.") + + trials = study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True) + + # We divide data into below and above. + n_trials = len(trials) + below_trials, above_trials = _split_trials( + study, + trials, + self._gamma(n_trials), + self._constraints_func is not None, + ) + + mpe_below = self._build_parzen_estimator( + study, search_space, below_trials, handle_below=True + ) + mpe_above = self._build_parzen_estimator( + study, search_space, above_trials, handle_below=False + ) + + samples_below = mpe_below.sample(self._rng.rng, self._n_ei_candidates) + acq_func_vals = self._compute_acquisition_func(samples_below, mpe_below, mpe_above) + ret = TPESampler._compare(samples_below, acq_func_vals) + + for param_name, dist in search_space.items(): + ret[param_name] = dist.to_external_repr(ret[param_name]) + + return ret + + def _compute_acquisition_func( + self, + samples: dict[str, np.ndarray], + mpe_below: _ParzenEstimator, + mpe_above: _ParzenEstimator, + ) -> np.ndarray: + log_likelihoods_below = mpe_below.log_pdf(samples) + log_likelihoods_above = mpe_above.log_pdf(samples) + acq_func_vals = log_likelihoods_below - log_likelihoods_above + return acq_func_vals From a62a22d1d5ac4ad44150cfc1a2711d9b66382bd3 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Thu, 14 Nov 2024 04:24:03 +0100 Subject: [PATCH 02/11] Add some comp --- package/samplers/ctpe/sampler.py | 35 +++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py index ee3f436c..b5f76db7 100644 --- a/package/samplers/ctpe/sampler.py +++ b/package/samplers/ctpe/sampler.py @@ -9,6 +9,7 @@ from optuna.logging import get_logger from optuna.samplers import TPESampler from optuna.samplers._tpe.parzen_estimator import _ParzenEstimator +from optuna.samplers._tpe.sampler import _split_trials from optuna.study import Study from optuna.trial import FrozenTrial from optuna.trial import TrialState @@ -22,7 +23,7 @@ _logger = get_logger(f"optuna.{__name__}") -def _split_trials( +def _ctpe_split_trials( study: Study, trials: list[FrozenTrial], n_below: int, enable_constriants: bool ) -> tuple[list[FrozenTrial], list[FrozenTrial]]: return [], [] @@ -62,6 +63,7 @@ def __init__( weights=weights, seed=seed, multivariate=multivariate, + constraints_func=constraints_func, ) self._parzen_estimator_cls = _CustomizableParzenEstimator self._parzen_estimator_parameters = _CustomizableParzenEstimatorParameters( @@ -75,7 +77,6 @@ def __init__( bandwidth_strategy=bandwidth_strategy, categorical_prior_weight=categorical_prior_weight, ) - self._weight_strategy = weight_strategy def _sample( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] @@ -84,16 +85,16 @@ def _sample( _logger.warning("Multi-objective c-TPE does not exist in the original paper.") trials = study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True) + # n_below_feasible = self._gamma(len(trials)) + # constraints_vals = np.asarray([self._constraints_func(t) for t in trials]) + n_below = ... + # qs = ... # We divide data into below and above. - n_trials = len(trials) + # n_trials = len(trials) below_trials, above_trials = _split_trials( - study, - trials, - self._gamma(n_trials), - self._constraints_func is not None, + study, trials, n_below, constraints_enabled=False ) - mpe_below = self._build_parzen_estimator( study, search_space, below_trials, handle_below=True ) @@ -102,7 +103,7 @@ def _sample( ) samples_below = mpe_below.sample(self._rng.rng, self._n_ei_candidates) - acq_func_vals = self._compute_acquisition_func(samples_below, mpe_below, mpe_above) + acq_func_vals = self._compute_acquisition_func(samples_below, mpe_below, mpe_above, []) ret = TPESampler._compare(samples_below, acq_func_vals) for param_name, dist in search_space.items(): @@ -113,10 +114,16 @@ def _sample( def _compute_acquisition_func( self, samples: dict[str, np.ndarray], - mpe_below: _ParzenEstimator, - mpe_above: _ParzenEstimator, + mpes_below: list[_ParzenEstimator], + mpes_above: list[_ParzenEstimator], + quantiles: list[float], ) -> np.ndarray: - log_likelihoods_below = mpe_below.log_pdf(samples) - log_likelihoods_above = mpe_above.log_pdf(samples) - acq_func_vals = log_likelihoods_below - log_likelihoods_above + _EPS = 1e-12 + assert len(mpes_above) == len(mpes_below) == len(quantiles) + lls_above = np.asarray([mpe_above.log_pdf(samples) for mpe_above in mpes_above]) + lls_below = np.asarray([mpe_below.log_pdf(samples) for mpe_below in mpes_below]) + _q = np.asarray(quantiles)[:, np.newaxis] + log_first_term = np.log(_q + _EPS) + log_second_term = np.log(1.0 - _q + _EPS) + lls_above - lls_below + acq_func_vals = np.sum(-np.logaddexp(log_first_term, log_second_term), axis=0) return acq_func_vals From 69939b942553467c5e63656a171cf77eb66a32df Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Mon, 2 Dec 2024 15:01:22 +0100 Subject: [PATCH 03/11] Temp --- package/samplers/ctpe/parzen_estimator.py | 6 +++ package/samplers/ctpe/sampler.py | 45 ++++++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/package/samplers/ctpe/parzen_estimator.py b/package/samplers/ctpe/parzen_estimator.py index 4bba2390..e0c6a2ed 100644 --- a/package/samplers/ctpe/parzen_estimator.py +++ b/package/samplers/ctpe/parzen_estimator.py @@ -21,6 +21,7 @@ class _CustomizableParzenEstimatorParameters(NamedTuple): b_magic_exponent: float min_bandwidth_factor: float bandwidth_strategy: str + use_min_bandwidth_discrete: bool categorical_prior_weight: float | None @@ -127,6 +128,11 @@ def _calculate_numerical_distributions( min_bandwidth_factor=parameters.min_bandwidth_factor, ) + if step is not None and parameters.use_min_bandwidth_discrete: + # NOTE(nabenabe0928): This hack is specifically for c-TPE. + n_grids = int((high - low) / step + 1) + sigmas = np.maximum(sigmas, domain_range / n_grids) + if step is None: return _BatchedTruncNormDistributions(mus, sigmas, low, high) else: diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py index b5f76db7..100d56a5 100644 --- a/package/samplers/ctpe/sampler.py +++ b/package/samplers/ctpe/sampler.py @@ -47,6 +47,7 @@ def __init__( gamma_beta: float = 0.25, weight_strategy: str = "uniform", bandwidth_strategy: str = "scott", + use_min_bandwidth_discrete: bool = True, constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ): gamma = GammaFunc(strategy=gamma_strategy, beta=gamma_beta) @@ -76,13 +77,17 @@ def __init__( min_bandwidth_factor=min_bandwidth_factor, bandwidth_strategy=bandwidth_strategy, categorical_prior_weight=categorical_prior_weight, + use_min_bandwidth_discrete=use_min_bandwidth_discrete, ) def _sample( self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] ) -> dict[str, Any]: if study._is_multi_objective(): - _logger.warning("Multi-objective c-TPE does not exist in the original paper.") + _logger.warning( + "Multi-objective c-TPE does not exist in the original paper, " + "but sampling will be performed by c-TPE based on Optuna MOTPE." + ) trials = study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True) # n_below_feasible = self._gamma(len(trials)) @@ -127,3 +132,41 @@ def _compute_acquisition_func( log_second_term = np.log(1.0 - _q + _EPS) + lls_above - lls_below acq_func_vals = np.sum(-np.logaddexp(log_first_term, log_second_term), axis=0) return acq_func_vals + + +def _get_reference_point(loss_vals: np.ndarray) -> np.ndarray: + worst_point = np.max(loss_vals, axis=0) + reference_point = np.maximum(1.1 * worst_point, 0.9 * worst_point) + reference_point[reference_point == 0] = EPS + return reference_point + + +def _split_complete_trials_multi_objective( + trials: Sequence[FrozenTrial], study: Study, n_below: int +) -> tuple[list[FrozenTrial], list[FrozenTrial]]: + if n_below == 0: + return [], list(trials) + + assert 0 <= n_below <= len(trials) + lvals = np.array([trial.values for trial in trials]) + lvals *= np.array([-1.0 if d == StudyDirection.MAXIMIZE else 1.0 for d in study.directions]) + nondomination_ranks = _fast_non_domination_rank(lvals, n_below=n_below) + unique_sorted_ranks, counts_of_each_rank = np.unique(nondomination_ranks, return_counts=True) + last_rank_before_tie_break = unique_sorted_ranks[np.cumsum(counts_of_each_rank) <= n_below][-1] + is_rank_before_tie_break = nondomination_ranks <= last_rank_before_tie_break + indices = np.arange(len(lvals)) + indices_below = indices[is_rank_before_tie_break] + + if indices_below.size < n_below: # Tie-break with Hypervolume subset selection problem (HSSP). + need_tie_break = nondomination_ranks == last_rank_before_tie_break + 1 + rank_i_lvals = lvals[need_tie_break] + subset_size = n_below - indices_below.size + selected_indices = _solve_hssp( + rank_i_lvals, indices[need_tie_break], subset_size, _get_reference_point(rank_i_lvals) + ) + indices_below = np.append(indices_below, selected_indices) + + below_indices_set = set(indices_below.tolist()) + below_trials = [trials[i] for i in range(len(trials)) if i in below_indices_set] + above_trials = [trials[i] for i in range(len(trials)) if i not in below_indices_set] + return below_trials, above_trials From d185af3a98388d814f034befb3fec4e50385df3e Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 3 Dec 2024 20:58:21 +0100 Subject: [PATCH 04/11] Remove c-MOTPE --- package/samplers/ctpe/sampler.py | 160 +++++++++++++++++++------------ 1 file changed, 101 insertions(+), 59 deletions(-) diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py index 100d56a5..4804b44e 100644 --- a/package/samplers/ctpe/sampler.py +++ b/package/samplers/ctpe/sampler.py @@ -11,6 +11,7 @@ from optuna.samplers._tpe.parzen_estimator import _ParzenEstimator from optuna.samplers._tpe.sampler import _split_trials from optuna.study import Study +from optuna.study import StudyDirection from optuna.trial import FrozenTrial from optuna.trial import TrialState @@ -23,12 +24,6 @@ _logger = get_logger(f"optuna.{__name__}") -def _ctpe_split_trials( - study: Study, trials: list[FrozenTrial], n_below: int, enable_constriants: bool -) -> tuple[list[FrozenTrial], list[FrozenTrial]]: - return [], [] - - class cTPESampler(TPESampler): def __init__( self, @@ -80,37 +75,91 @@ def __init__( use_min_bandwidth_discrete=use_min_bandwidth_discrete, ) - def _sample( - self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] - ) -> dict[str, Any]: + def _warning_multi_objective_for_ctpe(self, study: Study) -> None: if study._is_multi_objective(): + + def _get_additional_msg() -> str: + beta = getattr(self._gamma, "_beta", None) + strategy = getattr(self._gamma, "_strategy", None) + if beta != 0.15 or strategy != "linear": + return "" + + return ( + "Note that the original MOTPE uses beta=0.15 and strategy='sqrt', but " + f"beta={beta} and strategy='{strategy}' are used in this study." + ) + _logger.warning( "Multi-objective c-TPE does not exist in the original paper, " - "but sampling will be performed by c-TPE based on Optuna MOTPE." + "but sampling will be performed by c-TPE based on Optuna MOTPE. " + f"{_get_additional_msg()}" + ) + + def _build_parzen_estimators_for_constraints_and_get_quantiles( + self, + trials: list[FrozenTrial], + study: Study, + search_space: dict[str, BaseDistribution], + constraints_vals: np.ndarray, + ) -> tuple[list[_ParzenEstimator], list[_ParzenEstimator], list[float]]: + mpes_below: list[_ParzenEstimator] = [] + mpes_above: list[_ParzenEstimator] = [] + quantiles: list[float] = [] + for constraint_vals in constraints_vals.T: + is_satisfied = constraint_vals <= 0 + satisfied_trials = [t for t, include in zip(trials, is_satisfied) if include] + unsatisfied_trials = [t for t, exclude in zip(trials, is_satisfied) if not exclude] + mpes_below.append( + self._build_parzen_estimator( + study, search_space, satisfied_trials, handle_below=False + ) + ) + mpes_above.append( + self._build_parzen_estimator( + study, search_space, unsatisfied_trials, handle_below=False + ) ) + quantiles.append(len(satisfied_trials) / len(trials)) + return mpes_below, mpes_above, quantiles + + def _sample( + self, study: Study, trial: FrozenTrial, search_space: dict[str, BaseDistribution] + ) -> dict[str, Any]: + self._warning_multi_objective_for_ctpe(study) trials = study._get_trials(deepcopy=False, states=(TrialState.COMPLETE,), use_cache=True) - # n_below_feasible = self._gamma(len(trials)) - # constraints_vals = np.asarray([self._constraints_func(t) for t in trials]) - n_below = ... - # qs = ... + constraints_vals = np.asarray([self._constraints_func(t) for t in trials]) + (mpes_below, mpes_above, quantiles) = ( + self._build_parzen_estimators_for_constraints_and_get_quantiles( + trials, study, search_space, constraints_vals + ) + ) - # We divide data into below and above. - # n_trials = len(trials) + n_below_feasible = self._gamma(len(trials)) below_trials, above_trials = _split_trials( - study, trials, n_below, constraints_enabled=False + study, trials, n_below_feasible, is_feasible=np.all(constraints_vals <= 0, axis=-1) ) - mpe_below = self._build_parzen_estimator( - study, search_space, below_trials, handle_below=True + mpes_below.append( + self._build_parzen_estimator(study, search_space, below_trials, handle_below=True) ) - mpe_above = self._build_parzen_estimator( - study, search_space, above_trials, handle_below=False + mpes_above.append( + self._build_parzen_estimator(study, search_space, above_trials, handle_below=False) ) - samples_below = mpe_below.sample(self._rng.rng, self._n_ei_candidates) - acq_func_vals = self._compute_acquisition_func(samples_below, mpe_below, mpe_above, []) + _samples_below: dict[str, list[_ParzenEstimator]] = { + param_name: [] for param_name in search_space + } + for mpe in mpes_below: + for param_name, samples in mpe.sample(self._rng.rng, self._n_ei_candidates).items(): + _samples_below[param_name].append(samples) + + samples_below = { + param_name: np.hstack(samples) for param_name, samples in _samples_below.items() + } + acq_func_vals = self._compute_acquisition_func( + samples_below, mpes_below, mpes_above, quantiles + ) ret = TPESampler._compare(samples_below, acq_func_vals) - for param_name, dist in search_space.items(): ret[param_name] = dist.to_external_repr(ret[param_name]) @@ -134,39 +183,32 @@ def _compute_acquisition_func( return acq_func_vals -def _get_reference_point(loss_vals: np.ndarray) -> np.ndarray: - worst_point = np.max(loss_vals, axis=0) - reference_point = np.maximum(1.1 * worst_point, 0.9 * worst_point) - reference_point[reference_point == 0] = EPS - return reference_point - - -def _split_complete_trials_multi_objective( - trials: Sequence[FrozenTrial], study: Study, n_below: int +def _split_trials_for_ctpe( + study: Study, trials: list[FrozenTrial], n_below_feasible: int, is_feasible: np.ndarray ) -> tuple[list[FrozenTrial], list[FrozenTrial]]: - if n_below == 0: - return [], list(trials) - - assert 0 <= n_below <= len(trials) - lvals = np.array([trial.values for trial in trials]) - lvals *= np.array([-1.0 if d == StudyDirection.MAXIMIZE else 1.0 for d in study.directions]) - nondomination_ranks = _fast_non_domination_rank(lvals, n_below=n_below) - unique_sorted_ranks, counts_of_each_rank = np.unique(nondomination_ranks, return_counts=True) - last_rank_before_tie_break = unique_sorted_ranks[np.cumsum(counts_of_each_rank) <= n_below][-1] - is_rank_before_tie_break = nondomination_ranks <= last_rank_before_tie_break - indices = np.arange(len(lvals)) - indices_below = indices[is_rank_before_tie_break] - - if indices_below.size < n_below: # Tie-break with Hypervolume subset selection problem (HSSP). - need_tie_break = nondomination_ranks == last_rank_before_tie_break + 1 - rank_i_lvals = lvals[need_tie_break] - subset_size = n_below - indices_below.size - selected_indices = _solve_hssp( - rank_i_lvals, indices[need_tie_break], subset_size, _get_reference_point(rank_i_lvals) - ) - indices_below = np.append(indices_below, selected_indices) - - below_indices_set = set(indices_below.tolist()) - below_trials = [trials[i] for i in range(len(trials)) if i in below_indices_set] - above_trials = [trials[i] for i in range(len(trials)) if i not in below_indices_set] - return below_trials, above_trials + if len(trials) == 0: + return [], [] + if np.count_nonzero(is_feasible) < n_below_feasible or len(trials) == n_below_feasible: + return trials, [] + if n_below_feasible == 0: + return [], trials + + loss_vals = np.asarray([t.values for t in trials]) + loss_vals *= np.asarray([1 if d == StudyDirection.MINIMIZE else -1 for d in study.directions]) + if study._is_multi_objective(): + return _split_trials_for_multi_objective_ctpe(loss_vals, n_below_feasible, is_feasible) + else: + order = np.argsort(loss_vals[:, 0]) + n_below = np.searchsorted(np.cumsum(is_feasible[order]), n_below_feasible) + 1 + indices_below = set(np.arange(len(trials))[order[:n_below]]) + below_trials = [t for i, t in enumerate(trials) if i in indices_below] + above_trials = [t for i, t in enumerate(trials) if i not in indices_below] + return below_trials, above_trials + + +def _split_trials_for_multi_objective_ctpe( + loss_vals: np.ndarray, n_below_feasible: int, is_feasible: np.ndarray +) -> tuple[list[FrozenTrial], list[FrozenTrial]]: + assert 0 < n_below_feasible <= np.count_nonzero(is_feasible) + assert n_below_feasible < len(loss_vals) + raise ValueError("c-TPE has not supported multi-objective optimization yet.") From 2c49a2427194905efea82a50e248f80bad31e036 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 3 Dec 2024 21:56:53 +0100 Subject: [PATCH 05/11] Fix --- package/samplers/ctpe/sampler.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py index 4804b44e..ca55c0e7 100644 --- a/package/samplers/ctpe/sampler.py +++ b/package/samplers/ctpe/sampler.py @@ -9,7 +9,6 @@ from optuna.logging import get_logger from optuna.samplers import TPESampler from optuna.samplers._tpe.parzen_estimator import _ParzenEstimator -from optuna.samplers._tpe.sampler import _split_trials from optuna.study import Study from optuna.study import StudyDirection from optuna.trial import FrozenTrial @@ -45,6 +44,11 @@ def __init__( use_min_bandwidth_discrete: bool = True, constraints_func: Callable[[FrozenTrial], Sequence[float]] | None = None, ): + if constraints_func is None: + raise ValueError( + f"{self.__class__.__name__} must take constraints_func, but got None." + ) + gamma = GammaFunc(strategy=gamma_strategy, beta=gamma_beta) weights = WeightFunc(strategy=weight_strategy) super().__init__( @@ -136,7 +140,7 @@ def _sample( ) n_below_feasible = self._gamma(len(trials)) - below_trials, above_trials = _split_trials( + below_trials, above_trials = _split_trials_for_ctpe( study, trials, n_below_feasible, is_feasible=np.all(constraints_vals <= 0, axis=-1) ) mpes_below.append( @@ -145,6 +149,7 @@ def _sample( mpes_above.append( self._build_parzen_estimator(study, search_space, above_trials, handle_below=False) ) + quantiles.append(len(below_trials) / len(trials)) _samples_below: dict[str, list[_ParzenEstimator]] = { param_name: [] for param_name in search_space From 129ec25ad2f86d80ece4e5cf2542859c79c528bb Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Tue, 3 Dec 2024 22:02:43 +0100 Subject: [PATCH 06/11] Add READM --- package/samplers/ctpe/README.md | 66 +++++++++++---------------------- 1 file changed, 22 insertions(+), 44 deletions(-) diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md index 42582c22..5f4a6b5d 100644 --- a/package/samplers/ctpe/README.md +++ b/package/samplers/ctpe/README.md @@ -19,6 +19,10 @@ The default parameter set of this sampler is the recommended setup from the pape - cTPESampler +Although most arguments in [`TPESampler`](https://optuna.readthedocs.io/en/stable/reference/samplers/generated/optuna.samplers.TPESampler.html) are also available for `cTPESampler`, the original paper uses the default arguments of this sampler. +However, `constraints_func` must be provided to use this sampler. +For the reproducibility purpose, please set a fixed `seed`. + ## Installation The version constraint of this package is Optuna v4.0.0 or later. @@ -33,62 +37,36 @@ $ pip install -r https://hub.optuna.org/samplers/ctpe/requirements.txt ## Example -TODO: Change here. - -This sampler supports the arguments discussed in [the original paper](https://arxiv.org/abs/2304.11127) and can be used in this way. +This sampler is the official implementation of [the c-TPE paper](https://arxiv.org/abs/2211.14411). ```python -import numpy as np +from __future__ import annotations +import numpy as np import optuna - import optunahub -def objective(trial): - x = trial.suggest_float("x", -5, 5) - y = trial.suggest_int("y", -5, 5) - z = trial.suggest_categorical("z", ["a", "aa", "aaa"]) - return len(z) * (x**2 + y**2) - - -module = optunahub.load_module(package="samplers/tpe_tutorial") -optuna.logging.set_verbosity(optuna.logging.CRITICAL) -arg_choices = { - "consider_prior": [True, False], - "consider_magic_clip": [True, False], - "multivariate": [True, False], - "b_magic_exponent": [0.5, 1.0, 2.0, np.inf], - "min_bandwidth_factor": [0.01, 0.1], - "gamma_strategy": ["linear", "sqrt"], - "weight_strategy": ["uniform", "old-decay", "old-drop", "EI"], - "bandwidth_strategy": ["optuna", "hyperopt", "scott"], - "categorical_prior_weight": [0.1, None], -} -for arg_name, choices in arg_choices.items(): - results = [] - for choice in choices: - print(arg_name, choice) - sampler = module.CustomizableTPESampler(seed=0, **{arg_name: choice}) - study = optuna.create_study(sampler=sampler) - study.optimize(objective, n_trials=100 if arg_name != "b_magic_exponent" else 200) - results.append(study.trials[-1].value) +def objective(trial: optuna.Trial) -> float: + x = trial.suggest_float("x", 0.0, 2 * np.pi) + y = trial.suggest_float("y", 0.0, 2 * np.pi) + return float(np.sin(x) + y) - print(f"Did every setup yield different results for {arg_name}?: {len(set(results)) == len(results)}") -``` +def constraints(trial: optuna.trial.FrozenTrial) -> tuple[float]: + x = trial.params["x"] + y = trial.params["y"] + c = float(np.sin(x) * np.sin(y) + 0.95) + trial.set_user_attr("c", c) + return (c, ) -In the paper, the following arguments, which do not exist in Optuna, were researched: -- `gamma_strategy`: The splitting algorithm in Table 3. The choices are `linear` and `sqrt`. -- `gamma_beta`: The beta parameter for the splitting algorithm in Table 3. This value must be positive. -- `weight_strategy`: The weighting algorithm in Table 3. The choices are `uniform`, `old-decay`, `old-drop`, and `EI`. -- `categorical_prior_weight`: The categorical bandwidth in Table 3. If `None`, the Optuna default algorithm will be used. -- `bandwidth_strategy`: The bandwidth selection heuristic in Table 6. The choices are `optuna`, `hyperopt`, and `scott`. -- `min_bandwidth_factor`: The minimum bandwidth factor in Table 6. This value must be positive. -- `b_magic_exponent`: The exponent alpha in Table 6. Optuna takes 1.0 by default. +sampler = optunahub.load_module(package="samplers/ctpe").cTPESampler(constraints_func=constraints) +study = optuna.create_study(sampler=sampler) +study.optimize(objective, n_trials=30) +print(study.best_trials) -For more details, please check [the paper](https://arxiv.org/abs/2304.11127). +``` ### Bibtex From 57b014ede98b5203d2e6a5ee19d7884a402c72f6 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 4 Dec 2024 12:26:11 +0100 Subject: [PATCH 07/11] Add the args details --- package/samplers/ctpe/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md index 5f4a6b5d..d29ad986 100644 --- a/package/samplers/ctpe/README.md +++ b/package/samplers/ctpe/README.md @@ -22,6 +22,7 @@ The default parameter set of this sampler is the recommended setup from the pape Although most arguments in [`TPESampler`](https://optuna.readthedocs.io/en/stable/reference/samplers/generated/optuna.samplers.TPESampler.html) are also available for `cTPESampler`, the original paper uses the default arguments of this sampler. However, `constraints_func` must be provided to use this sampler. For the reproducibility purpose, please set a fixed `seed`. +Please refer to [the documentation of CustomizableTPESampler](https://hub.optuna.org/samplers/tpe_tutorial/) for more details of the other arguments such as `bandwidth_strategy` and `b_magic_exponent`. ## Installation From 0f93503d45df1dc3debaea66dd2d6a34268081ab Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 4 Dec 2024 12:35:35 +0100 Subject: [PATCH 08/11] Add thumbnail --- package/samplers/ctpe/README.md | 5 +++++ .../ctpe/images/slide-localization.png | Bin 0 -> 196520 bytes 2 files changed, 5 insertions(+) create mode 100644 package/samplers/ctpe/images/slide-localization.png diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md index d29ad986..35d93730 100644 --- a/package/samplers/ctpe/README.md +++ b/package/samplers/ctpe/README.md @@ -15,6 +15,11 @@ This package aims to reproduce the TPE algorithm used in the paper published at The default parameter set of this sampler is the recommended setup from the paper and the experiments in the paper can also be reproduced by this sampler. +Note that this sampler is officially implemented by the first author of the original paper. +The performance was verified using Optuna v4.1.0 by reproducing the results of Fig. 3 (Top Row) in the original paper. + +![Performance Verification](images/slide-localization.png) + ## Class or Function Names - cTPESampler diff --git a/package/samplers/ctpe/images/slide-localization.png b/package/samplers/ctpe/images/slide-localization.png new file mode 100644 index 0000000000000000000000000000000000000000..6a57cd4351bb72dcdf642b3313f07d006ef597c4 GIT binary patch literal 196520 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 Date: Wed, 4 Dec 2024 12:37:12 +0100 Subject: [PATCH 09/11] Fix name --- package/samplers/ctpe/README.md | 2 +- ...lide-localization.png => slice-localization.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename package/samplers/ctpe/images/{slide-localization.png => slice-localization.png} (100%) diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md index 35d93730..61d2a0d4 100644 --- a/package/samplers/ctpe/README.md +++ b/package/samplers/ctpe/README.md @@ -18,7 +18,7 @@ The default parameter set of this sampler is the recommended setup from the pape Note that this sampler is officially implemented by the first author of the original paper. The performance was verified using Optuna v4.1.0 by reproducing the results of Fig. 3 (Top Row) in the original paper. -![Performance Verification](images/slide-localization.png) +![Performance Verification](images/slice-localization.png) ## Class or Function Names diff --git a/package/samplers/ctpe/images/slide-localization.png b/package/samplers/ctpe/images/slice-localization.png similarity index 100% rename from package/samplers/ctpe/images/slide-localization.png rename to package/samplers/ctpe/images/slice-localization.png From 64f5998ad16af48be1de668d93421257e0200495 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 4 Dec 2024 12:53:28 +0100 Subject: [PATCH 10/11] Add constraint doc --- package/samplers/ctpe/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package/samplers/ctpe/README.md b/package/samplers/ctpe/README.md index 61d2a0d4..8b07f9a7 100644 --- a/package/samplers/ctpe/README.md +++ b/package/samplers/ctpe/README.md @@ -16,7 +16,7 @@ This package aims to reproduce the TPE algorithm used in the paper published at The default parameter set of this sampler is the recommended setup from the paper and the experiments in the paper can also be reproduced by this sampler. Note that this sampler is officially implemented by the first author of the original paper. -The performance was verified using Optuna v4.1.0 by reproducing the results of Fig. 3 (Top Row) in the original paper. +The performance was verified, c.f. [#177](https://github.com/optuna/optunahub-registry/pull/177#issuecomment-2517083730), using Optuna v4.1.0 by reproducing the results of Fig. 3 (Top Row) in the original paper. ![Performance Verification](images/slice-localization.png) @@ -44,6 +44,7 @@ $ pip install -r https://hub.optuna.org/samplers/ctpe/requirements.txt ## Example This sampler is the official implementation of [the c-TPE paper](https://arxiv.org/abs/2211.14411). +The interface for the constraint handling is identical to the Optuna API, so please check [the official API reference](https://optuna.readthedocs.io/en/stable/faq.html#how-can-i-optimize-a-model-with-some-constraints) for more details. ```python from __future__ import annotations @@ -64,6 +65,8 @@ def constraints(trial: optuna.trial.FrozenTrial) -> tuple[float]: y = trial.params["y"] c = float(np.sin(x) * np.sin(y) + 0.95) trial.set_user_attr("c", c) + # For multiple constraints, we can simply include every constraint in the tuple below. + # e.g., if c1 <= t1 and c2 <= t2 are the constraints, return (c1 - t1, c2 - t2). return (c, ) From e131f63c4d970ba1d9f167f50896dc704a56e1e5 Mon Sep 17 00:00:00 2001 From: nabenabe0928 Date: Wed, 4 Dec 2024 13:57:58 +0100 Subject: [PATCH 11/11] Add the constraint split for no feasible observations --- package/samplers/ctpe/sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/samplers/ctpe/sampler.py b/package/samplers/ctpe/sampler.py index ca55c0e7..6725f2e8 100644 --- a/package/samplers/ctpe/sampler.py +++ b/package/samplers/ctpe/sampler.py @@ -110,7 +110,7 @@ def _build_parzen_estimators_for_constraints_and_get_quantiles( mpes_above: list[_ParzenEstimator] = [] quantiles: list[float] = [] for constraint_vals in constraints_vals.T: - is_satisfied = constraint_vals <= 0 + is_satisfied = (constraint_vals <= 0) | (constraint_vals == min(constraint_vals)) satisfied_trials = [t for t, include in zip(trials, is_satisfied) if include] unsatisfied_trials = [t for t, exclude in zip(trials, is_satisfied) if not exclude] mpes_below.append(