normalizing flow generative
**Normalizing Flows** are the **generative model family that learns an invertible transformation between a simple base distribution (e.g., standard Gaussian) and a complex target distribution (e.g., natural images) — where the invertibility enables exact likelihood computation via the change-of-variables formula, and the transformation is composed of learnable invertible layers (coupling layers, autoregressive transforms, continuous flows) that progressively reshape the simple distribution into the complex data distribution**.
**Mathematical Foundation**
If z ~ p_z(z) is the base distribution and x = f(z) is the invertible transformation, the data distribution is:
p_x(x) = p_z(f⁻¹(x)) × |det(∂f⁻¹/∂x)|
The Jacobian determinant accounts for how the transformation stretches or compresses probability density. For the transformation to be practical:
1. f must be invertible (bijective).
2. The Jacobian determinant must be efficient to compute (not O(D³) for D-dimensional data).
**Coupling Layer Architectures**
**RealNVP / Glow**:
- Split input into two halves: x = [x_a, x_b].
- Transform: y_a = x_a (identity), y_b = x_b ⊙ exp(s(x_a)) + t(x_a).
- s() and t() are arbitrary neural networks (no invertibility requirement — they parameterize the transform, not perform it).
- Jacobian is triangular → determinant is the product of diagonal elements (O(D) instead of O(D³)).
- Inverse: x_b = (y_b - t(x_a)) ⊙ exp(-s(x_a)), x_a = y_a. Exact inversion!
- Stack multiple coupling layers, alternating which half is transformed.
**Autoregressive Flows (MAF, IAF)**:
- Transform each dimension conditioned on all previous dimensions: x_i = z_i × exp(s_i(x_{
Go deeper with CFSGPT
Get AI-powered deep-dives, save terms, and run advanced simulations — free account.
Create Free Account