Best practice for using singleTaskGP to model deterministic problems #935
-
Hi, I'm developing some implementations for Quality-Diversity algorithms and I'm having some difficulties running singleTaskGP to model a toy problem with no noise. This makes some sense (It will try to optimise the 0 noise parameter which will be both a waste of compute and potentially numerically problematic), but it's not immediately clear whether I should be using another Botorch method to model such a problem or is there a constant noise likelihood parameter? So far I'm trying a (slightly tweaked) fix from the BOTorch docs with :
The function I'm trying to model is Mishras constrained Bird problem in 2d over [-10 <x <0, -6<y,<0]
It feels like the sort of thing a GP should be able to model well, but I seem to hit a cholesky decomposition error frequently. I'm implementing a variation on an Expected Improvement acquisition related to some previous work called BOP-Elites. I have tried raising the minimum noise floor, it even fails as high as 1E-3 Botorch 0.2.1 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Hi @kentwar. You're using a very old version of botorch (and dependencies). I'd highly recommend that you upgrade to the current version. Since you're trying to model a noise-free function, you may want to use |
Beta Was this translation helpful? Give feedback.
Hi @kentwar. You're using a very old version of botorch (and dependencies). I'd highly recommend that you upgrade to the current version.
Since you're trying to model a noise-free function, you may want to use
FixedNoiseGP
with a small noise value (to avoid numerical issues). You can do this withmodel = FixedNoiseGP(train_X, train_Y, train_Yvar = torch.full_like(train_Y, 1e-4)
.In addition, since you're running into numerical issues with Cholesky, you're likely using a large number of training points, or have training points clustered closely in the input space (leading to numerically singular covariance matrices). In this case, I'd recommend using
dtype=torch.double
. You need to be cons…