diff options
Diffstat (limited to 'experiments')
| -rw-r--r-- | experiments/analyze_oral_a_failure.py | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/experiments/analyze_oral_a_failure.py b/experiments/analyze_oral_a_failure.py index ce2e2b0..03549b8 100644 --- a/experiments/analyze_oral_a_failure.py +++ b/experiments/analyze_oral_a_failure.py @@ -29,6 +29,8 @@ def main(): "--representation", default="results/oral_a_representation_diagnosis.json") parser.add_argument( + "--v3_gate", default="results/oral_a_v3_calibration_gate.json") + parser.add_argument( "--out", default="results/oral_a_failure_diagnosis.json") args = parser.parse_args() @@ -37,6 +39,7 @@ def main(): gate = load(args.gate) v2_gate = load(args.v2_gate) representation = load(args.representation) + v3_gate = load(args.v3_gate) expected = { "mode": "sdil", "depth": 20, "epochs": 200, "vectorizer_mode": "channel_gated", "a_scale": 1.0, @@ -54,6 +57,9 @@ def main(): raise ValueError("expected a failed v2 gate with untouched confirmation") if representation["probe"]["test_examples_touched"] != 0: raise ValueError("representation diagnosis touched test examples") + if (v3_gate["status"] != "failed" + or v3_gate["confirmation_test_seeds_touched"]): + raise ValueError("expected a failed v3 gate with untouched confirmation") calibration_rows = [] first_nonfinite_epoch = None @@ -97,10 +103,11 @@ def main(): unit = v2_gate["selected"]["unit_targets"] structured = v2_gate["selected"]["channel_subspace"] output = { - "protocol": "oral_a_A3_failure_diagnosis_v2", + "protocol": "oral_a_A3_failure_diagnosis_v3", "source_paths": { "full": args.full, "short": args.short, "gate": args.gate, "v2_gate": args.v2_gate, "representation": args.representation, + "v3_gate": args.v3_gate, }, "source_commits": { "full": full["provenance"]["git_commit"], @@ -154,6 +161,19 @@ def main(): representation["cosine"]["local_context_cv"] ["early_third_mean"]), }, + "post_failure_v3_refinement": { + "vectorizer_subspace_early_third_alignment": ( + v3_gate["selected_v3"]["metrics"]["early_third_alignment"]), + "vectorizer_subspace_all_layer_alignment": ( + v3_gate["selected_v3"]["metrics"]["all_layer_alignment"]), + "matched_v2_early_third_alignment": ( + v3_gate["matched_v2_reference"]["metrics"] + ["early_third_alignment"]), + "matched_v2_all_layer_alignment": ( + v3_gate["matched_v2_reference"]["metrics"] + ["all_layer_alignment"]), + "vectorizer_subspace_gate_status": v3_gate["status"], + }, "diagnosis": { "classification": ( "early_credit_limited_by_estimator_efficiency_and_feedback_capacity"), @@ -164,18 +184,21 @@ def main(): "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", + "direct A/G estimation leaves early alignment unchanged at 0.0071", ], "interpretation_limit": ( "instantaneous target metrics alone do not prove zero conditional " "learning; structured v2 has low instantaneous cosine yet positive " "exact-gradient alignment"), "next_test_outcome": ( - "representable-subspace perturbation improved exact alignment but " - "failed the frozen early-layer causal-capture gate"), + "representable-subspace perturbation improved alignment but failed; " + "direct vectorizer-space estimation then improved only middle/late " + "layers and also failed the frozen early-layer 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"), + "do not repeat the closed A/G rate grid; use a more informative " + "hierarchical or high-level contextual feedback signal and " + "audit remaining cross-layer noise"), }, } os.makedirs(os.path.dirname(os.path.abspath(args.out)), exist_ok=True) |
