-
Notifications
You must be signed in to change notification settings - Fork 259
Getting stuck in local minimum with noisy external objective function evaluations #192
Comments
You can try this:
|
You are using Expected Improvement as an acquisition function, which tends to exploit more (see explore-exploit dilemma. Try a different acquisition function, for example entropy search (code for this one might be unstable though) or LCB, these are more explorative. |
Is it true that the parameter "acquisition_jitter" also changes the exploration-exploitation preference? |
E.I. is not ment to deal with noise, you need N.E.I. for that, which I believe is not implemented yet. |
@ekalosak Bayesian optimization can deal with noisy observations, but E.I. cannot, that is because it assumes a "bestY" when computing the expected improvement for a certain set of parameters, and if the observations are noisy you don't have a well defined "bestY" here a paper by facebook where they go in details on why E.I. will perform very poorly when the observations are noisy, and how they implemented a Noisy version, they also explain that E.I. will result in the model getting stuck in local optioma as in the question title: |
@raff7 I see - that was an interesting read. I wonder what work would be required to get from EI_mcmc.py to Facebook's NEI? If their formulation were reduced to an un-constrained setting, it looks like equation (6) simplifies to
and the associated MCMC inference method further simplifies their Algorithm 1. Might be a good place to start an NEI implementation? |
@ekalosak
And i replicated the experiments in facebook paper.. it works really well Also The implementation i have allows for batch predictions, instead of having a single experiment you can have a whole batch of experiments and perform them at once (you can do it just concatenating to the Observations the X you still didn't test) |
Brilliant @raff7 , any chance you can make that into a PR? I'm sure others would appreciate greatly and would contribute to its maintenance. |
@ekalosak ye sure I can do that I'll need to clean the code quite a bit first tho because I just downloaded the repository offline and modified many parts of it, I need to make sure it works in the original version of the code |
@ekalosak ok I sent a PR, i just added the class NEI.py and modified the init.py + argument_manager.py to accommodate for a new acquisition function. |
Hi,
I'm trying to use GPyOpt to optimize physical experiments, so I started following the example "5.10 External objective function evaluation". My problem is that as soon as I add noise to the objective function when using GP & EI, I tend to get stuck in a local minimum. Here's my code, almost identical to the example, but with noise:
I tend to get stuck at the local minima around 0.18 - 0.32, never reaching the true minimum near 0.75. What parameters are there in the model or acquisition function that could make the optimization behave better? Obviously I can make more initial experiments, but my real experiments will be really costly (~ 1 week per experiment) so it's worthwhile to get this right in the first place.
Thank you for your great work!
The text was updated successfully, but these errors were encountered: