The particle cascade (Paige, Wood, Doucet & Teh 2014): asynchronous SMC without barriers. Each particle runs on its own; at an observation (or a barrier factor) it compares its weight W with the running mean W̄ of the weights that have arrived there so far, itself included, and branches on R = W/W̄ — so no particle ever waits for another (Eq. 14 of the paper): below the mean it survives with probability R, as one copy weighted W̄; at or above it takes ⌈R⌉ copies while the children produced at that stage so far are at most min(K₀, the arrivals before it), ⌊R⌋ otherwise, each weighted W/M. That feedback keeps the population near K₀; children drawn independently of each other would let its variance grow without bound. Copies are forks of the particle's world.
The evidence estimate (1/K₀) Σ W over the particles that reach the end (K₀
launched) is unbiased whatever order the particles arrive in, so slow and
fast particles (an uneven model call, a long simulation) cost no waiting.
:cap bounds the particles alive at once: copies beyond it collapse into a
multiplicity carried by the particle (Anglican's pcascade), which counts in
the running means and multiplies its final weight.
Inference ends when every particle has finished — by count, not by wall clock, which would favour fast particles (Murray, Singh & Lee 2021). The branching draws come from each particle's world stream, but the running means depend on arrival order, so runs on a multi-threaded executor are not reproducible from their seed.
The particle cascade (Paige, Wood, Doucet & Teh 2014): asynchronous SMC without barriers. Each particle runs on its own; at an observation (or a barrier factor) it compares its weight W with the running mean W̄ of the weights that have arrived there so far, itself included, and branches on R = W/W̄ — so no particle ever waits for another (Eq. 14 of the paper): below the mean it survives with probability R, as one copy weighted W̄; at or above it takes ⌈R⌉ copies while the children produced at that stage so far are at most min(K₀, the arrivals before it), ⌊R⌋ otherwise, each weighted W/M. That feedback keeps the population near K₀; children drawn independently of each other would let its variance grow without bound. Copies are forks of the particle's world. The evidence estimate (1/K₀) Σ W over the particles that reach the end (K₀ launched) is unbiased whatever order the particles arrive in, so slow and fast particles (an uneven model call, a long simulation) cost no waiting. `:cap` bounds the particles alive at once: copies beyond it collapse into a multiplicity carried by the particle (Anglican's pcascade), which counts in the running means and multiplies its final weight. Inference ends when every particle has finished — by count, not by wall clock, which would favour fast particles (Murray, Singh & Lee 2021). The branching draws come from each particle's world stream, but the running means depend on arrival order, so runs on a multi-threaded executor are not reproducible from their seed.
(cascade model n & [{:keys [cap policy executor concurrency] :as opts}])The particle cascade of model (a spin) with n initial particles.
Options:
:cap the most particles alive at once (default 4·n); copies beyond
it collapse into a multiplicity
:policy a foerster.trace/policy deciding the sites (default the prior)
:concurrency how many particles run between barriers at once (default
32); the others wait and are resumed in random order, which
keeps the population stable (Paige et al. 2014, §4)
:executor the worlds' executor
Resolves an EmpiricalMeasure of Samples over the particles that reached
the end, weighted, whose m/log-marginal is the evidence estimate; its
:cascade holds :launched, :finished, :peak (most alive at once) and
:collapsed (copies folded into multiplicities).
The particle cascade of `model` (a spin) with `n` initial particles.
Options:
:cap the most particles alive at once (default 4·n); copies beyond
it collapse into a multiplicity
:policy a `foerster.trace/policy` deciding the sites (default the prior)
:concurrency how many particles run between barriers at once (default
32); the others wait and are resumed in random order, which
keeps the population stable (Paige et al. 2014, §4)
:executor the worlds' executor
Resolves an EmpiricalMeasure of `Sample`s over the particles that reached
the end, weighted, whose `m/log-marginal` is the evidence estimate; its
`:cascade` holds `:launched`, `:finished`, `:peak` (most alive at once) and
`:collapsed` (copies folded into multiplicities).cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |