summaryrefslogtreecommitdiff
path: root/experiments/analyze_oral_a_failure.py
diff options
context:
space:
mode:
Diffstat (limited to 'experiments/analyze_oral_a_failure.py')
-rw-r--r--experiments/analyze_oral_a_failure.py30
1 files changed, 28 insertions, 2 deletions
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
@@ -26,6 +26,9 @@ def main():
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)