ExponentialCovariance

Exponential covariance function.

Overview

A simple exponential covariance function can be constructed as

k(x,x)=σf2exp(r(x,x)γ)+σn2δx,x,k(x,x^\prime) = \sigma_f^2 \, exp \left(- r_\ell(x,x^\prime)^\gamma \right) + \sigma_n^2 \, \delta_{x,x^\prime},

which is valid for 0<γ20 < \gamma \leq 2. r(x,x)r_\ell(x,x^\prime) is a scaled distance based on the length factor \vec{\ell}, defined as

r(x,x)=n(xixii)2.r_\ell(x,x^\prime) = \sqrt{ \sum_n \left( \frac{x_i - x^\prime_i}{\ell_i} \right)^2}.

When γ=2\gamma = 2 is equivalent to SquaredExponentialCovariance, save a factor of 22 (which can be absorbed into \vec{\ell}).

Hyperparameters

Table 1: Hyperparameters for Exponential Covariance Function

VariableDomainDescription
\vec{\ell}R>0n\mathbb{R}_{> 0}^nLength factors corresponding to input parameters*
σf\sigma_fR0\mathbb{R}_{\geq 0}Signal variance*
σn\sigma_nR0\mathbb{R}_{\geq 0}Noise variance*
γ\gamma(0,2](0,2]Exponential factor

*See the Gaussian Process Trainer documentation for more in depth explanation of \vec{\ell}, σf\sigma_f, and σn\sigma_n hyperparameters.

Example Input File Syntax

[Covariance]
  [covar]
    type = ExponentialCovariance
    gamma = 1 #Define the exponential factor
    signal_variance = 1 #Use a signal variance of 1 in the kernel
    noise_variance = 1e-6 #A small amount of noise can help with numerical stability
    length_factor = '0.551133 0.551133' #Select a length factor for each parameter (k and q)
  []
[]
(contrib/moose/modules/stochastic_tools/test/tests/surrogates/gaussian_process/GP_exponential.i)

Input Parameters

  • gammaGamma to use for Exponential Covariance Kernel

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Gamma to use for Exponential Covariance Kernel

  • length_factorLength factors to use for Covariance Kernel

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Length factors to use for Covariance Kernel

  • signal_varianceSignal Variance ($\sigma_f^2$) to use for kernel calculation.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Signal Variance ($\sigma_f^2$) to use for kernel calculation.

Required Parameters

  • covariance_functionsCovariance functions that this covariance function depends on.

    C++ Type:std::vector<UserObjectName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Covariance functions that this covariance function depends on.

  • noise_variance0Noise Variance ($\sigma_n^2$) to use for kernel calculation.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Noise Variance ($\sigma_n^2$) to use for kernel calculation.

  • num_outputs1The number of outputs expected for this covariance function.

    Default:1

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:The number of outputs expected for this covariance function.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters