Lyapunov-Tuned Random Blaschke RNN
Implementation & benchmark of arXiv:2607.15488 — The transition between synchronization and chaos for random Blaschke products
Source paper: The transition between synchronization and chaos for random Blaschke products arXiv:2607.15488 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Replace an unconstrained recurrent transition by a randomly switched composition of disk-preserving Blaschke maps. The recurrent state remains in the unit disk, while the estimated average logarithmic derivative provides a direct synchronization-versus-chaos control knob: negative transverse growth should make two states driven by the same input or map sequence synchronize, whereas positive growth should preserve sensitivity and expressive memory.
Formulas
Mathematical statement
For a disk state z_t in D={z in C:|z|<1}, use T_j(z)=exp(i theta_j) product over k of (z-a_jk)/(1-conjugate(a_jk)z), where |a_jk|<1 and j is sampled from a finite distribution p_j. The random cocycle is z_{t+1}=T_{j_t}(z_t), and its finite-time derivative exponent is lambda_hat_T=(1/T) sum from t=0 to T-1 of log(|T'_{j_t}(z_t)|). A negative exponent predicts contraction and synchronization of trajectories with the same map sequence; a positive exponent predicts loss of synchronization and chaotic sensitivity. The disk-preserving construction prevents radial explosion independently of the sign of the exponent. Inputs can be injected through a bounded disk-valued map before applying T_j.
Implementation notes
1. Integration point: implement a complex-valued RNN or state-space model whose recurrent transition is a randomly selected Blaschke product. Represent each complex coordinate by two real channels. For a low-cost MVP use degree-one maps T_j(z)=exp(i theta_j)(z-a_j)/(1-conjugate(a_j)z), with two or four maps selected by a fixed categorical distribution. Inject input u_t through q_t=tanh(W_u u_t+b), then form a bounded pre-state and apply the map. 2. Pseudocode: initialize z and running exponent s=0; at every step sample j, compute z_next=T_j(z), compute d=Tprime_j(z), set s <- s+log(abs(d)+1e-8), set z <- z_next, and emit z. Add an optional penalty gamma times max(0, lambda_hat-lambda_target)^2 when a contracting model is desired. 3. Computed directly: the Blaschke transition and derivative statistic. Estimated empirically: lambda_hat, paired-trajectory separation, validation loss, and finite-time exponent variance. 4. First experiment: compare this model with a tanh RNN of matched width and parameter count on sequential MNIST or the adding problem. Run paired trajectories with identical inputs and map sequences but initial perturbation 1e-4. Sweep a map parameter controlling the derivative magnitude. The predicted signature is exponential separation with slope lambda_hat: errors decay for lambda_hat<0 and grow or saturate for lambda_hat>0. The observed sign-change boundary should agree with the derivative estimate within 20%, and the stable regime should show fewer exploding gradients.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Significantly worse ✗
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 8/10
Built a compact Blaschke-product verification and sequence-learning MVP. The core mechanism manifested: the analytic derivative matched finite differences to 1.11e-9 relative error, disk-preservation testing had zero violations, the observed transition p=0.58463 exactly matched the paper’s predicted threshold, and lambda’s slope versus map probability matched prediction (1.185624 vs 1.185624). In the small adding-task comparison, the Blaschke model reached test MSE 1.545 versus 1.707 for tanh, but this secondary result is only a weak signal because the models and parameter counts were not perfectly matched.
- Agent confidence
- 8/10
- Baseline
- Tanh RNN: test MSE 1.7066 after 500 updates; 89 trainable parameters.
- Idea
- Blaschke RNN: test MSE 1.5451 after 500 updates; 49 trainable parameters. Toy checks: analytic/finite-difference derivative max relative error 1.11e-9; predicted and observed transition p=0.58463; predicted and measured lambda-vs-p slope 1.185624; disk violations 0/20,000.
Limitations: The synchronization sweep uses the paper’s fixed boundary orbit for the exact transition test, rather than a general interior random cocycle. Very strong contraction cases underflow before a pair-growth slope can be fit. The learning experiment is a tiny scalar adding task, uses fixed rather than sampled maps in the model, has unequal parameter counts, and does not test sequential MNIST, long-memory scaling, gradient explosions, FLOPs, or multiple random seeds.
How to run: python3 blaschke_mvp.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.15488)
Significantly WORSE than the tuned baseline (+833.9%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0005
- Idea mean
- 0.0044
- Effect (Δ)
- 0.0039 (+833.9%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±320.1%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
This used the built-in dynamics data at a reduced 1200-training/300-test sample size and 10 epochs rather than the harness defaults, to fit the runtime budget. The idea sweep used three predefined joint learning-rate/transition settings and did not separately sweep all combinations of alpha and map probability; no long-horizon rollout, gradient-explosion, FLOP, or larger-width evaluation was performed.
How to run: python3 bench_blaschke.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Failed ✗
Agent confidence: 9/10
Implemented a matched dynamics-track recurrent experiment where the baseline and idea share the input projection, hidden width, and output head; only the recurrent transition differs. The mechanism signature was confirmed qualitatively: estimated negative Lyapunov exponents matched negative paired-trajectory separation slopes. However, the idea was significantly worse than the tuned tanh baseline (delta_mean > 0, permutation p=0.0081), so the benchmark system correctly sets worked=false.
- Baseline
- Tuned tanh transition RNN, lr=0.01: mean test MSE 0.0004668 across 8 seeds; per-seed values [0.0004135, 0.0004800, 0.0004276, 0.0005655, 0.0004497, 0.0005104, 0.0004972, 0.0003903]. Baseline sweep means for lr 0.001/0.003/0.01: 0.007356/0.002013/0.000472.
- Idea
- Random degree-one Blaschke transition, best tested config lr=0.01, alpha=0.3, p=0.75: mean test MSE 0.0043591 across 8 seeds; baseline-minus-idea comparison as idea minus baseline delta_mean=+0.0038923, p=0.0081, 0/8 wins. Mechanism signature: lambda/pair slopes (-0.5768/-0.6371) and (-1.1032/-0.9379), both sign-confirmed.
Benchmark result
Significantly WORSE than the tuned baseline (+833.9%, p=0.0081, wins 0 / 8 paired seeds).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0005
- Idea mean
- 0.0044
- Effect (Δ)
- 0.0039 (+833.9%; negative = idea better)
- Wins
- 0 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- ±320.1%
- Mechanism
- Confirmed ✓
- Practical effect
- Hurts
- Baseline tuning
- swept over 3 configs
This used the built-in dynamics data at a reduced 1200-training/300-test sample size and 10 epochs rather than the harness defaults, to fit the runtime budget. The idea sweep used three predefined joint learning-rate/transition settings and did not separately sweep all combinations of alpha and map probability; no long-horizon rollout, gradient-explosion, FLOP, or larger-width evaluation was performed.
How to run: python3 bench_blaschke.py
Artifacts
- bench_blaschke.py 5.2 KB View Raw
- bench_report.json 2.9 KB View Raw
- blaschke_mvp.py 6.3 KB View Raw
- report.md 1.7 KB View
- report_bench_2026-08-30T183932.md 5.1 KB View
- results.json 3.6 KB View Raw