pub enum VariationalParam {
Normal {
mu: f64,
log_sigma: f64,
},
LogNormal {
mu: f64,
log_sigma: f64,
},
Beta {
log_alpha: f64,
log_beta: f64,
},
}Expand description
Variational distribution parameters for a single random variable.
Each random variable in the model gets its own variational distribution that approximates its marginal posterior. The parameters are stored in log-space for numerical stability and to ensure positive constraints.
§Variants
Normal- Gaussian approximation with mean and log-standard-deviationLogNormal- Log-normal approximation for positive variablesBeta- Beta approximation for variables constrained to [0,1]
§Examples
use fugue::*;
use rand::rngs::StdRng;
use rand::SeedableRng;
// Create variational parameters
let normal_param = VariationalParam::Normal {
mu: 1.5,
log_sigma: -0.693 // sigma = 0.5
};
let beta_param = VariationalParam::Beta {
log_alpha: 1.099, // alpha = 3.0
log_beta: 0.693, // beta = 2.0
};
// Sample from variational distribution
let mut rng = StdRng::seed_from_u64(42);
let sample = normal_param.sample(&mut rng);
let log_prob = normal_param.log_prob(sample);Variants§
Normal
Normal/Gaussian variational distribution.
LogNormal
Log-normal variational distribution for positive variables.
Fields
Beta
Beta variational distribution for variables in [0,1].
Implementations§
Source§impl VariationalParam
impl VariationalParam
Sourcepub fn sample<R: Rng>(&self, rng: &mut R) -> f64
pub fn sample<R: Rng>(&self, rng: &mut R) -> f64
Sample a value from this variational distribution with numerical stability.
Generates a random sample using the current variational parameters. This version includes parameter validation and numerical stability checks.
§Arguments
rng- Random number generator
§Returns
A sample from the variational distribution, or NaN if parameters are invalid.
Sourcepub fn sample_with_aux<R: Rng>(&self, rng: &mut R) -> (f64, f64)
pub fn sample_with_aux<R: Rng>(&self, rng: &mut R) -> (f64, f64)
Sample with reparameterization for gradient computation (experimental).
Returns both the sample and auxiliary information needed for computing gradients via the reparameterization trick.
Sourcepub fn log_prob(&self, x: f64) -> f64
pub fn log_prob(&self, x: f64) -> f64
Compute log-probability of a value under this variational distribution.
This is used for computing entropy terms in the ELBO and for evaluating the quality of the variational approximation. Now includes numerical stability checks.
§Arguments
x- Value to evaluate
§Returns
Log-probability density at the given value.
Trait Implementations§
Source§impl Clone for VariationalParam
impl Clone for VariationalParam
Source§fn clone(&self) -> VariationalParam
fn clone(&self) -> VariationalParam
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more