[RFC] Support for non-MC acquisition objectives for MC acquisition functions #860
Locked
saitcakmak
started this conversation in
Ideas
Replies: 1 comment 4 replies
-
This makes sense to me. Curious to hear @Balandat's thoughts. No strong preference between 1) and 2). Perhaps 2) is a bit cleaner since the posterior_objective behavior/code is unified across analytic and MC acquisition functions. |
Beta Was this translation helpful? Give feedback.
4 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
What
I want to add support for non-MC
AcquisitionObjective
s toMCAcquisitionFunction
s, i.e., add support for aposterior_objective
that transforms theposterior
before sampling. The existingobjective
s forMCAcquisitionFunction
s operate on the samples of the posterior rather than the posterior itself.Why
The posterior sampling from q-points jointly has an O(q^3) cost (using Cholesky). Using risk measures, i.e.,
InputPerturbation
orAppendFeatures
, multiplies the size of the q-batch withn_w
, leading to a joint posterior overq * n_w
points and a sampling cost ofO(q^3 n_w^3)
. If using Expectation as the risk measure, we have an option of transforming theq * n_w
posterior
into a posterior overq
expectations before sampling (I think at a cost of O(q^2 n_w^2)), reducing the cost of sampling to O(q^3) (This transform is similar toScalarizedObjective
but operates over the q-batch dimension). This is currently not supported byMCAcquisitionFunction
s.Proposal
I can think of two ways of implementing this. In both versions, we need to introduce new attribute
posterior_objective
(possibly with a better name).i) add
posterior = self.posterior_objective(posterior) if self.posterior_objective is not None else posterior
line after the posterior call inMCAcquisitionFunction
s.ii) Move the
_get_posterior
method ofAnalyticAcquisitionFunction
toAcquisitionFunction
and use theposterior_objective
in here, essentially unifying the objectives operating on the posterior across both analytic and MC acquisition functions. This would also require replacing themodel.posterior(...)
calls inMCAcquisitionFunction
s with a_get_posterior
call.cc @sdaulton, @Balandat
Beta Was this translation helpful? Give feedback.
All reactions