# Is it posible to obtain the next point without bruteforcing in Bayesian Optimization?

The implementations I have found till now of Bayesian optimization tipically find the optimal input point X for next step, which minimizes the output Y of the acquisition function which is being modeled, by testing a lot of samples (by random search, gridsearch, etc) and then selecting the best one. For example, this happens in this implementation, exactly in the acq_max() function located in this file

Aren't there currently implementations where these new points are obtained directly by finding the local minima of the modeled function, maybe with the derivatives of dXi/dY of the corresponding acquisition function (either it is a Gaussian Process, a multi-layer perceptron...)?

Is this even posible? I found some tracks that suggest me that this is posible, like the inversion of MLP, but I can not find this implemented in a bayesian optimizer

I believe the package and function you link to will do this if you set n_warmup=0 and n_iter=1, then you will get a single run of the BFGS algorithm which is a quasi-Newtown method and uses gradient information. I'm pretty sure this method is only guaranteed to converge to a local optima however. But as you are aware, the acquisition function probably has multiple optima, so that's why you want to do multiple restarts starting at different seed positions, i.e. set n_iter=250.
• Most of the Bayesian optimisation packages I've seen use Gaussian processes for constructing the acquisition function $f$. I think that makes it hard to write down an explicit formula for $f$ because the real $f$ is latent and has a parameter of infinite dimension. With a particular choice of a simple covariance function (e.g. linear or polynomial) this is probably possible. I'm not sure about whether this is implemented in the Bayesian optimisation packages but I'd guess it's probably equivalent to some sort of method in the design of sequential experiments. Maybe worth a new question? – MachineEpsilon Jan 10 '18 at 8:59