Chapter 2 · demo series

The Externalization Ladder

Why doesn't continuous-time attention read off period — and should we just feed the model a power spectrum?

A model reads a source's period only to the extent that the period search is done for it. The rungs below pour ever more time information into the model — none, then full continuous time, then an explicit cadence channel — and within-class period reading (ρ_within) barely moves. It only jumps when the search is performed explicitly, by Lomb–Scargle. And that top rung is exactly what "feed it a power spectrum" means, done right: a fine periodogram plus an argmax peak-pick.

ρ_within = within-class Spearman of predicted vs. true log-period — per-source reading with the class-template effect removed. Bars show 95% bootstrap CIs over splits; the dashed line is the Lomb–Scargle ceiling. All numbers from the period-diagnostic study (25,565 ZTF variables).

Why time-in-the-input barely helps

The objective doesn't reward it

Contrastive InfoNCE teaches shape and class invariants. Nothing in the loss has a gradient toward "encode the exact period," so the model learns the cheap invariant — what kind of star — and stops.

There's no search mechanism

Reading a period is a search: fold at a trial period, measure dispersion, optimize over trials. Lomb–Scargle and PDM are explicit search algorithms; a fixed-depth feedforward encoder can't run that inner loop. The dispersion landscape is flat with razor-thin spikes, so gradients and smooth attention slide right past the period.

Confirmed empirically

Continuous time as input doesn't move the needle: a pretrained foundation model on flux alone reaches ρ_within ≈ 0.21; our continuous-time transformer on full (t,f,σ) ≈ 0.24; a BiGRU with an explicit Δt channel ≈ 0.26; even handing MOMENT a Δt channel only lifts it to 0.26–0.30. PatchTST on (t,f,σ) ≈ 0.00.

So, the power spectrum? We tested it. Feeding a network the (log-pooled) Lomb–Scargle power spectrum reaches ρwithin = 0.27 (MLP) — no better than the raw light curve, far below 0.78. The spectrum carries the class (R² = 0.63) but a generic readout can't resolve the aliases to read the per-source period. Lomb–Scargle already is the "feed-it-a-power-spectrum" model done right: fine periodogram + explicit peak-pick (argmax) = 0.78. The hard part isn't computing the spectrum — it's the argmax. So "add a power spectrum and eat the cost" collapses into "reimplement Lomb–Scargle." The productive direction is to put the search itself inside the model, or use an objective that's unsolvable without the period.

See also

Period-search landscape ↗

The flat-with-spikes dispersion landscape that defeats gradient descent — why period reading is a search.

Period-aliasing explorer ↗

Why one star has many "periods": the P/2 harmonic and its diurnal aliases.