EmuKit / emukit

A Python-based toolbox of various methods in decision making, uncertainty quantification and statistical emulation: multi-fidelity, experimental design, Bayesian optimisation, Bayesian quadrature, etc.
https://emukit.github.io/emukit/
Apache License 2.0
605 stars 128 forks source link

Local penalization for multi-fidelity models #276

Open henrymoss opened 4 years ago

henrymoss commented 4 years ago

The current local penalization method for batch BO does not work on multi-fidelity models. Batch BO for MF models is only currently supported with the greedy sequential point calculator. We can definitely do better than that!

I have coded a new version of local penalization that works with MF models. In particular, the penalization regions for a given batch are calculated by imagining that all the batch evaluations are on the target fidelity source. We can then calculate a single penalization function that is applied to the acquisition function uniformly across the different information sources.

This simple approach seems to work okay. Possible extensions would allow penalization regions unique to each information source. For example, the penalization zone around a planned evaluation on fidelity 1, would be larger than the corresponding zone on another fidelity level. It is unclear how best to implement this. Perhaps @javiergonzalezh might have some ideas?

Before submitting a pull request, I wanted to know if you want this feature in Emukit and If you want a notebook demo?. There is currently no notebook for the standard (non-MF) version of local-penalization. I am happy to make one of those (with lots of helpful plots) as well ?

Henry

apaleyes commented 4 years ago

Thanks Henry, that sounds great!

I am not sure if we want this in core lib right now (we usually aim at adding stuff to core lib only when it is a well established method), as an example that would be very good to have. We are relatively easy on examples: they could be just code, or code plus notebook, or just notebook.

As for LP notebook - that would be most certainly welcome too. Maybe just separate these two out in different PRs.