Liking cljdoc? Tell your friends :D
All platforms.

org.replikativ.foerster.cascade

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.
raw docstring

cascadeclj/s

(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).
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close