Echo State Network / Reservoir Computing Explorer

A frozen random dynamical system converts temporal patterns into trainable spatial features

© 2026 Theodore P. Pavlic
· MIT License
0.90
input x(t) — driven for t = 0 … 149, then silenced
6 reservoir neuron traces hi(t) — drag bar to select snapshot
Spatial fingerprint at selected t  ·  colored dots = the 6 traced neurons  ·  gallery: all 4 signal families × 10 time slices  ·  highlight = single best L² match
Classifier vote — best-match family at each of 80 time slices across the driven phase (t = 20 … 99) · ★ = plurality winner
The reservoir is working memory. See below for explanation.
input x(t) time series FROZEN Reservoir random fixed weights N neurons ρ controls memory decay h(T) ∈ ℝᴺ instantaneous reservoir state TRAINED Linear Classifier one layer · w · h(T) reservoir maps signal to separable ℝᴺ → linear works class
① Input signals — 100 steps each
↓  drives reservoir (N = 20 neurons, ρ = 0.9)  ↓
② Reservoir neuron traces hi(t) — 8 of 20 shown · shaded = averaging window (t = 50 … 99)
↓  √(mean(hi(t)²)) over shaded window  ↓
③ Response-amplitude fingerprint — one bar per neuron · height = RMS over averaging window
How the fingerprint forms. Each reservoir neuron responds to the input with its own oscillation. During the steady-state window (shaded) the pattern is stable and repeating — it encodes the input's character, not its phase. Taking the RMS of each neuron's output collapses the time dimension into a single number per neuron: the oscillation amplitude. Different input signals produce distinct bar-height signatures. Try the phase shift slider — drag Signal B's phase from 0° to 360°. Watch the waveform slide in panel ①, the traces shift in panel ②, but the orange bars in panel ③ stay locked in place. Why is this? For periodic signals (sine, square wave), the averaging window spans many complete cycles and mean(x²) over any integer number of cycles equals amplitude²/2 exactly — the phase cancels algebraically. For the chirp, the instantaneous frequency at each time step is fixed by t (not by the starting phase), so different phases trace the same frequency sweep in the window; the RMS averages over many frequencies and nearly cancels the phase. The slight jitter you see with the chirp is the residual from this approximate (not exact) cancellation — the chirp never completes full cycles at any single frequency, so there is no perfect algebraic cancellation, only statistical averaging.
50
0.90
0.10
60
Raw x(T=end)
LDA of ESN fingerprint
Each dot = one noisy trial (random phase + noise). Left — raw x(T=end): uniformly distributed on [−1, 1] regardless of frequency — zero information. Right — LDA of response-amplitude fingerprint: for each trial the ESN is driven for 100 steps; then for each of the N neurons we compute sqrt(mean(hᵢ(t)²)) over the steady-state window. This per-neuron oscillation amplitude is phase-invariant (mean(x²) over a full cycle of any sinusoid equals amplitude²/2, regardless of starting phase), so random phases no longer scatter the feature vectors. The two classes form compact, well-separated clusters along the Fisher discriminant axis; the vertical line is the LDA decision boundary. This is why Tab 3 achieves high accuracy with a simple Linear Classifier: the reservoir converts a hard temporal classification problem into an easy spatial one.
input x(t) time series FROZEN Reservoir random fixed weights N neurons ρ controls memory decay amplitude ∈ ℝᴺ √( time-avg of hᵢ(t)² ) over steady-state window phase-invariant TRAINED Linear Classifier one layer · w · h(T) reservoir maps signal to separable ℝᴺ → linear works class
0.10
Raw — x(T=end) only
single instantaneous value; no pattern info
random guessing = 50%
ESN — response-amplitude fingerprint ∈ ℝᴺ
per-neuron oscillation amplitude over steady state (N=35)
random guessing = 50%
Test accuracy vs. reservoir size N  ·  dashed line = 50% chance level
Why raw fails: x(T=end) is uniformly distributed regardless of frequency — no better than a coin flip. Why linear classification of the ESN fingerprint works at ~100%: the per-neuron response amplitude — sqrt(mean(hᵢ(t)²)) over the steady-state window — is phase-invariant: for a periodic input, mean(x²) over a full cycle equals amplitude²/2 regardless of starting phase. Each neuron’s response amplitude is frequency-specific, landing different signal types in distinct regions of ℝᴺ. In that high-dimensional space, a single hyperplane separates the classes. This is a general property of reservoir computing: the reservoir's random nonlinear dynamics expand the input into ℝᴺ, making the problem linearly solvable. High accuracy from a simple one-layer readout is expected — the reservoir did the hard work.
Without reservoir x(t) input x(T=end) 1 scalar no history TRAINED Linear Classifier 1-layer · trained ≈50% chance random phase → x(T=end) uniform → no info
With reservoir x(t) input FROZEN Reservoir N neurons random fixed weights TRAINED Linear Classifier 1-layer · trained ≫50% classifier sees time-avg of hᵢ(t)² over steady-state window response amplitude is phase-invariant → classifiable