MultiTaskGP observation_noise question #2079
-
Hi there, Quick question about the My practical questions:
More concretely, consider the following, where First we fit the model: sigma = 0.5
model = MultiTaskGP(
torch.tensor(X),
torch.tensor(y.reshape(-1, 1)),
train_Yvar=torch.tensor(np.ones_like(y).reshape(-1, 1)) * sigma**2,
covar_module=gpytorch.kernels.ScaleKernel(gpytorch.kernels.MaternKernel()),
task_feature=-1
)
mll = ExactMarginalLogLikelihood(likelihood=model.likelihood, model=model)
model.train()
mll.train()
fit_gpytorch_mll(mll) Next, we can evaluate and use Bayesian Optimization to find the next point (consider beta large to just be pure exploration for the sake of argument). model.eval()
mll.eval()
from botorch.acquisition import UpperConfidenceBound
from botorch.acquisition.objective import ScalarizedPosteriorTransform
from botorch.optim import optimize_acqf
# We only consider the high fidelity model, hence weights [0, 1] in the transform
weights = torch.tensor([0.0, 1.0])
transform = ScalarizedPosteriorTransform(weights=weights)
ucb = UpperConfidenceBound(model, beta=10000, posterior_transform=transform)
next_point, value = optimize_acqf(
ucb,
bounds=torch.FloatTensor([0, 1]).reshape(2, 1),
q=1,
num_restarts=10,
raw_samples=10,
)
# done Is this procedure still sensible even though Thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Sorry for the delayed response here.
The difference is that if
It shouldn't really, at least for most intents and purposes. Where this difference becomes meaningful is in settings where we need to reason about the distribution of observed outcomes, typically something that is done when "fantasizing" in the context of look-ahead acquisition functions such as the knowledge gradient. Hope that clears things up! |
Beta Was this translation helpful? Give feedback.
Sorry for the delayed response here.
The difference is that if
observation_noise=False
this produces the posterior over the latent function valuesf
(what we're trying to estimate), and ifobservation_noise=True
this produces the posterior predictive over the observationsY
(which under the modeling assumption aref + eps
witheps
iid normal draws.It shouldn't really, at least for most intents and purposes. Where this difference becomes meaningful is in settings …