Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Which acquisition function should I use to iteratively improve model accuracy rather than optimize a target value? #930

Closed
sgbaird opened this issue Apr 22, 2022 · 8 comments

Comments

@sgbaird
Copy link
Contributor

sgbaird commented Apr 22, 2022

It took me a while to track down the issue and comment related to this, so I wanted to surface this in a new issue and immediately close it for better searchability.

I think there are two approaches. One option is to reformulate it as a problem where you minimize an error metric instead of a target value; this requires having a test set or some form of cross-validation that you trust. The other option which seems preferable, especially if one is adding new data or starting from scratch takes from @Balandat's comment in #460 (comment) to use the botorch.acquisition.active_learning.qNegIntegratedPosteriorVariance (qNIPV) acquisition function:

Yeah qNIPV is agnostic to the direction, the goal is to minimize a global measure of uncertainty of the model, so there is no better or worse w.r.t. the function values.

If I understand it correctly, this implies no exploitation, but rather pure exploration.

@sgbaird sgbaird closed this as completed Apr 22, 2022
@Balandat
Copy link
Contributor

If I understand it correctly, this implies no exploitation, but rather pure exploration.

correct

@iandoxsee
Copy link

Jumping in here to ask a follow-on: Are there any recommended acquisition functions within Botorch for purely exploration-based active learning of multi-objective spaces? qNIPV appears limited to single-objective, if I'm understanding correctly.

My use case is in real-world experimentation, where I would typically use a design of experiments (DoE) approach to map out some n-dimensional variable space as accurately as possible under some experimental budget. This DoE approach works great, but is labor-intensive, so an active learning approach is appealing. For example, some of my variables may end up having little/no effect on one or more of my objectives, but they contribute equally to my (predefined) experimental burden using DoE.

Thanks all!

@sgbaird
Copy link
Contributor Author

sgbaird commented Oct 12, 2022

@iandoxsee great question about multi-objective equivalents. I'm sure you'll get an answer from one of the devs, but I"ll include my thoughts, too. For a multi-objective problem, you still need some way to encode trade-offs between objectives. I could imagine a sum of qNIPV values across each of the objectives, or some variation on an expected hypervolume improvement with one axis per qNIPV. Probably something off about the latter thought, though.

Also, curious to hear why your use case is something where minimization of global uncertainty is more appealing than optimizing the objectives directly.

@iandoxsee
Copy link

@sgbaird Thanks for your thoughts on this.

In my use case, there is a need to fully understand the space to ensure that objectives are consistently above/below individually-specified thresholds throughout the entire space. It's a manufacturing setting, so the ranges for this active learning experiment represent the expected routine variation that we wish to accommodate.

My impression is that minimizing global uncertainty is similar to the goal of our DoE experimentation: Identifying as good a model as possible, given some experimental budget. Optimizing our objectives directly is a problem elsewhere in the development timeline, but the devs' code has been tremendously helpful already in this regard :)

@sgbaird
Copy link
Contributor Author

sgbaird commented Oct 12, 2022

@iandoxsee thanks for clarifying! Also, what is your experimental budget (100's, 1000's, etc.), and if you have any existing data, how much, and how many design variables will you be looking at? Of these, how many are categorical vs. numerical? Approximate is fine.

@iandoxsee
Copy link

Good points, should have included that already!

Budget of <50 experiments, ideally <20-30 to be competitive with most of my DoE studies. Existing data on the order of ~3-5 experiments, 3-8 variables which will all be numerical, and 1-4 responses (1 should be already satisfied by qNIPV).

@eytan
Copy link
Contributor

eytan commented Oct 12, 2022

@iandoxsee , you may be interested in https://botorch.org/tutorials/constraint_active_search which aims to cover all designs which exceed some pre-specified threshold across multiple outcomes (constraints).

@iandoxsee
Copy link

Hi @eytan, this looks like a really exciting approach that directly gets to what we're after. Thanks for your input!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants