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:
GPControllerAllows 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.autogradto circumvent any by-hand calculations of GP derivatives.- Parameters:
train_x (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]]])train_x_std (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]],float,None])train_y (
Union[Tensor,ndarray[tuple[Any,...],dtype[integer]],ndarray[tuple[Any,...],dtype[floating]]])y_std (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]],float])likelihood_class (
type[Likelihood])marginal_log_likelihood_class (
type[MarginalLogLikelihood])smart_optimiser_class (
type[SmartOptimiser])kwargs (
Any)
- __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:
train_x (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]]]) – (n_samples, n_features) The mean of the inputs (or the observed values).train_x_std (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]],float,None]) –The standard deviation of input noise:
array_like[float] (n_features,): observation std dev per input feature,
array_like[float] (n_samples, n_features): observation std dev input samples in each input dimension,
float: single input feature, or assumed homoskedastic noise amongst inputs,
None: heteroskedastic (among input dimension) std dev is inferred from given noisy inputs.
train_y (
Union[Tensor,ndarray[tuple[Any,...],dtype[integer]],ndarray[tuple[Any,...],dtype[floating]]]) – (n_samples,) or (n_samples, 1) The responsive values.y_std (
Union[Tensor,ndarray[tuple[Any,...],dtype[floating]],float]) –The observation noise standard deviation:
array_like[float] (n_samples,): known heteroskedastic noise,
float: known homoskedastic noise assumed.
kernel_class (
type[Kernel]) – An uninstantiated subclass ofgpytorch.kernels.Kernel.mean_class (
type[Mean]) – An uninstantiated subclass ofgpytorch.means.Meanto use in the prior GP. Defaults togpytorch.means.ConstantMean.gp_model_class – An uninstantiated subclass of a GP model from
gpytorch.models. The default isvanguard.models.ExactGPModel.likelihood_class (
type[Likelihood]) – An uninstantiated subclass ofgpytorch.likelihoods.Likelihood. The default isgpytorch.likelihoods.FixedNoiseGaussianLikelihood.marginal_log_likelihood_class (
type[MarginalLogLikelihood]) – An uninstantiated subclass of an MLL fromgpytorch.mlls. The default isgpytorch.mlls.ExactMarginalLogLikelihood.optimiser_class (
type[Optimizer]) – An uninstantiatedtorch.optim.Optimizerclass used for gradient-based learning of hyperparameters. The default istorch.optim.Adam.smart_optimiser_class (
type[SmartOptimiser]) – An uninstantiated subclass ofSmartOptimiser, that wraps around the givenoptimiser_classto enable advanced features, for example early stopping.rng (
Optional[Generator]) – Generator instance used to generate random numbers.kwargs (
Any) – For a complete list, seeGPController.
- _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.