FisherPreconditioner

phasic.svgd.FisherPreconditioner(
    model,
    observed_data,
    theta_dim,
    param_transform=None,
    rewards=None,
    epsilon=1e-08,
)

Diagonal Fisher information preconditioner for multi-scale SVGD.

Computes the diagonal of the empirical Fisher information matrix at a reference parameter point, then uses it to normalize the kernel’s particle space so that all dimensions have comparable information content.

Parameters

model : callable

Model function: model(theta, data, rewards=None) -> (pmf, moments)

observed_data : array

Observation data points

theta_dim : int

Number of parameters (learnable dimensions only if fixed params exist)

param_transform : callable or None = None

Transformation from unconstrained to constrained space (e.g., softplus)

rewards : array or None = None

Optional rewards for multivariate models

epsilon : float = 1e-8

Floor for Fisher values to avoid division by zero

Methods

Name Description
compute_scaling Compute Fisher diagonal at reference point and derive scaling.

compute_scaling

phasic.svgd.FisherPreconditioner.compute_scaling(theta_ref)

Compute Fisher diagonal at reference point and derive scaling.

Uses moment-matching to find a better reference point before computing the Fisher information. The provided theta_ref is used as a starting point for the moment-matching search.

Parameters

theta_ref : array(theta_dim)

Initial reference point in unconstrained space (same space as particles). Used as starting point for moment-matching refinement.