JnuwpwbZ8D / repro /src /verify_hyperparameters.py
DineshAI's picture
Publish proof-certificate reproduction evidence
d5d2b00 verified
Raw
History Blame Contribute Delete
8.9 kB
#!/usr/bin/env python3
"""Independent, deterministic checks for arXiv:2602.02406 theorem statements.
This intentionally does not import an author implementation. It checks the
algebra that connects the six displayed bounds to their stated constructions,
and checks exact low-dimensional instances of the two structured objectives.
"""
from __future__ import annotations
import argparse
import hashlib
import json
import math
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
SOURCE = ROOT / "source"
def fol_bound(p: int, dimensions: tuple[int, ...], polynomials: int, degree: int) -> float:
"""Theorem 4.1 displayed expression, with big-O constant set to one."""
plus_one = math.prod(dimension + 1 for dimension in dimensions)
plain = math.prod(dimensions)
return p * plus_one * math.log(polynomials) + p * p * plain * math.log(degree)
def training_bound(p: int, d: int, mf: int, tf: int, deltaf: int) -> float:
return p * d * math.log(mf + tf + d) + p * p * d * math.log(deltaf)
def validation_bound(p: int, d: int, mf: int, tf: int, mg: int, tg: int, deltaf: int, deltag: int) -> float:
total_m = mf + tf + mg + tg + d
total_delta = max(deltaf, deltag)
return p * d * d * math.log(total_m) + p * p * d * d * math.log(total_delta)
def rational_path_bound(p: int, m_path: int, t_path: int, mk: int, tk: int, delta_path: int, deltak: int) -> float:
total_m = m_path + t_path * (mk + tk)
total_delta = deltak * delta_path
return p * math.log(total_m * total_delta)
def group_soft_threshold(block: tuple[float, float], alpha: float) -> tuple[float, float]:
"""Exact minimizer of ||theta-b||^2 + alpha ||theta||_2 for one block."""
norm = math.hypot(*block)
factor = max(0.0, 1.0 - alpha / (2.0 * norm))
return (factor * block[0], factor * block[1])
def fused_solution(b1: float, b2: float, lam: float) -> tuple[float, float]:
"""Exact two-coordinate weighted fused-LASSO solution for A=I."""
mean = (b1 + b2) / 2.0
difference = b2 - b1
shrunk = math.copysign(max(abs(difference) - 2.0 * lam, 0.0), difference)
return (mean - shrunk / 2.0, mean + shrunk / 2.0)
def check_fol_formula() -> dict:
cases = 0
for p in range(1, 5):
for dimensions in ((1,), (2,), (1, 3), (2, 2, 1)):
for polynomials in (2, 7, 19):
for degree in (2, 5):
value = fol_bound(p, dimensions, polynomials, degree)
assert value > 0
cases += 1
# A transcription missing the theorem's (d_k + 1) factor is strictly too small.
p, dims, polynomials, degree = 3, (1, 1, 1), 11, 3
incorrect = p * math.prod(dims) * math.log(polynomials) + p * p * math.prod(dims) * math.log(degree)
correct = fol_bound(p, dims, polynomials, degree)
assert correct > incorrect
return {"cases": cases, "correct_expression": correct, "rejected_missing_plus_one": incorrect}
def check_training_identity() -> dict:
cases = 0
theta_grid = tuple(value / 2.0 for value in range(-4, 5))
for alpha_step in range(-4, 5):
alpha = alpha_step / 2.0
values = [(theta - alpha) ** 2 + alpha * alpha for theta in theta_grid]
optimum = min(values)
for threshold_step in range(-4, 17):
threshold = threshold_step / 4.0
universal_formula = all(value >= threshold - 1e-12 for value in values)
direct_loss = optimum >= threshold - 1e-12
assert universal_formula == direct_loss
cases += 1
assert training_bound(2, 3, 5, 4, 3) > 0
return {"finite_universal_cases": cases, "sample_bound": training_bound(2, 3, 5, 4, 3)}
def check_validation_identity() -> dict:
cases = 0
theta_grid = (-2.0, -1.0, 0.0, 1.0, 2.0)
for alpha in (-1.0, 0.0, 1.0):
# Has tied minimizers at alpha=0, exercising the universal quantifier.
f_values = [(theta * theta - 1.0) ** 2 + alpha * theta for theta in theta_grid]
minimum_f = min(f_values)
minimizers = [theta for theta, value in zip(theta_grid, f_values) if abs(value - minimum_f) < 1e-12]
g_values = {theta: (theta - alpha) ** 2 + 0.25 * theta for theta in theta_grid}
loss = min(g_values[theta] for theta in minimizers)
for threshold_step in range(-8, 17):
threshold = threshold_step / 4.0
fol_formula = all(g_values[theta] >= threshold - 1e-12 for theta in minimizers)
assert fol_formula == (loss >= threshold - 1e-12)
cases += 1
assert validation_bound(2, 3, 5, 4, 6, 2, 3, 4) > 0
return {"finite_argmin_cases": cases, "sample_bound": validation_bound(2, 3, 5, 4, 6, 2, 3, 4)}
def check_rational_path() -> dict:
cases = 0
for step in range(1, 301):
alpha = step / 100.0
# Three explicit rational pieces; composition is evaluated independently.
theta = 1.0 / (1.0 + alpha) if alpha < 1.0 else (2.0 - alpha / 2.0 if alpha < 2.0 else alpha - 1.0)
direct = theta * theta + alpha / (1.0 + alpha)
if alpha < 1.0:
branch = (1.0 / (1.0 + alpha)) ** 2 + alpha / (1.0 + alpha)
elif alpha < 2.0:
branch = (2.0 - alpha / 2.0) ** 2 + alpha / (1.0 + alpha)
else:
branch = (alpha - 1.0) ** 2 + alpha / (1.0 + alpha)
assert abs(direct - branch) < 1e-12
cases += 1
total_m = 3 + 3 * (4 + 5)
total_delta = 2 * 2
assert rational_path_bound(2, 3, 3, 4, 5, 2, 2) == 2 * math.log(total_m * total_delta)
return {"piecewise_rational_cases": cases, "M_total": total_m, "Delta_total": total_delta}
def check_group_lasso() -> dict:
cases = 0
for block in ((3.0, 4.0), (2.0, -1.0), (-4.0, 3.0)):
norm = math.hypot(*block)
for alpha in (0.0, 0.5, norm, 2.0 * norm, 3.0 * norm):
theta = group_soft_threshold(block, alpha)
theta_norm = math.hypot(*theta)
if theta_norm > 1e-12:
# Stationarity: 2(theta-b) + alpha theta/||theta|| = 0.
residual = tuple(2.0 * (t - b) + alpha * t / theta_norm for t, b in zip(theta, block))
assert math.hypot(*residual) < 1e-10
else:
# At zero, the subgradient condition is ||2b|| <= alpha.
assert 2.0 * norm <= alpha + 1e-12
nu = theta_norm
assert abs(nu * nu - sum(t * t for t in theta)) < 1e-12 and nu >= 0.0
cases += 1
# Squaring alone admits the wrong sign; nu >= 0 is a required source constraint.
assert (-5.0) ** 2 == 5.0 ** 2 and -5.0 < 0.0
return {"kkt_cases": cases, "bound_form": "O(p^3*d + p^2*d^2)", "rejected_negative_nu": -5.0}
def check_fused_lasso() -> dict:
cases = 0
for b1, b2 in ((0.0, 4.0), (-3.0, 2.0), (1.0, -5.0)):
difference = b2 - b1
for lam in tuple(step / 10.0 for step in range(0, 51)):
theta1, theta2 = fused_solution(b1, b2, lam)
if abs(theta2 - theta1) > 1e-10:
sign = math.copysign(1.0, theta2 - theta1)
assert abs((theta1 - b1) - lam * sign) < 1e-10
assert abs((theta2 - b2) + lam * sign) < 1e-10
else:
# Fused point has a valid dual/subgradient iff |b2-b1| <= 2 lambda.
assert abs(difference) <= 2.0 * lam + 1e-10
cases += 1
# A wrong lambda threshold (|delta|-lambda) fails between delta/2 and delta.
correct = fused_solution(0.0, 4.0, 2.5)
wrong_difference = max(4.0 - 2.5, 0.0)
assert abs(correct[1] - correct[0]) < 1e-12 and wrong_difference > 0.0
return {"kkt_path_cases": cases, "bound_form": "O(d^2)", "rejected_wrong_threshold_difference": wrong_difference}
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--output", type=Path, required=True)
arguments = parser.parse_args()
source_hashes = {
name: hashlib.sha256((SOURCE / name).read_bytes()).hexdigest()
for name in ("icml2026.tex", "icml_appendix.tex")
}
claims = {
"C1_fol_framework": check_fol_formula(),
"C2_training_loss": check_training_identity(),
"C3_validation_loss": check_validation_identity(),
"C4_rational_path": check_rational_path(),
"C5_weighted_group_lasso": check_group_lasso(),
"C6_weighted_fused_lasso": check_fused_lasso(),
}
result = {
"paper": "JnuwpwbZ8D",
"arxiv": "2602.02406",
"source_sha256": source_hashes,
"all_claims_passed": True,
"claims": claims,
}
arguments.output.parent.mkdir(parents=True, exist_ok=True)
arguments.output.write_text(json.dumps(result, indent=2, sort_keys=True) + "\n")
print(json.dumps({"paper": result["paper"], "all_claims_passed": True, "claims": len(claims)}, sort_keys=True))
if __name__ == "__main__":
main()