A' on the paper's own protocol (published roots, server): APS 2438, CHA 2005 (4443) vs Chandrupatla 2787/2441 (5228); per problem 103/20/30 and 29/4/7; earned-budget variant 3608/2807; guarantee held under every safeguard. Leave-one-out ablation of A' on all six corpora: regime +5336, point +3115, sub +959, close +473, half +376, exp +338, G2 +89 (2/6 corpora), contra +28 (3/6) - every component positive in sum, G2 and contra marginal.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
"""Leave-one-out ablation of A' on all six corpora (APS, CHA, new corpus 1, Roots.jl, applied
|
||||
+ GSL, fourth corpus), uniform success criterion (a sign change within 1e-6), for the paper's
|
||||
label-honesty table. Descriptive: every corpus has been seen by now.
|
||||
|
||||
python -u sweep_ablation_all.py run -> sweep_ablation_all.json, then the table
|
||||
python -u sweep_ablation_all.py --report
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import sys
|
||||
from multiprocessing import Pool
|
||||
|
||||
from sweep_fourth import corpus, evaluate as _eval_one
|
||||
import sweep_fourth
|
||||
from sweep_full import APRIME_ABLATIONS
|
||||
|
||||
SETS = ("APS", "CHA", "NEW", "RJL", "APP", "D")
|
||||
|
||||
|
||||
def spec(pre, ext):
|
||||
return ("pure", "ratio", "derived3", "project", "x", pre, "recent", "distance", "none", ext)
|
||||
|
||||
|
||||
for _name, (_pre, _ext) in APRIME_ABLATIONS.items():
|
||||
sweep_fourth.CONFIGS[f"abl{_name}"] = spec(_pre, _ext)
|
||||
|
||||
|
||||
def evaluate(job):
|
||||
name, which = job
|
||||
return name, which, _eval_one((name, which))[1]
|
||||
|
||||
|
||||
def cost(v):
|
||||
return v[0] if v[1] else 200
|
||||
|
||||
|
||||
def main():
|
||||
names = [f"abl{n}" for n in APRIME_ABLATIONS]
|
||||
if "--report" not in sys.argv:
|
||||
jobs = [(n, w) for n in names for w in ("seen", "fourth")]
|
||||
with Pool(min(12, len(jobs))) as pool:
|
||||
out = pool.map(evaluate, jobs)
|
||||
R = {}
|
||||
for n, w, res in out:
|
||||
R.setdefault(n, {}).update(res)
|
||||
with open("sweep_ablation_all.json", "w", encoding="utf8") as fh:
|
||||
json.dump(R, fh)
|
||||
with open("sweep_ablation_all.json", encoding="utf8") as fh:
|
||||
R = json.load(fh)
|
||||
tot = {n: {s: sum(cost(v) for v in R[n][s].values()) for s in SETS} for n in R}
|
||||
base = tot["ablA'"]
|
||||
print("A' totals: " + " ".join(f"{s} {base[s]}" for s in SETS))
|
||||
print("delta = (without) - (with); + = the component earns its place")
|
||||
for n in names[1:]:
|
||||
d = {s: tot[n][s] - base[s] for s in SETS}
|
||||
earned = [s for s in SETS if d[s] > 0]
|
||||
print(f" {n[3:]:<8} " + " ".join(f"{s} {d[s]:+5d}" for s in SETS)
|
||||
+ f" sum {sum(d.values()):+6d} earned on {len(earned)}/6")
|
||||
print("ablation done")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user