From da109afa23146988188c3af910c6a6205f0c63d9 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Wed, 22 Jul 2026 12:46:08 -0500 Subject: analysis: localize early-layer feedback bottlenecks --- experiments/analyze_oral_a_failure.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'experiments/analyze_oral_a_failure.py') diff --git a/experiments/analyze_oral_a_failure.py b/experiments/analyze_oral_a_failure.py index bf68d12..ce2e2b0 100644 --- a/experiments/analyze_oral_a_failure.py +++ b/experiments/analyze_oral_a_failure.py @@ -25,6 +25,9 @@ def main(): "--gate", default="results/oral_a_full_gate.json") parser.add_argument( "--v2_gate", default="results/oral_a_v2_calibration_gate.json") + parser.add_argument( + "--representation", + default="results/oral_a_representation_diagnosis.json") parser.add_argument( "--out", default="results/oral_a_failure_diagnosis.json") args = parser.parse_args() @@ -33,6 +36,7 @@ def main(): short = load(args.short) gate = load(args.gate) v2_gate = load(args.v2_gate) + representation = load(args.representation) expected = { "mode": "sdil", "depth": 20, "epochs": 200, "vectorizer_mode": "channel_gated", "a_scale": 1.0, @@ -48,6 +52,8 @@ def main(): if (v2_gate["status"] != "failed" or v2_gate["confirmation_test_seeds_touched"]): raise ValueError("expected a failed v2 gate with untouched confirmation") + if representation["probe"]["test_examples_touched"] != 0: + raise ValueError("representation diagnosis touched test examples") calibration_rows = [] first_nonfinite_epoch = None @@ -94,7 +100,7 @@ def main(): "protocol": "oral_a_A3_failure_diagnosis_v2", "source_paths": { "full": args.full, "short": args.short, "gate": args.gate, - "v2_gate": args.v2_gate, + "v2_gate": args.v2_gate, "representation": args.representation, }, "source_commits": { "full": full["provenance"]["git_commit"], @@ -135,13 +141,29 @@ def main(): structured["metrics"]["all_layer_alignment"]), "structured_gate_status": v2_gate["status"], }, + "post_failure_representation_refinement": { + "trained_structured_early_third_alignment": ( + structured["metrics"]["early_third_alignment"]), + "channel_gated_cv_oracle_early_third_alignment": ( + representation["cosine"]["channel_gated_cv"] + ["early_third_mean"]), + "per_example_spatial_oracle_early_third_alignment": ( + representation["cosine"]["per_example_spatial_oracle"] + ["early_third_mean"]), + "naive_local_context_cv_early_third_alignment": ( + representation["cosine"]["local_context_cv"] + ["early_third_mean"]), + }, "diagnosis": { - "classification": "unit_target_regression_snr_inadequate_before_runaway", + "classification": ( + "early_credit_limited_by_estimator_efficiency_and_feedback_capacity"), "evidence": [ "instantaneous prediction-target cosine remains effectively zero", "calibration MSE remains indistinguishable from stochastic target power", "target power grows by orders of magnitude before nonfiniteness", "matched frozen-forward unit targets later yield only 0.0011 early-layer alignment", + "structured learning reaches 0.0072 versus a 0.0240 cross-validated family oracle", + "unconstrained coefficients raise the same spatial basis oracle only to 0.0549", ], "interpretation_limit": ( "instantaneous target metrics alone do not prove zero conditional " @@ -150,6 +172,10 @@ def main(): "next_test_outcome": ( "representable-subspace perturbation improved exact alignment but " "failed the frozen early-layer causal-capture gate"), + "next_design_constraint": ( + "do not add the tested naive local-average/channel-mean bases; " + "improve causal sample efficiency and use a more informative " + "hierarchical or high-level contextual feedback signal"), }, } os.makedirs(os.path.dirname(os.path.abspath(args.out)), exist_ok=True) -- cgit v1.2.3