[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
-
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