POO Algorithm¶
Introduction¶
Title: Black-box optimization of noisy functions with unknown smoothness
Authors: Jean-Bastien Grill, Michael Valko, Remi Munos
Abstract: We study the problem of black-box optimization of a function f of any dimension, given function evaluations perturbed by noise. The function is assumed to be locally smooth around one of its global optima, but this smoothness is unknown. Our contribution is an adaptive optimization algorithm, POO or parallel optimistic optimization, that is able to deal with this setting. POO performs almost as well as the best known algorithms requiring the knowledge of the smoothness. Furthermore, POO works for a larger class of functions than what was previously considered, especially for functions that are difficult to optimize, in a very precise sense. We provide a finite-time analysis of POO’s performance, which shows that its error after n evaluations is at most a factor of √ln n away from the error of the best known optimization algorithms using the knowledge of the smoothness.
Note
Make sure to use get_last_point() to get the final output
Algorithm Parameters¶
numax (float) – parameter nu_max in the algorithm
rhomax (float) – parameter rho_max in the algorithm, the maximum rho used
rounds (int) – the number of rounds/budget
domain (list(list)) – the domain of the objective function
partition – the partition used in the optimization process
algo – the baseline algorithm used by the wrapper, such as T_HOO or HCT
Usage Example¶
Note
Make sure to use get_last_point() to get the final output
from PyXAB.synthetic_obj.Garland import Garland
from PyXAB.algos.POO import POO
from PyXAB.algos.HOO import T_HOO
domain = [[0, 1]] # Parameter is 1-D and between 0 and 1
target = Garland()
rounds = 1000
algo = POO(rounds=rounds, domain=domain, algo=T_HOO)
for t in range(rounds):
point = algo.pull(t)
reward = target(point)
algo.receive_reward(t, reward)
algo.get_last_point()