Prior Object¶
prior
¶
Prior distribution interface.
Class
Prior: Prior distribution class.
ls_prior.prior.Prior
¶
Prior distribution class.
This class implements functionality of a Gaussian prior measure that is typically required in
the context of Bayesian inference. In the spirit of separation of concerns, the prior component
is rather stupid. It simply utilizes objects for the (representation of) a covariance operator
\(\mathcal{C}\), its factorization \(\widehat{\mathcal{C}}\), and a precision operator
\(\mathcal{C}^{-1}\). These components have to adhere to the interface prescribed by the
InterfaceComponent class. The necessary objects can
be manually assembled and be handed to the Prior class for maximum flexibility.
On the other hand, the builder module provides a convenient alternative
for the setup of a preconfigured prior object.
Methods:
| Name | Description |
|---|---|
evaluate_cost |
Evaluate the cost/negative log-probability for a given parameter vector. |
evaluate_gradient |
Evaluate the gradient of the cost functional with respect to a given parameter vector. |
evaluate_hessian_vector_product |
Evaluate the Hessian-vector product of the cost functional in the given direction. |
sample |
Generate a sample from the prior distribution. |
random_vector_size
property
¶
Return the required size of the random vector for sampling.
__init__
¶
__init__(
mean_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
precision_operator: components.InterfaceComponent,
covariance_operator: components.InterfaceComponent,
covariance_factorization: components.InterfaceComponent,
fem_converter: fem.FEMConverter,
seed: int,
) -> None
Initialize Prior distribution object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
mean_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Mean vector \(\overline{m}\) of the prior measure. |
required |
precision_operator
|
components.InterfaceComponent
|
Representation of the precision operator \(\mathcal{C}^{-1}\). |
required |
covariance_operator
|
components.InterfaceComponent
|
Representation of the covariance operator \(\mathcal{C}\). |
required |
covariance_factorization
|
components.InterfaceComponent
|
Representation of a factorization \(\widehat{\mathcal{C}}\) of the covariance operator for sampling. |
required |
fem_converter
|
fem.FEMConverter
|
Converter object to switch between vertex- and DoF-based representation of vectors. |
required |
seed
|
int
|
Random seed for the internal random number generator. |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
Checks that precision operator has the correct shape. |
ValueError
|
Checks that covariance operator has the correct shape. |
ValueError
|
Checks that covariance factor has the correct shape. |
evaluate_cost
¶
Evaluate the cost functional, i.e. the negative log probability for given input.
Computes \(\frac{1}{2} (m-\overline{m})^T \mathcal{C}^{-1} (m-\overline{m})\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameter_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Parameter candidate for which to evaluate the cost/negative log probability, given on mesh vertices. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
float |
float
|
cost/negative log probability |
evaluate_gradient
¶
evaluate_gradient(
parameter_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
) -> np.ndarray[tuple[int], np.dtype[np.float64]]
Evaluate the gradient of the cost/negative log-probability w.r.t. the parameter vector.
Computes \(\mathcal{C}^{-1} (m - \overline{m})\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameter_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Parameter candidate for which to evaluate the gradient, given on mesh vertices. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Gradient of the cost/negative log-probability, given on mesh vertices. |
evaluate_hessian_vector_product
¶
evaluate_hessian_vector_product(
direction_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
) -> np.ndarray[tuple[int], np.dtype[np.float64]]
Evaluate the application of the Hessian of the cost functional on a given direction.
Computes \(\mathcal{C}^{-1} m_{\text{dir}}\).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
direction_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Direction for which to evaluate the Hessian-vector product, given on mesh vertices. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Hessian-vector product, given on mesh vertices. |
generate_sample
¶
Generate a sample from the prior measure.
Computes sample in two-step procedure:
- Generate i.i.d. normal vector \(\xi\) matching input dimension of \(\widehat{\mathcal{C}}\).
- Multiply with covariance factorization \(\widehat{\mathcal{C}}\) and add mean
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Sample vector, given on mesh vertices. |
apply_covariance_operator
¶
apply_covariance_operator(
parameter_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
) -> np.ndarray[tuple[int], np.dtype[np.float64]]
Apply the covariance operator to a given parameter vector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameter_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Parameter candidate for which to apply the covariance operator, given on mesh vertices. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Result of applying the covariance operator, given on mesh vertices. |
apply_covariance_factorization
¶
apply_covariance_factorization(
random_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
) -> np.ndarray[tuple[int], np.dtype[np.float64]]
Apply the covariance factorization to a given parameter vector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
random_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Random vector for which to apply the covariance factorization. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Result of applying the covariance factorization, given on mesh vertices. |
Raises:
| Type | Description |
|---|---|
ValueError
|
Checks that the random vector has the correct shape. |
apply_precision_operator
¶
apply_precision_operator(
parameter_vector: np.ndarray[tuple[int], np.dtype[np.float64]],
) -> np.ndarray[tuple[int], np.dtype[np.float64]]
Apply the precision operator to a given parameter vector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parameter_vector
|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
Parameter candidate for which to apply the precision operator, given on mesh vertices. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray[tuple[int], np.dtype[np.float64]]
|
np.ndarray[tuple[int], np.dtype[np.float64]]: Result of applying the precision operator, given on mesh vertices. |
_check_input_dimension
¶
Checks dimension of input vectors, applied in all interface methods.
_check_output_dimension
¶
Checks dimension of result vectors, applied in all interface methods.