
UNSW Sydney | STREAM
2028-07-07
How do we get \(p(f \mid \mathcal{C})\)?
Two papers:
Conditioning a stochastic process on non-linear, non-Gaussian, or weird information does not require MCMC, variational inference, or a trained neural network.
It requires a change of perspective borrowed from diffusion models.

Diffusion modelling simply asks “how do I sample from an inconvenient distribution?”

Anderson (1982), Reverse-time diffusion equation models, Stochastic Processes and their Applications 12(3):313–326.

If we can obtain \(\nabla_\boldsymbol{f} \log p_t\), then we don’t need neural networks for the reverse diffusion

A GP is just a multivariate normal over infinitely many index points.

Take the diffusion machinery from Section 1 and set the target to a GP. The marginal \(p_t\) stays Gaussian, and every piece is known in closed form: \[ p_t = \mathcal{N}\big(\boldsymbol{b}(t),\, \mathbf{A}(t)\big), \qquad \boldsymbol{b}(t) = \alpha(t)\,\mathbf{m}_*, \qquad \mathbf{A}(t) = \alpha^2(t)\mathbf{K}_{**} + (1-\alpha^2(t))\mathbf{I}. \] The score is closed form, no neural networks: \[ \nabla_{\boldsymbol{f}}\log p_t(\boldsymbol{f}_t) = -\mathbf{A}(t)^{-1}\big(\boldsymbol{f}_t - \boldsymbol{b}(t)\big). \] Drop it straight into the reverse-time SDE and integrate from \(t=1\) to \(t=0\): \[ \mathrm{d}\boldsymbol{f}_t = \beta(t)\left[\tfrac{1}{2}\boldsymbol{f}_t - \nabla_{\boldsymbol{f}}\log p_t(\boldsymbol{f}_t)\right]\mathrm{d}t + \sqrt{\beta(t)}\,\mathrm{d}\bar{\boldsymbol{W}}_t. \]
A GP is a very boring cat. It’s just a diffusion model whose score you can write down.
“The most efficient thing for a computer to do is nothing” - Prof. Philipp Hennig
Whiten: \(\hat{\boldsymbol{f}}_0 = \mathbf{K}_{**}^{-1/2}(\boldsymbol{f}_0 - \mathbf{m}_*)\), the dynamics vanish entirely … the linear drift term is zero.
Rosenblatt (1952), Remarks on a multivariate transformation, The Annals of Mathematical Statistics 23(3):470–472.
Every one is \(\boldsymbol{f}_0 = T_\vartheta(\boldsymbol{\xi}_0)\) for a tractable generator \(T_\vartheta\) and iid-normal latent \(\boldsymbol{\xi}_0\):
If you can simulate it from noise, it qualifies. Your existing simulator is already \(T_\vartheta\).
\(m\) Gaussian innovations make the field; one more makes the heavy tail. The whole process is a deterministic map of \(m{+}1\) iid normals.
We work in latent space. Target the pulled-back posterior: \[ \pi(\boldsymbol{\xi}_0 \mid \mathcal{C}) \propto p\big(\mathcal{C} \mid T_\vartheta(\boldsymbol{\xi}_0)\big) \rho(\boldsymbol{\xi}_0). \]
Along the latent flow, the score decomposes: \[ \nabla_{\boldsymbol{\xi}} \log p_t(\boldsymbol{\xi}_t \mid \mathcal{C}) = \underbrace{\nabla_{\boldsymbol{\xi}} \log p_t(\boldsymbol{\xi}_t)}_{=\,-\boldsymbol{\xi}_t\ \text{(exact)}} + \underbrace{\nabla_{\boldsymbol{\xi}} \log p_t(\mathcal{C} \mid \boldsymbol{\xi}_t)}_{\text{guidance}}. \]
Run the same SDE in \(\boldsymbol{\xi}\)-space, add the guidance term, then push through \(T_\vartheta\).
The latent prior is exact at every \(t\). Guidance is the only thing to approximate.
We need \(\nabla_{\boldsymbol{\xi}} \log p_t(\mathcal{C}\mid\boldsymbol{\xi}_t) = \nabla_{\boldsymbol{\xi}} \log \int p\big(\mathcal{C} \mid T_\vartheta(\boldsymbol{\xi}_0)\big) \, p(\boldsymbol{\xi}_0 \mid \boldsymbol{\xi}_t)\,\mathrm{d}\boldsymbol{\xi}_0.\)
As \(p(\boldsymbol{\xi}_0 \mid \boldsymbol{\xi}_t)\) is tractable and we can importance-sample: \[ \nabla_{\boldsymbol{\xi}}\log p_t(\mathcal{C}\mid \boldsymbol{\xi}_t) \approx \alpha(t) \sum_{i=1}^{S} \bar{w}^{(i)}\, \nabla_{\boldsymbol{\xi}}\log p\big(\mathcal{C}\mid T_\vartheta(\boldsymbol{\xi}_0^{(i)})\big), \qquad \bar w^{(i)} \propto p\big(\mathcal{C}\mid T_\vartheta(\boldsymbol{\xi}_0^{(i)})\big). \] The last gradient is just the chain rule through the generator: \[ \nabla_{\boldsymbol{\xi}}\log p\big(\mathcal{C}\mid T_\vartheta(\boldsymbol{\xi}_0)\big) = \underbrace{\big[\partial_{\boldsymbol{\xi}} T_\vartheta(\boldsymbol{\xi}_0)\big]^{\!\mathsf T}}_{\text{Jacobian of the generator}}\, \nabla_{\boldsymbol{f}_0}\log p(\mathcal{C}\mid\boldsymbol{f}_0). \]
(There are some issues with weight-degeneracy in importance sampling that don’t seem to matter to us for a handful of esoteric reasons.)


| Error source | For cats | For us | |
|---|---|---|---|
| 1 | Marginal score \(\nabla\log p_t\) | uncontrolled | exact |
| 2 | Guidance approximation | uncontrolled | explicit; \(\mathcal{O}(S^{-1})\) bias |
| 3 | Discretisation | controllable | solver order \(h^q\), same bound |
We are not cheapening a hard computation. This will not somehow make computationally prohibitive processes (with respect to marginal sampling) easier.








Slides and code: astfalckl.github.io/presentations
STREAM: unsw.edu.au/science/our-schools/maths/our-research/stream
l.astfalck@unsw.edu.au
Lachlan Astfalck | UNSW Spatio-Temporal Research for Environmental Analysis and Modelling