Gaussian process is a stochastical model. More...
#include <GaussianProcess.h>
Public Member Functions | |
| GaussianProcess (size_t dims, double sigma, Random &rngRef) | |
| Constructor. | |
| void | setDimension (size_t dims) |
| Change input dimension. | |
| void | clear () |
| Discard all evidence. | |
| size_t | numEvidence () const |
| Get the number of evidence provided. | |
| std::pair< const std::vector< Vector > &, const Vector & > | getEvidence () const |
| Get all currently stored evidence. | |
| void | addEvidence (const Vector &input, double output, bool tuneHypers) |
| Provide a input-output pair as evidence. | |
| const Vector & | getEvidenceMax () const |
| Get the evidence with the highest output value. | |
| double | predictMean (const Vector &input) const |
| Try to predict f(x) using the evidence provided so far. | |
| double | getDefaultVar () const |
| Get the variance if evidence are ignored. | |
| double | predictVar (const Vector &input) const |
| The variance of the predicted f(x) from predictMean(). | |
| double | predictOutputPDF (const Vector &input, double output) const |
| Calculate the probability density of provided output given provided input. | |
| double | predictOutputScaledPDF (const Vector &input, double output) const |
| Calculate the scaled probability density of provided output given provided input. | |
| double | calcAcquisition (AcquisitionFunctionOption af, const Vector &input) const |
| Calculates the acquisition function for given input. | |
| Vector | sampleAquisitionMax (AcquisitionFunctionOption af, const std::vector< Vector > &samples) const |
| Find the input in samples which maximizes given aquisition function. | |
| std::vector< GaussianHyperparameters > & | getHyperparameters () |
| Get current hyperparameters. | |
| void | setHyperparameters (const std::vector< double > &sample_means, const std::vector< double > &sample_thetas, const std::vector< autopas::GaussianProcess::Vector > &sample_dimScales) |
| Set the hyperparameters: means, theta, dimScale. | |
| void | normalizeHyperparameters () |
| Normalize weights of hyperparameters and truncate lowest weights. | |
Static Public Member Functions | |
| static std::tuple< std::vector< double >, std::vector< double >, std::vector< autopas::GaussianProcess::Vector > > | generateHyperparameterSamples (size_t sampleSize, Random &rng, size_t dims, double sigma, double evidenceMinValue, double evidenceMaxValue) |
| Generate hyperparameter samples. | |
Gaussian process is a stochastical model.
It predicts the output of a blackbox function f(x) for given input x. To do so, some sample input-output pairs (x,f(x)) should be provided as evidence.
Currently the squared exponential kernel is used. TODO: maybe offer some options.
| autopas::GaussianProcess::GaussianProcess | ( | size_t | dims, |
| double | sigma, | ||
| Random & | rngRef | ||
| ) |
Constructor.
| dims | number of input dimensions |
| sigma | fixed noise |
| rngRef | reference to rng |
| void autopas::GaussianProcess::addEvidence | ( | const Vector & | input, |
| double | output, | ||
| bool | tuneHypers | ||
| ) |
Provide a input-output pair as evidence.
Each evidence improve the quality of future predictions.
| input | x |
| output | f(x) |
| tuneHypers | if false hyperparemeters need to be set manually |
| double autopas::GaussianProcess::calcAcquisition | ( | AcquisitionFunctionOption | af, |
| const Vector & | input | ||
| ) | const |
Calculates the acquisition function for given input.
| af | acquisition function a:input->double |
| input | i |
|
static |
Generate hyperparameter samples.
| sampleSize | size |
| rng | random number generator |
| dims | number of input dimension |
| sigma | fixed noise |
| evidenceMinValue | current lowest evidence output |
| evidenceMaxValue | current highest evidence output |
| double autopas::GaussianProcess::getDefaultVar | ( | ) | const |
Get the variance if evidence are ignored.
| std::pair< const std::vector< autopas::GaussianProcess::Vector > &, const autopas::GaussianProcess::Vector & > autopas::GaussianProcess::getEvidence | ( | ) | const |
Get all currently stored evidence.
| const autopas::GaussianProcess::Vector & autopas::GaussianProcess::getEvidenceMax | ( | ) | const |
Get the evidence with the highest output value.
| std::vector< autopas::GaussianHyperparameters > & autopas::GaussianProcess::getHyperparameters | ( | ) |
Get current hyperparameters.
| size_t autopas::GaussianProcess::numEvidence | ( | ) | const |
Get the number of evidence provided.
| double autopas::GaussianProcess::predictMean | ( | const Vector & | input | ) | const |
Try to predict f(x) using the evidence provided so far.
| input | x |
| double autopas::GaussianProcess::predictOutputPDF | ( | const Vector & | input, |
| double | output | ||
| ) | const |
Calculate the probability density of provided output given provided input.
| input | |
| output |
| double autopas::GaussianProcess::predictOutputScaledPDF | ( | const Vector & | input, |
| double | output | ||
| ) | const |
Calculate the scaled probability density of provided output given provided input.
The probability density is scaled such that the maximum is 1.
| input | |
| output |
| double autopas::GaussianProcess::predictVar | ( | const Vector & | input | ) | const |
| autopas::GaussianProcess::Vector autopas::GaussianProcess::sampleAquisitionMax | ( | AcquisitionFunctionOption | af, |
| const std::vector< Vector > & | samples | ||
| ) | const |
Find the input in samples which maximizes given aquisition function.
TODO: maybe add parameters for hyperparameters of aquisition functions
| af | function to maximize |
| samples |
| void autopas::GaussianProcess::setDimension | ( | size_t | dims | ) |
Change input dimension.
Current evidence will be discarded.
| dims |
| void autopas::GaussianProcess::setHyperparameters | ( | const std::vector< double > & | sample_means, |
| const std::vector< double > & | sample_thetas, | ||
| const std::vector< autopas::GaussianProcess::Vector > & | sample_dimScales | ||
| ) |
Set the hyperparameters: means, theta, dimScale.
The samples are scored equal to the probability that given evidence and hyperparameter-sample generates given output. Hyperparameters weights should be normalized.
| sample_means | |
| sample_thetas | |
| sample_dimScales |