Skip to content

Audit which searches need prior-support handling (coverage after Prodigy) #1481

Description

@Jammy2211

Coverage follow-up to the prior-support work. Everything measured so far came from
one search (MultiStartProdigy) on one cell (imaging/mge hst) —
autolens_profiling#131, write-up results/notes/clipper_campaign/RESULTS.md. This
asks which other searches share the failure mode.

Prompt: PyAutoMind/draft/feature/autofit/prior_exit_sampler_coverage.md

Run this after the Prodigy step-scaling task
(PyAutoMind/draft/feature/autofit/per_parameter_step_scaling.md), so the audit can
measure both levers rather than only the clipper.

The mechanism

The MAP objective is -2 * (log_likelihood + sum(log_prior)); a UniformPrior is
-inf outside its box. The gradient searches step in physical space with
nothing holding them inside, and prior box widths on a real model span 40x
(einstein_radius U(0,8) against bulge.centre U(-0.1,0.1)), so a globally-scaled
step is a wall-crossing for the narrow-box parameters. Lanes do not start near the
edges — _broad_starts draws in the unit cube at [0.15, 0.85] — they walk there.

Already immune, per the phase-1 record (verify, don't re-derive)

  • Nested samplers (Nautilus, Dynesty) work in unit-cube coordinates and
    cannot leave prior support. This is why Nautilus is the campaign's reference bar.
  • MCMC (Emcee, Zeus) reject -inf proposals so the walker stays put.
    "Rejection is the restoring mechanism that gradient methods lack."
  • NUTS diverges rather than dying — different mechanism, its own task.

So the exposed family is the gradient / MLE searches.

To audit

search expected exposure why
MultiStartAdam high fixed learning_rate=0.01 in PHYSICAL units, no adaptation
MultiStartLion high fixed learning_rate=0.001, sign-based
MultiStartADABelief high fixed rate, same exposure
MultiStartProdigy measured baseline in #131
LBFGS / AbstractBFGS different shape takes clipper, hands bounds to scipy — check enforcement actually happens
BlackJAXNUTS out of scope divergence, not lane death — confirm and file separately

Load-bearing hypothesis: the fixed-rate optimizers should be affected MORE than
Prodigy, not less.
Prodigy at least estimates its own step scale; Adam, Lion and
ADABelief take a literal constant in physical units, so the 40x disparity cannot be
absorbed anywhere. If that holds, the Prodigy numbers are the optimistic end of
the range and #131's "clipping is cosmetic" verdict may not transfer.

Deliverables

  1. Coverage table per search — is prior exit reachable, already mitigated, by what
    mechanism, and is that mechanism enforced or merely assumed.
  2. A cheap empirical check per exposed search on imaging/mge hst with
    ClipperPriorBox on, recording clip rate and the alive-versus-step curve
    (the clip rate is the quantity comparable across searches; raw lane counters are
    survival integrals and are not).
  3. A per-search recommendation on both levers — clipper default and step scaling
    — feeding phase 3.

Grading rules (inherited, all paid for)

  • Grade on the alive-versus-step curve, not the percentage — the lane counters
    are survival integrals.
  • At least two seeds. Identical settings swung the Prodigy result 171,000
    nats
    between seeds 0 and 1. Use the search's seed argument; seeding
    random/numpy reaches only the initializer.
  • A ClipperPriorBox arm reporting zero clips has not exercised the clipper — a
    broken arm, not a null result (unless the model is genuinely unbounded, where zero
    is the PASS).
  • Name the step budget with every number: at 105 steps clipping was worth 114 nats
    on Prodigy; by 3000 it was worth zero.

Out of scope: flipping any default (phase 3), NUTS divergence, and the
seed-dependence investigation — all filed separately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions