POO Algorithm

Introduction

paper, code

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.

../../../_images/POO.png

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()