Line Bayesian Optimization

Line Bayesian Optimization#

Type of optimizer algorithm: continuous inputs

About#

Line Bayesian Optimization (LineBO) is a version of Bayesian Optimization that restricts the optimization of the acquisition function to a single line in input space [Kirschner et al., 2019]. This line can either be selected at random, or can follow one of the coordinate directions.

By default, we use botorch’s SingleTaskGP [Balandat et al., 2020].

How to run#

import numpy as np

from poli.objective_repository import ToyContinuousBlackBox

from poli_baselines.solvers import LineBO

n_dimensions = 3
population_size = 10

f = ToyContinuousBlackBox(
    function_name="ackley_function_01",
    n_dimensions=n_dimensions,
)

x0 = np.random.randn(2).reshape(1, -1).clip(-2.0, 2.0)
y0 = f(x0)

solver = LineBO(
    black_box=f,
    x0=x0,
    y0=y0,
    type_of_line="random",  # could also be "coordinate"
)

solver.solve(max_iter=10)

References#

If you use this solver, we expect that you cite the following resources:

[1] Kirschner, J., Mutny, M., Hiller, N., Ischebeck, R., & Krause, A. (2019). Adaptive and safe Bayesian optimization in high dimensions via one-dimensional subspaces. In Proceedings of the 36th International Conference on Machine Learning (pp. 3429–3438). PMLR. https://proceedings.mlr.press/v97/kirschner19a.html

[2] González-Duque, M., Bartels, S., & Michael, R. (2024). poli: a libary of discrete sequence objectives [Computer software]. MachineLearningLifeScience/poli


@inproceedings{Kirschner:LineBO:2019,
  title = {Adaptive and Safe Bayesian Optimization in High Dimensions via
           One-Dimensional Subspaces},
  ISSN = {2640-3498},
  url = {https://proceedings.mlr.press/v97/kirschner19a.html},
  booktitle = {Proceedings of the 36th International Conference on Machine
               Learning},
  publisher = {PMLR},
  author = {Kirschner, Johannes and Mutny, Mojmir and Hiller, Nicole and
            Ischebeck, Rasmus and Krause, Andreas},
  year = {2019},
  month = may,
  pages = {3429–3438},
  language = {en},
}


@software{Gonzalez-Duque:poli:2024,
author = {González-Duque, Miguel and Bartels, Simon and Michael, Richard},
month = jan,
title = {{poli: a libary of discrete sequence objectives}},
url = {https://github.com/MachineLearningLifeScience/poli},
version = {0.0.1},
year = {2024}
}