imagining syntax

Text set in serif type with a dotted bar in the margin was drafted by an LLM (claude-fable-5) and sometimes reviewed by the author. The rest is the author's own. How to read this site

schedopt_bo_r9

20260722_145632_schedopt_bo_r9 · complete · published 2026-07-23 · seed 1000

part of investigation alpha-curriculumschedule-optschedopt-v2

Intent

Step E of the schedopt re-freeze continuation (Phase 4), round 9: eight candidate schedules from the four-parameter modulation family, the three-parameter ramp multiplied by (1 + A·w) with amplitude A in [0, 1] and w pinned to burst_16's realized tooth wave (period 400/3 steps, duty 0.5, peak-first), proposed by Thompson sampling from a Gaussian process warm-started from every three-parameter evaluation re-expressed at A = 0 and scored at the re-frozen operating point v2 (m_star=95.5, k=350, dwell 2) over the shared search seed pool. The pre-registration (experiments/schedopt/phase4_prereg.md) precedes every run of this phase; v1 and v2 numbers are never merged.

Hypothesis

Hypothesis: The tooth amplitude helps at a speed-measuring objective \@{schedopt-bo-r9-hypothesis}

At least one modulated candidate beats the best smooth schedule on the search pool, and the running optimum's amplitude A is greater than zero. Search-phase s-hat values are never reported as results.

Setup

model
GPT (nanoGPT-derived), weight-tied embeddings — 2 layers × 4 heads × 256 dim (~1,635,584 params) · block 50 · dropout 0.1 · vocab 167 tokens
training
AdamW (β 0.9/0.95, wd 0.1) · lr 0.0006 constant (no warmup, no decay) · batch 32 · 350 iterations · fresh init per replicate (seeds derived from base seed) · 25 seeds (base 1000)
training data
PCFG, zipfian noun–verb pairing (oneshot where noted) · 12,000 sentences per dataset (9,600 train — 1 epoch = 300 iters) · unseen holdout 10
code
commit d0568094b686

data regime (all arms): fresh-dataset-per-stage — 14 dataset(s) × 25 iters each = 0.02 epochs per dataset

Replicate this experiment

Get the code at this exact version:

git clone https://github.com/ClaireHobbs/imagining-syntax
cd imagining-syntax
git checkout d0568094b686
pip install -e ".[dev]"

Download the config (experiment.yaml) and run:

imsyn exp run experiment.yaml

Checks

PASS children_complete PASS replicate_coverage PASS schedule_total_matches_final_waypoint PASS instrument_consistent PASS objective_computable

Results — objective: P(unseen_mismatch ≥ 95.5 by t = 350, dwell 2, smoothing 1)

armŝwilson95median crossing [CI]crossed
r9_c30.880[0.700, 0.958]222.8 [221.2, 257.8]22/25
r9_c10.800[0.609, 0.911]235.5 [220.8, 293.8]20/25
r9_c40.800[0.609, 0.911]258.4 [219.8, 298.0]20/25
r9_c70.760[0.566, 0.885]221.5 [213.5, 272.5]19/25
r9_c60.720[0.524, 0.857]222.6 [218.5, 243.4]18/25
r9_c00.480[0.300, 0.665]214.4 [196.3, 309.1]12/25
r9_c20.120[0.042, 0.300]194.0 [192.4, 194.8]3/25
r9_c50.000[0.000, 0.133]0/25

Trajectory summary — unseen_mismatch

Evaluation data: seen_* probed at reference α = 1.4 · unseen_* = held-out pairings, uniform (α-independent) · 1000 pairs per condition
armend of training (t = 350)per-seedflags
r9_c0 74.5 ±22.6 ⚠ seed_split: range 32.1-100.0 (1 low / 11 high of 25)
r9_c1 99.2 ±1.8
r9_c2 44.1 ±29.3 ⚠ seed_split: range 2.0-100.0 (5 low / 2 high of 25)
r9_c3 99.9 ±0.4
r9_c4 98.2 ±6.3
r9_c5 95.2 ±2.2
r9_c6 99.6 ±0.9
r9_c7 98.5 ±2.8

Conclusions

The final round does not improve on round 8, so the search ends at its pre-registered four-round cap with the stop rule also newly quiet. The best candidate here, r9_c3 (ramp α 2.72 to 1.91 with late curvature γ 3.99, amplitude A = 0.75), crossed on 0.88 of the pool seeds, just under the round-8 pair at 0.92; the round's failures repeat the established pattern, a high-flat ramp (r9_c5, 4.98 to 4.40, crossed on no seeds) and an early full descent (r9_c2, 4.87 to 0.01 with early curvature, 0.12).

Result: The search closes at 0.92 with a toothed late-diving descent \@{schedopt-bo-r9-search-close}

Over four rounds and 32 modulated candidates the best observed value rose from 0.84 to 0.92 and the winner is r8_c3 (ramp 3.42 to 0.16, γ 3.65, A = 0.69), chosen over the tied r8_c0 (2.61 to 0.10, γ 3.07, A = 0.43) by earlier median crossing, 224.0 against 227.4 steps. The selection-stability bootstrap puts 0.34 and 0.30 of the winner share on those two arms; every arm at or above 0.84 carries amplitude A of at least 0.39, and the near-smooth probe of round 6 (A = 0.02) read 0.24. The best smooth schedule sits at 0.52 on the same pool.

The pre-registered gate to confirmation passes, since the search-pool gap over the best smooth schedule far exceeds 0.05, but that comparison is exactly the one the pre-registration rules out as a result: more flexibility plus selection over a larger space wins on the pool essentially always. Whether the tooth amplitude survives held-out evaluation, with the pre-registered bar of 0.10 and a predicted winner's-curse drop of 0.08 to 0.15, is decided by the fresh-seed confirmation. These are search-phase values on the v2 objective, not reportable results.

Comparison figures

curriculum_comparison.png
curriculum_comparison.png
objective_crossing_ecdf.png
objective_crossing_ecdf.png
objective_shat.png
objective_shat.png
objective_survival.png
objective_survival.png
schedules.png
schedules.png

Children

Child peak unseen_mismatchStatus
r9_c0 84.7 done
r9_c1 99.2 done
r9_c2 79.0 done
r9_c3 99.9 done
r9_c4 98.2 done
r9_c5 95.2 done
r9_c6 99.6 done
r9_c7 98.5 done

experiment.yaml