GPs with Input Uncertainty

Gaussian processes can be trained on inputs with uncertainty.

class vanguard.uncertainty.GaussianUncertaintyGPController(train_x, train_x_std, train_y, y_std, kernel_class, mean_class=<class 'gpytorch.means.constant_mean.ConstantMean'>, likelihood_class=<class 'gpytorch.likelihoods.gaussian_likelihood.FixedNoiseGaussianLikelihood'>, marginal_log_likelihood_class=<class 'gpytorch.mlls.exact_marginal_log_likelihood.ExactMarginalLogLikelihood'>, optimiser_class=<class 'torch.optim.adam.Adam'>, smart_optimiser_class=<class 'vanguard.optimise.optimiser.SmartOptimiser'>, rng=None, **kwargs)[source]

Bases: GPController

Allows the user to pass the standard deviation of the input values.

Base class for implementing the Heteroskedastic Noisy Input Gaussian Process (HNIGP). This is a generalised version of the Noisy Input Gaussian Process (NIGP) method in [Mchutchon11] and our implementation here exploits torch.autograd to circumvent any by-hand calculations of GP derivatives.

Parameters:
__init__(train_x, train_x_std, train_y, y_std, kernel_class, mean_class=<class 'gpytorch.means.constant_mean.ConstantMean'>, likelihood_class=<class 'gpytorch.likelihoods.gaussian_likelihood.FixedNoiseGaussianLikelihood'>, marginal_log_likelihood_class=<class 'gpytorch.mlls.exact_marginal_log_likelihood.ExactMarginalLogLikelihood'>, optimiser_class=<class 'torch.optim.adam.Adam'>, smart_optimiser_class=<class 'vanguard.optimise.optimiser.SmartOptimiser'>, rng=None, **kwargs)[source]

Initialise self.

Parameters:
_sgd_round(n_iters=100, gradient_every=100)[source]

Use gradient based optimiser to tune the hyperparameters.

Additive gradient noise is set before each call to the super method.

Parameters:
  • n_iters (int) – The number of gradient updates.

  • gradient_every (int) – How often (in iterations) to do HNIGP input gradient steps.

Return type:

float

Returns:

The training loss at the last iteration.

property gradient_variance: Tensor | None

Return the gradient variance.

Access the value that stores the \(n\times n\) tensor of covariance resulting from Taylor expansion added to training covariance matrix.

predict_at_point(x)[source]

Doesn’t make sense for an uncertain controller.

Parameters:

x (Union[ndarray[tuple[Any, ...], dtype[floating]], Tensor])

Return type:

NoReturn