Coherent sets, Koopman operators and the Ornstein–Uhlenbeck process

A problem set for reading Neurons as Detectors of Coherent Sets in Sensory Dynamics (Pughe-Sanford et al., NeurIPS 2025), covering the motivation of the paper, the machinery of Sections 2–3 and the data-driven step of Section 4. Every problem is broken into parts; click Solution under each part, or use the button in the top bar.

What the set builds

The paper's claim is that a neuron with temporal filter $\mathbf w$ and a threshold computes $\operatorname{sign}(\mathbf w^\top\hat{\mathbf x})$, where $\hat{\mathbf x}$ is the lag vector of its input and $\mathbf w$ is a subdominant singular vector of a whitened finite-time transfer operator. To read that claim you need, in order:

  1. Introduction — why coherent sets, in words: invariant sets and their noisy replacement, why a neuron would report membership in one, prediction versus retrospection at a saddle, and what the neuron actually computes. Conceptual questions only. (Questions 1–9)
  2. Block 0 — what the Koopman and Perron–Frobenius operators are, first for a deterministic map, then for a Markov process; closes with an interlude on conditional expectation (taking out what is known, the tower property and its trap, the law of total variance), each rule in expectation and in integral form. (Problems 0–1)
  3. Block A — the same objects as matrices on a finite state space: weighted adjoints, reversibility, the SVD, coherent sets, and the exact correspondence with spectral clustering. (Problems 2–5)
  4. Block B — continuous state space: the backward Kolmogorov generator, contraction, the $\rho_0$-adjoint; remarks and questions on observable/density duality and the round-trip operators $\K^\dagger\K$, $\K\K^\dagger$; a coda on non-stationarity. (Problems 6–7, Q1–Q3)
  5. Block C — the Ornstein–Uhlenbeck process: Lyapunov equation, reverse-time drift, derivation of the paper's Eq. (18), why linear observables suffice, saddle-point asymptotics. (Problems 8–12)
  6. Block D — coherent sets from data: a prelude separating learning (variational objective, time-lagged Hebbian rule) from approximation; what a Galerkin projection is and where Eqs. (22)–(24) come from; then, optionally, past–future CCA on simulated data recovers Eq. (18); whether exact singular vectors of the compressed operator are the right target; and what the transient filter of the paper's Fig. 2 actually predicts. (Problems 13–16)

Conventions used throughout

ObjectDefinitionDirection in time
Transition density$p_\tau(y\mid x)$: density of $X_{t+\tau}$ given $X_t=x$—
Koopman operator $\K_\tau$$\K_\tau f(x)=\E[f(X_{t+\tau})\mid X_t=x]=\int f(y)\,p_\tau(y\mid x)\,dy$pulls an observable back: input lives at $t+\tau$, output at $t$
Perron–Frobenius operator $\P_\tau$$\P_\tau p(y)=\int p_\tau(y\mid x)\,p(x)\,dx$pushes a density forward: input at $t$, output at $t+\tau$
Weighted inner products$\ip{f,g}_\mu=\int f g\,\mu\,dx$ with $\mu$ the law of $X_t$, $\nu$ the law of $X_{t+\tau}$—
Adjoint $\K_\tau^\dagger$$\ip{f,\K_\tau g}_\mu=\ip{\K^\dagger_\tau f,g}_\nu$; equals $\E[f(X_t)\mid X_{t+\tau}=\cdot\,]$Koopman operator of the time-reversed process
Generators$L$ (Fokker–Planck, acts on densities), $L^\dagger$ (backward Kolmogorov, acts on observables); $\K_\tau=e^{L^\dagger\tau}$, $\P_\tau=e^{L\tau}$—
Singular pairs (paper's Eq. 8)$\K_\tau u_i=\lambda_i v_i$, $\K^\dagger_\tau v_i=\lambda_i u_i$$v_i$ lives at $t$ (predictive), $u_i$ at $t+\tau$ (retrospective)

Naming trap in the paper: Section 2 calls the predictive functions $v_i$ "left singular functions"; Section 3 and Figs. 1–2 write the whitened matrix as $[\mathbf u_1\mathbf u_2]\Lambda[\mathbf v_1\mathbf v_2]^\top$, making $\mathbf v_i$ a right singular vector. The operator and matrix conventions are transposes of each other. Track $u$ versus $v$, not left versus right.

Confidence tiers and references

Solutions mark claims that are not textbook-settled with High, Medium or Speculative. Unmarked derivations are standard. Standing references: Lasota & Mackey, Chaos, Fractals and Noise (1994), Ch. 3–4 (transfer operators); Pavliotis, Stochastic Processes and Applications (2014), Ch. 3–4 (generators, OU); Froyland, Santitissadeekorn & Monahan, Chaos 20 (2010) and Froyland, Physica D 250 (2013) (coherent sets); Koltai, Wu, Noé & Schütte, Computation 6 (2018) (singular functions from data); von Luxburg, Stat. Comput. 17 (2007) (spectral clustering).

Code

Numerical parts have NumPy/SciPy scripts in code/; the solutions quote their output. They are short enough to port to JAX in a few minutes.