class gpr::StudentTProcessRegression

Overview

#include <StudentTProcessRegression.h>
 
class StudentTProcessRegression: public gpr::GaussianProcessRegression {
public:
    // construction
 
    StudentTProcessRegression();
    ~StudentTProcessRegression();
 
    // methods
 
    void setHyperpriorParameters(double a, double b);
    double getHyperpriorA() const;
    double getHyperpriorB() const;
    double getTPPrefactor() const;
    virtual void calculateVariance(Observation& image1);
};

Inherited Members

public:
    // structs
 
    struct LaplacePosteriorFactor;
    struct LaplacePosteriorSignature;
    struct LaplacePosteriorStamp;
    struct LaplacePosteriorState;
    struct LaplaceTrainingCovarianceGeometry;
    struct SliceLaplaceState;
    struct farthest_point_sampling_t;
 
    // fields
 
    bool failedOptimizer;
    std::unique_ptr<SexpatCF> sexpat_cov_func;
 
    // methods
 
    void initialize(const InputParameters& parameters, const AtomsConfiguration& conf_info);
    void setHyperparameters(const Observation& all_obs, const AtomsConfiguration& conf_info, const bool update_sexpat_cf_param = true, const bool update_const_cf_param = true, const bool update_sqrt_prior_param = true);
    void setUpDefault();
    void evaluateTrainingCovarianceMatrix(const EigenMatrix& x, const Eigen::VectorXd& x_ind, EigenMatrix& cov_matrix, bool serial_per_rank = false);
    void evaluateCovarianceMatrix(const EigenMatrix& x1, const EigenMatrix& x2, const Eigen::VectorXd& x1_ind, const Eigen::VectorXd& x2_ind, EigenMatrix& C, bool serial_per_rank = false) const;
    void extractUniqueIndices(const Eigen::VectorXd& input_ind, Eigen::VectorXd& output_ind) const;
    void evaluateEnergyAndGradient(const Eigen::VectorXd& w, const EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, EnergyAndGradient& energy_and_gradient);
    void optimize(const Observation& observation);
    void optimizeFactorized(const Observation& observation);
    void calculatePotential(Observation& image1);
    void calculatePotentialLaplace(Observation& image1);
    void calculatePotentialLaplaceSlice(Observation& image1);
    void calculateVarianceLaplaceSlice(Observation& image1);
    void setUncertaintyMode(UncertaintyMode mode);
    UncertaintyMode getUncertaintyMode() const;
    void setUsePsisLaplace(bool use);
    bool getUsePsisLaplace() const;
    void setUsePsisDeterministicGrid(bool use);
    bool getUsePsisDeterministicGrid() const;
    void setUseDeltaMethod(bool use);
    bool getUseDeltaMethod() const;
    void buildRFFModel(const Observation& training_data, int D_rff);
    void calculatePotentialRFF(Observation& image);
    void calculateVarianceRFF(Observation& image);
    int getRFFFeatures() const;
    bool isRFFBuilt() const;
    void setRFFFeaturesRequested(int D_rff);
    int getRFFFeaturesRequested() const;
    void setHyperparameterOptimizationMode(HyperparameterOptimizationMode mode);
    HyperparameterOptimizationMode getHyperparameterOptimizationMode() const;
    void setScgMaxIterationsForTesting(Index_t max_iter);
    void resetLaplacePosteriorSignatureBuildsForTesting() const;
    std::size_t laplacePosteriorSignatureBuildsForTesting() const;
    void setForceFactorOwnerLaplaceMeanForTesting(bool value);
    void resetLaplaceMeanBlockPartitionCallsForTesting() const;
    std::size_t laplaceMeanBlockPartitionCallsForTesting() const;
    void calculatePotentialDispatched(Observation& image1);
    void calculateVarianceLaplace(Observation& image1);
    void calculateVarianceDispatched(Observation& image1);
    bool hasBeenOptimized() const;
    void setJitterSigma2(const Index_t value);
    void setParameters(const GPRSetup& parameters);
    LikGaussian& getLikGaussian();
    const LikGaussian& getLikGaussian() const;
    SexpatCF& getSexpAtCovarianceFunction();
    const SexpatCF& getSexpAtCovarianceFunction() const;
    ConstantCF& getConstantCovarianceFunction();
    const ConstantCF& getConstantCovarianceFunction() const;
    Index_t getNumberOfPotentialCalls() const;
    const EigenMatrix& getL() const;
    const Eigen::VectorXd& getAlpha() const;
    const EigenMatrix& getRMatrix() const;
    const Eigen::VectorXd& getRIndices() const;
    bool hasTrainingPermutation() const;
    void assembleDirectionalCovarianceDerivatives(const EigenMatrix& x, const Eigen::VectorXd& ind_Ddim, const Eigen::VectorXd& uDdim, const Eigen::VectorXd& direction, EigenMatrix& first, EigenMatrix& second, bool serial_per_rank = false) const;
    void extractCoordinatesByIndex(const EigenMatrix& x, const Eigen::VectorXd& ind_Ddim, const Index_t ind, FieldMatrixd& x_loc) const;
    void assignBlockToMatrix(const Eigen::VectorXd& ind_Ddim1, const Eigen::VectorXd& ind_Ddim2, const Index_t row_val, const Index_t col_val, const FieldMatrixd& field, EigenMatrix& matrix, bool transpose_field = false) const;
    void accumulateBlockContribution(const Eigen::VectorXd& ind_Ddim1, const Eigen::VectorXd& ind_Ddim2, const Index_t row_val, const Index_t col_val, const FieldMatrixd& field, const EigenMatrix& invC, const Eigen::VectorXd& b, double& trace_accum, double& quad_accum, bool transpose_field = false);
    void removeColumn(const Index_t column_ind, EigenMatrix& matrix);
    Index_t getNumberOfRepetitiveIndices(const Eigen::VectorXd& ind_Ddim) const;
    virtual void calculateVariance(Observation& image1);
    virtual void refreshVariancePrefactor(const Eigen::VectorXd&);
    virtual double localVariancePrefactor(const Eigen::VectorXd&, const Eigen::VectorXd&) const;
    virtual double localVariancePrefactorFromQuadratic(const Eigen::VectorXd&, double) const;
    bool evaluateDirectionalCurvature(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, const Eigen::VectorXd& direction, double& curvature);
    bool assembleExactHessian(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, int n_hyperparameters, Eigen::MatrixXd& H);
    bool assembleExactHessianLocalDense(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, int n_hyperparameters, Eigen::MatrixXd& H);
    void updateModelWithFullData(const Observation& full_observation);
    void updateConfiguration(const AtomsConfiguration& conf_info);
    const AtomsConfiguration& getAtomsConfig() const;
    void calculatePotentialSVGD(Observation& image1);
    void calculateVarianceSVGD(Observation& image1);
    void calculatePotentialBMA(Observation& image1);
    void calculateVarianceBMA(Observation& image1);
    void evaluateEnergyAndGradientLocal(const Eigen::VectorXd& w, const EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, EnergyAndGradient& energy_and_gradient);
    void setSVGDConfig(const laplace::SteinVariationalConfig& cfg);
    const laplace::SteinVariationalConfig& getSVGDConfig() const;

Detailed Documentation

Methods

void setHyperpriorParameters(double a, double b)

Set the inverse-gamma hyperprior parameters.

Small values (1e-20) approximate a non-informative (flat) prior, reducing the TP to GP behavior.

Parameters:

a

Shape parameter (alpha)

b

Scale parameter (beta)

double getTPPrefactor() const

TP prefactor (signal variance estimate from hyperprior).

Valid after training. Used to scale prediction variance.

virtual void calculateVariance(Observation& image1)

Compute predictive variance for energy and gradient. Corresponds to MATLAB get_variance.m.