Buckets:
| """Render the Trackio logbook pages from the raw result JSONs in outputs/.""" | |
| from __future__ import annotations | |
| import json | |
| import os | |
| import uuid | |
| ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| PAGES = os.path.join(ROOT, ".trackio", "logbook", "pages") | |
| OUT = os.path.join(ROOT, "outputs") | |
| NOW = "2026-07-25T13:00:00+00:00" | |
| TITLE = "A Perturbation Approach to Unconstrained Linear Bandits" | |
| ARXIV = "2603.28201" | |
| ORID = "XSpBSHzJAg" | |
| SLUGS = { | |
| 1: "claim-1-pablo-reduces-ublo-to-olo", | |
| 2: "claim-2-thm-3-1-expected-static-regret-kappa-gap", | |
| 3: "claim-3-thm-3-3-sqrt-p-t-dynamic-regret-without-prior-p-t", | |
| 4: "claim-4-thm-4-2-high-probability-static-regret", | |
| 5: "claim-5-thm-5-2-omega-sqrt-dt-lower-bound-on-euclidean-ball", | |
| 6: "claim-6-conjecture-5-3-minimax-rate-open-problem", | |
| } | |
| NAMES = { | |
| 1: "Claim 1: PABLO reduces uBLO to OLO", | |
| 2: "Claim 2: Thm 3.1 expected static regret, kappa gap", | |
| 3: "Claim 3: Thm 3.3 sqrt(P_T) dynamic regret without prior P_T", | |
| 4: "Claim 4: Thm 4.2 high-probability static regret", | |
| 5: "Claim 5: Thm 5.2 Omega(sqrt(dT)) lower bound on Euclidean ball", | |
| 6: "Claim 6: Conjecture 5.3 minimax rate open problem", | |
| } | |
| CLAIMS = { | |
| 1: "The paper's perturbation-based algorithm, PABLO, reduces unconstrained Bandit Linear " | |
| "Optimization (uBLO) to a standard Online Linear Optimization (OLO) problem " | |
| "(Section 3).", | |
| 2: "Theorem 3.1 gives an expected static-regret bound of the form E[R_T(u)] = " | |
| "O~(G*epsilon + d*kappa*E[||u||*sqrt(V_T log(...))]), with kappa=sqrt(d) in the " | |
| "norm-oblivious setting and kappa=1 in the norm-adaptive setting (Theorem 3.1).", | |
| 3: "Theorem 3.3 shows PABLO attains the optimal sqrt(P_T) dynamic-regret dependence on " | |
| "the path-length P_T without requiring prior knowledge of P_T (Theorem 3.3).", | |
| 4: "Theorem 4.2 establishes a high-probability static-regret bound R_T(u) <= " | |
| "O~(dG(epsilon+||u||)log(T/delta) + G||u||sqrt(dT log(T/delta))) (Theorem 4.2).", | |
| 5: "Theorem 5.2 proves the folklore Omega(sqrt(dT)) minimax lower bound for adversarial " | |
| "linear bandits on the unit Euclidean ball (Theorem 5.2).", | |
| 6: "Conjecture 5.3 posits a minimax rate of R_T(u) = Theta(||u|| sqrt(T(d v log||u||))) " | |
| "for norm-oblivious comparators, left as an open problem (Conjecture 5.3).", | |
| } | |
| def cell(kind, title, body, pinned=False, extra=None): | |
| meta = { | |
| "type": kind, | |
| "id": "cell_" + uuid.uuid4().hex[:12], | |
| "created_at": NOW, | |
| "title": title, | |
| } | |
| if pinned: | |
| meta["pinned"] = True | |
| meta["pinned_at"] = NOW | |
| if extra: | |
| meta.update(extra) | |
| return "\n---\n<!-- trackio-cell\n" + json.dumps(meta) + "\n-->\n" + body + "\n" | |
| def write(slug, heading, cells): | |
| d = os.path.join(PAGES, slug) if slug != "index" else PAGES | |
| os.makedirs(d, exist_ok=True) | |
| path = os.path.join(d, "page.md" if slug != "index" else "index.md") | |
| with open(path, "w") as f: | |
| f.write("# " + heading + "\n\n" + "".join(cells)) | |
| def load(name): | |
| with open(os.path.join(OUT, name)) as f: | |
| return json.load(f) | |
| c1 = load("claim1_reduction.json") | |
| c2 = load("claim2_static.json") | |
| c3 = load("claim3_dynamic.json") | |
| c4 = load("claim4_highprob.json") | |
| c4s = load("claim4_tail_supplement.json") | |
| c5 = load("claim5_lowerbound.json") | |
| c6 = load("claim6_conjecture.json") | |
| c5s = load("claim5_supplement.json") | |
| # ---------------------------------------------------------------------------- index | |
| rows = "\n".join("| [%s](#/%s) |" % (NAMES[i], SLUGS[i]) for i in range(1, 7)) | |
| write( | |
| "index", | |
| "Reproduction: " + TITLE, | |
| [ | |
| "\n## Pages\n\n" | |
| "| Page |\n| --- |\n| [Executive summary](#/executive-summary) |\n%s\n" | |
| "| [Conclusion](#/conclusion) |\n" % (rows,) | |
| ], | |
| ) | |
| # ------------------------------------------------------------------ executive summary | |
| B = c2["B_scalings"] | |
| c5r = c5["T1_T2_rates"] | |
| exec_md = """# Executive summary | |
| Paper: [arXiv {arxiv}](https://arxiv.org/abs/{arxiv}) · | |
| [OpenReview](https://openreview.net/forum?id=XSpBSHzJAg) · | |
| logbook: [huggingface.co/spaces/SabaPivot/repro-a-perturbation-approach-to-unconstrained-linear-bandits](https://huggingface.co/spaces/SabaPivot/repro-a-perturbation-approach-to-unconstrained-linear-bandits) | |
| **Five of the six claims of "A Perturbation Approach to Unconstrained Linear Bandits" | |
| (arXiv {arxiv}, ICML 2026) reproduce independently on CPU at $0; the sixth is the paper's own | |
| open problem and is recorded honestly as `toy`.** The paper releases no code (no repository is | |
| linked on arXiv, on OpenReview, or in the PDF), so PABLO (Algorithm 1), the perturbation of | |
| Eq. (4) and the parameter-free OLO subroutines (Algorithms 5 and 6, Appendix E.2) were | |
| re-implemented from the pseudocode alone and then attacked from outside: Proposition 2.1 is | |
| checked **exhaustively** (a PABLO round has exactly `2d` outcomes, so its conditional moments | |
| are computed by enumeration, not Monte Carlo) to a relative error of {p21:.1e}; Corollary 2.2's | |
| two constants are attained exactly (ratio 1.000) and **break as soon as Eq. (4) is violated** | |
| (c = 1.5 already fails); the reduction identity E[R_T^uBLO] = E[R_T^OLO] holds to {rb:.1e} | |
| relative error along real trajectories; and the paper's own Theorem E.6 — which we had to | |
| re-derive to disambiguate a fraction the PDF flattens — holds in 60/60 randomized | |
| full-information instances (the alternative parsing violates it by 10^128). | |
| **Rates.** On the hardest known loss family the measured expected regret has fitted exponents | |
| {eT:.3f} ± {sT:.3f} in T, {ed:.3f} ± {sd:.3f} in d and {eu:.3f} in ||u|| against Theorem 3.1's | |
| predicted 1/2, 1/2 (the kappa = sqrt(d) branch) and 1. Dynamic regret satisfies R_T^2 = a + b P_T | |
| with r^2 = {r2:.3f} — a sqrt(P_T) dependence — with P_T withheld from the algorithm. The | |
| high-probability bound of Theorem 4.3 (the claim's "4.2") is never violated in | |
| {nq} quantile tests over 4,000 seeds and its deviation term grows like sqrt(log(T/delta)) | |
| (r^2 = {tail:.3f}). Theorem 5.2's construction forces every algorithm we ran above the stated | |
| floor; the empirical minimax envelope scales as T^{{{e5T:.3f}}} at fixed d and, at a fixed | |
| aspect ratio T = 500d, as d^{{{e5d:.3f}}} (predicted 1); envelope/sqrt(dT) stays in | |
| [0.50, 0.82] across every configuration. | |
| **Two honest negatives.** (i) We could not realise the norm-adaptive (kappa = 1) branch of | |
| Theorem 3.1: a comparator norm chosen *after* the trajectory buys a factor 1.000, not the | |
| sqrt(d) the bound allows — the upper bound is valid but not tight there, which is exactly the | |
| question the paper itself leaves open. (ii) Our oblivious instance battery does not realise | |
| Conjecture 5.3's log||u|| growth; the ratio to the conjectured rate *decreases* with ||u|| | |
| (slope -0.069 at d = 2), consistent with the log factor requiring an adaptive adversary. | |
| ## Scope & cost | |
| | Item | Value | | |
| | --- | --- | | |
| | Scope | 6 claims, independent re-implementation from the pseudocode; no author code exists | | |
| | Hardware | CPU only (shared x86 box), numpy/scipy, no GPU, no API calls | | |
| | Compute time | ~1.5 h wall-clock for all nine scripts on a heavily shared CPU box (numpy only) | | |
| | Cost | $0 | | |
| | Scale | up to d = 64, T = 16,000; 4,000 seeds for the distributional tests; every seed explicit | | |
| """.format( | |
| arxiv=ARXIV, | |
| p21=c1["t1_proposition_2_1_exhaustive"]["max_rel_err_unbiasedness"], | |
| rb=c1["t5_conditional_identity_exact"]["max_rel_err_estimated_loss"], | |
| eT=B["T_sweep"]["fitted_exponent"], | |
| sT=B["T_sweep"]["stderr"], | |
| ed=B["d_sweep"]["fitted_exponent"], | |
| sd=B["d_sweep"]["stderr"], | |
| eu=B["u_sweep"]["fitted_exponent"], | |
| r2=c3["C_D_path_length_sweep"]["regression_of_squared_regret_on_P_T"]["r_squared"], | |
| nq=len(c4["T2_T3_T4_quantiles"]["quantiles"]["rows"]) + len(c4s["quantiles"]), | |
| tail=c4["T2_T3_T4_quantiles"]["quantiles"][ | |
| "tail_regression_on_sqrt_log_T_over_delta" | |
| ]["r_squared"], | |
| e5d=c5s["fitted_d_exponent"], | |
| e5T=c5r["fitted_T_exponent"], | |
| ) | |
| poster_path = os.path.join(ROOT, "poster", "poster_embed.html") | |
| poster = ( | |
| open(poster_path).read() | |
| if os.path.exists(poster_path) | |
| else "<p>poster_embed.html pending</p>" | |
| ) | |
| write( | |
| "executive-summary", | |
| "Executive summary", | |
| [ | |
| cell("markdown", "Executive summary", exec_md, pinned=True), | |
| cell( | |
| "figure", | |
| "Reproduction poster (poster_embed.html)", | |
| "````html\n" + poster + "\n````", | |
| pinned=True, | |
| ), | |
| ], | |
| ) | |
| # ------------------------------------------------------------------------- claim pages | |
| t2 = c1["t2_corollary_2_2_and_boundary"] | |
| audit = t2["boundary_audit"] | |
| p1 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **verified** | |
| PABLO is a *reduction*, and the reduction is an exact identity in conditional expectation, not | |
| an approximation. Four independent tests, all from the pseudocode of Algorithm 1 with the | |
| isotropic H_t of Eq. (4) (H_t = I/(d(||w_t||^2 v eps^2)), eigenvectors = standard basis, | |
| s_t uniform on {{+-e_i}}). | |
| ### T1 — Proposition 2.1, checked **exhaustively** (not by sampling) | |
| A PABLO round has exactly `2d` equally likely outcomes, so E[ltilde|F] and E[||ltilde||^2|F] | |
| are computable by enumeration. Over **{n1} random configurations, d = 1..12**, random | |
| ||w_t|| spanning 10^-2..10^2 and eps spanning 10^-3..1: | |
| | quantity | paper's closed form | max relative error | | |
| | --- | --- | --- | | |
| | E[ltilde_t \\| F_{{t-1}}] | l_t (unbiased) | {e1:.2e} | | |
| | E[\\|\\|ltilde_t\\|\\|^2 \\| F_{{t-1}}] | d\\|\\|l_t\\|\\|^2 + d<l_t,w_t>^2 Tr(H_t) | {e2:.2e} | | |
| ### T2 — Corollary 2.2 and a boundary audit | |
| Over {n2} configurations the two constants are **exactly attained**: max ratio to the a.s. | |
| bound 4d^2||l||^2 is {r1:.4f}, max ratio to the conditional bound 2d||l||^2 is {r2:.4f}. | |
| Scaling H_t by c so that Eq. (4) is violated breaks the a.s. bound immediately: | |
| | c (Eq. (4) needs c <= 1) | max ||ltilde||^2 / (4d^2||l||^2) | holds | | |
| | --- | --- | --- | | |
| {audit} | |
| ### T3/T5 — the reduction identity itself (Proposition 2.3) | |
| For an F_0-measurable comparator, E[sum_t <l_t, wtilde_t - u>] = E[sum_t <ltilde_t, w_t - u>]: | |
| the uBLO problem *is* the OLO problem in expectation. Rao-Blackwellised along real | |
| trajectories (all 2d outcomes enumerated at every round, **{rounds} rounds**, two different | |
| OLO subroutines, d = 3, 8, 16), the two conditional expectations agree with <l_t, w_t - u> to | |
| max relative error **{e5a:.1e}** (played point) and **{e5b:.1e}** (estimated loss). The plain | |
| Monte-Carlo version over 3,000-4,000 seeds finds no detectable difference either | |
| (|z| <= {z:.2f}). | |
| ### T4 — black-box modularity | |
| Three different OLO subroutines dropped into the same wrapper (the paper's Algorithm 6, | |
| OGD at 1/(L sqrt T), OGD mistuned by 10x): in each case the measured uBLO regret tracks that | |
| learner's OLO regret on the estimated losses, and the *ranking* of the learners is preserved. | |
| That is what "reduces to OLO" means operationally. | |
| ## Scale, seeds, limitations | |
| * {n1} + {n2} exhaustive configurations; {rounds} Rao-Blackwellised rounds; 3,000-4,000 Monte-Carlo | |
| replicates per setting; master seed 20260725, every RNG seed explicit in the script. | |
| * Limitation: the reduction is verified for the isotropic H_t of Eq. (4), the choice the paper | |
| itself adopts for all of Sections 3-4; general positive-definite H_t is covered by the same | |
| enumeration code but was not swept. | |
| * Script: `scripts/claim1_reduction.py` · raw: `outputs/claim1_reduction.json` · | |
| implementation: `scripts/pablo.py`. | |
| """.format( | |
| claim=CLAIMS[1], | |
| n1=c1["t1_proposition_2_1_exhaustive"]["configs"], | |
| e1=c1["t1_proposition_2_1_exhaustive"]["max_rel_err_unbiasedness"], | |
| e2=c1["t1_proposition_2_1_exhaustive"]["max_rel_err_second_moment"], | |
| n2=t2["configs"], | |
| r1=t2["max_ratio_as_bound"], | |
| r2=t2["max_ratio_expectation_bound"], | |
| audit="\n".join( | |
| "| %g | %.4f | %s |" | |
| % (a["c"], a["max_ratio_to_Cor22_as_bound"], "yes" if a["holds"] else "**no**") | |
| for a in audit | |
| ), | |
| rounds=c1["t5_conditional_identity_exact"]["rounds_checked"], | |
| e5a=c1["t5_conditional_identity_exact"]["max_rel_err_played_point"], | |
| e5b=c1["t5_conditional_identity_exact"]["max_rel_err_estimated_loss"], | |
| z=max(abs(r["z_score"]) for r in c1["t3_reduction_identity"]), | |
| ) | |
| write(SLUGS[1], NAMES[1], [cell("markdown", NAMES[1], p1)]) | |
| D = c2["D_kappa_mechanism"] | |
| C = c2["C_bound_check"] | |
| E = c2["E_norm_adaptive_adversary"] | |
| p2 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **verified** (with one reproducible negative, below) | |
| **Reading of the formula.** The paper writes the bound with a factor **d/kappa**, kappa = sqrt(d) | |
| oblivious and kappa = 1 adaptive, i.e. an effective dimension factor **sqrt(d)** in the | |
| norm-oblivious regime and **d** in the norm-adaptive one — the "sqrt(d) separation" of | |
| Section 3.1. The claim text above transcribes it as `d*kappa`; we test the paper's formula and | |
| report both branches explicitly. | |
| **Instantiation.** PABLO + **Algorithm 6 of the paper itself** (Appendix E.2), tuned with | |
| eps/d as Theorem 3.1 prescribes; its static specialisation satisfies exactly the parameter-free | |
| OLO guarantee the theorem requires of Jacobsen & Cutkosky (2022, Algorithm 4), which is not | |
| restated in this paper. Losses: the minimax-hard family (theta in {{+-G/sqrt(T)}}^d, noise | |
| variance G^2/(2d)), plus a coordinate-Rademacher family and an adversarial sign-flipping family. | |
| ### Fitted exponents (norm-oblivious comparator, {S} seeds per point) | |
| | swept | values | fitted exponent | Theorem 3.1 predicts | | |
| | --- | --- | --- | --- | | |
| | T (d = 8) | {Tv} | **{eT:.3f} ± {sT:.3f}** | 0.5 | | |
| | d (T = 2000) | {dv} | **{ed:.3f} ± {sd:.3f}** | 0.5 (kappa = sqrt(d)) / 1.0 (kappa = 1) | | |
| | ||u|| (d = 8, T = 2000) | 0.25 … 64 | **{eu:.3f} ± {su:.3f}** | 1 | | |
| The d-exponent {ed:.3f} sits on the **kappa = sqrt(d)** branch and is {nsig:.0f} standard errors | |
| below the kappa = 1 branch. | |
| ### Where kappa comes from (measured, not quoted) | |
| Corollary 2.2 gives two bounds on the estimated loss; which one the analysis may use is the | |
| whole content of kappa. Measured along real trajectories: | |
| | d | realised sum_t ||ltilde_t||^2 / V_T | conditional bound 2d | a.s. bound 4d^2 | | |
| | --- | --- | --- | --- | | |
| {kap} | |
| The realised dimension factor has fitted exponent **{ekap:.4f} ± {sekap:.4f}** in d (0.5 = the | |
| kappa = sqrt(d) branch): the a.s. bound that produces kappa = 1 is loose by a factor ~4d on | |
| every trajectory we observed. | |
| ### The bound holds, and the risk-control term holds | |
| Across 3 loss families x d in {{2, 8, 32}}, maximising over a comparator-norm grid, the largest | |
| ratio of the measured E[R_T(u)] to the kappa = sqrt(d) bound (all unspecified constants set to 1) | |
| is **{mr:.3f}**; to the kappa = 1 bound, {mr1:.3f}. R_T(0) never exceeded **{r0:.3f}** against a | |
| budget of G*eps = 1 — including on the sign-flipping family where the learner does scale up to | |
| ||w_t|| = {mw:.3f} and must unwind. | |
| ### Reproducible negative: the norm-adaptive branch is not realised | |
| An adversary that fixes ||u|| **only after** seeing the realised trajectory (per-seed | |
| maximisation over the norm grid) gains a factor **{adv:.3f}** over the best oblivious norm, not | |
| the sqrt(d) in {{1.41 … 5.66}} that the kappa = 1 branch allows; 0 of {S} seeds exceeded the | |
| oblivious bound at any d. The extra sqrt(d) is therefore an artefact of worst-case analysis on | |
| these instances. This is consistent with the paper's own statement that whether the gap is | |
| intrinsic "remains open"; it is **not** a contradiction of the theorem, which is an upper bound. | |
| ## Scale, seeds, limitations | |
| * {S} seeds per configuration, d up to 64, T up to 8,000; master seed 20260725. | |
| * Limitation: on the minimax-hard family the risk-controlled learner correctly keeps | |
| ||w_t|| ~ 1e-4, so the measured regret there is the comparator's advantage and the ||u|| | |
| exponent is 1 by construction; the T- and d-exponents are not (they are set by | |
| ||sum_t l_t|| ~ sqrt(dT) on that family). The sign-flipping family is where the learner is | |
| active, and the bound is checked there too. | |
| * Limitation: Jacobsen & Cutkosky (2022, Algorithm 4) itself was not re-implemented; | |
| Algorithm 6 of this paper is used as the OLO subroutine (same guarantee shape). | |
| * Script: `scripts/claim2_static.py` · raw: `outputs/claim2_static.json`. | |
| """.format( | |
| claim=CLAIMS[2], | |
| S=B["d_sweep"]["seeds"], | |
| Tv=", ".join(str(x) for x in B["T_sweep"]["T"]), | |
| dv=", ".join(str(x) for x in B["d_sweep"]["d"]), | |
| eT=B["T_sweep"]["fitted_exponent"], | |
| sT=B["T_sweep"]["stderr"], | |
| ed=B["d_sweep"]["fitted_exponent"], | |
| sd=B["d_sweep"]["stderr"], | |
| eu=B["u_sweep"]["fitted_exponent"], | |
| su=B["u_sweep"]["stderr"], | |
| nsig=(1.0 - B["d_sweep"]["fitted_exponent"]) / B["d_sweep"]["stderr"], | |
| kap="\n".join( | |
| "| %d | %.2f | %g | %g |" | |
| % ( | |
| r["d"], | |
| r["mean_sum_ltilde_sq_over_V_T"], | |
| r["Cor22_expectation_bound_2d"], | |
| r["Cor22_as_bound_4d2"], | |
| ) | |
| for r in D["rows"] | |
| ), | |
| ekap=D["fitted_d_exponent_of_realised_dimension_factor"], | |
| sekap=D["stderr"], | |
| mr=max(r["max_ratio_to_kappa_sqrt_d_bound"] for r in C), | |
| mr1=max(r["max_ratio_to_kappa_1_bound"] for r in C), | |
| r0=max(r["max_R_T_0"] for r in C), | |
| mw=max(r["max_iterate_norm"] for r in C), | |
| adv=max(r["adaptive_over_oblivious"] for r in E), | |
| ) | |
| write(SLUGS[2], NAMES[2], [cell("markdown", NAMES[2], p2)]) | |
| CD = c3["C_D_path_length_sweep"] | |
| reg = CD["regression_of_squared_regret_on_P_T"] | |
| p3 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **verified** | |
| **Instantiation.** PABLO + **Algorithm 6** (Appendix E.2), built from the paper's pseudocode: | |
| one Algorithm-5 instance per step size eta_i = min(2^i/(TL), 1/L), playing the **sum** of their | |
| iterates. Its inputs are exactly (eps, L, T) — **no P_T, no M = max_t ||u_t||** — which is the | |
| structural content of "without prior knowledge". | |
| ### The base algorithm is correct: Theorem E.6 / E.7 checked as inequalities | |
| * Theorem E.6 (Algorithm 5): **{n6} randomized full-information instances, 0 violations**, | |
| minimum slack {slack:.1f}; static, drifting and switching comparator sequences. | |
| * Theorem E.7 (Algorithm 6): 4/4 instances hold. | |
| * The PDF flattens a fraction in Algorithm 5's exponential update. The mirror-descent | |
| optimality condition for psi(w) = (k/eta)∫log(x/alpha+1)dx forces exp((eta/k)(...)); running | |
| the alternative parsing exp((k/eta)(...)) on a sign-flipping instance gives regret | |
| **{wrong:.2e}** against a Theorem-E.6 bound of {bnd:.2f} — the check is discriminative, and | |
| our parsing is the one that satisfies the paper's own theorem. | |
| ### sqrt(P_T) with P_T withheld ({S} seeds/point, T = {T}, d = {d}, M = 1) | |
| Comparator sequences are piecewise-constant over K phases, each phase an independent hard | |
| instance calibrated to its own length; P_T is measured from the sequence and never given to the | |
| learner. | |
| | K | P_T | measured E[R_T(u_1:T)] | Theorem E.7 bound (no P_T needed) | | |
| | --- | --- | --- | --- | | |
| {rows} | |
| A sqrt(P_T) dependence means R_T^2 is **affine** in P_T. Regressing the measured R^2 on P_T: | |
| slope {slope:.3g}, intercept {icpt:.3g}, **r^2 = {r2:.4f}**. (The naive log-log slope, | |
| {naive:.3f}, is biased below 1/2 by the large P_T-independent intercept — the static part of the | |
| regret.) In T at fixed K the fitted exponent is {eT:.3f} ± {seT:.3f}, and in d it is | |
| {ed:.3f} ± {sed:.3f} — again the kappa = sqrt(d) branch. | |
| ### The price of *not* knowing P_T | |
| A single-step-size learner has to pick eta. Minimising Theorem E.6's bound separately for each | |
| P_T (the oracle) and comparing with the eta that is optimal at P_T = 0: | |
| | P_T | E6 bound, oracle eta | E6 bound, eta tuned for P_T = 0 | ratio | | |
| | --- | --- | --- | --- | | |
| {tune} | |
| so a static tuning already costs **{deg:.2f}x** at P_T = {maxP:.1f} and the gap keeps growing, | |
| while Algorithm 6 needs no tuning at all. | |
| ## Scale, seeds, limitations | |
| * {S} seeds per point, T from 500 to 16,000, d from 2 to 32, P_T from 0 to {maxP:.1f}; master | |
| seed 20260725. | |
| * **Limitation (stated plainly).** We could not exhibit an instance where the *realised* regret | |
| separates a P_T-aware from a P_T-agnostic tuning: on families where the comparator is | |
| competitive PABLO correctly plays ||w_t|| ~ 1e-3, so the realised regret is the | |
| information-theoretic floor and every step size gives the same number; on families where it | |
| scales up it beats the norm-M comparator outright (negative dynamic regret). The | |
| no-prior-knowledge property is therefore verified structurally and at the level of the | |
| guarantees, not by a realised-regret separation. | |
| * **Limitation.** Theorem E.7's constant is dominated by its own lower-order additive term | |
| 4L|S|(eps + M + Phi_T + P^Phi_T) at every feasible horizon: at T = {T} its bound is | |
| {ratio6:.1f}x the oracle single-eta bound, and the sqrt(P_T) main term only overtakes the | |
| additive term for T of order 10^7. | |
| * Script: `scripts/claim3_dynamic.py` · base algorithm: `scripts/alg5.py`, `scripts/pablo.py`. | |
| """.format( | |
| claim=CLAIMS[3], | |
| n6=c3["A_theorem_E6_check"]["trials"], | |
| slack=c3["A_theorem_E6_check"]["min_slack"], | |
| wrong=c3["A2_update_parse_identifiability"]["regret_with_k_over_eta"], | |
| bnd=c3["A2_update_parse_identifiability"]["thm_E6_bound"], | |
| S=CD["seeds"], | |
| T=CD["T"], | |
| d=CD["d"], | |
| rows="\n".join( | |
| "| %d | %.2f | %.1f | %.3g |" | |
| % ( | |
| r["K"], | |
| r["P_T"], | |
| r["measured_alg6_no_prior_knowledge"], | |
| r["bound_E7_alg6_no_prior_knowledge"], | |
| ) | |
| for r in CD["rows"] | |
| ), | |
| slope=reg["slope"], | |
| icpt=reg["intercept"], | |
| r2=reg["r_squared"], | |
| naive=CD["fitted_P_T_exponent_of_measured_regret"], | |
| eT=c3["T_sweep"]["fitted_T_exponent"], | |
| seT=c3["T_sweep"]["stderr"], | |
| ed=c3["E_dimension_sweep"]["fitted_d_exponent"], | |
| sed=c3["E_dimension_sweep"]["stderr"], | |
| tune="\n".join( | |
| "| %.2f | %.3g | %.3g | %.2f |" | |
| % ( | |
| r["P_T"], | |
| r["bound_E6_oracle_eta"], | |
| r["bound_E6_with_eta_tuned_for_P_T_zero"], | |
| r["static_tuning_bound_over_oracle_bound"], | |
| ) | |
| for r in CD["rows"] | |
| ), | |
| deg=CD["max_static_tuning_bound_over_oracle_bound"], | |
| maxP=max(r["P_T"] for r in CD["rows"]), | |
| ratio6=CD["max_alg6_bound_over_oracle_bound"], | |
| ) | |
| write(SLUGS[3], NAMES[3], [cell("markdown", NAMES[3], p3)]) | |
| Q = c4["T2_T3_T4_quantiles"] | |
| EX = Q["exponents_of_the_1_minus_3delta_quantile"] | |
| p4 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **verified** | |
| **Numbering.** In **arXiv:{arxiv}v2** the statement carrying exactly this formula is | |
| **Theorem 4.3** (Section 4); "4.2" in that version is a remark. We test the formula, and record | |
| the discrepancy rather than silently renumbering. | |
| ### T1 — Proposition 4.1, the reduction the theorem is built on | |
| With all unspecified constants set to 1 and the paper's varepsilon^2 ∝ 1/T setting of Eq. (4), | |
| R_T(u) <= R~^A_T(u) + G sqrt(d sum_t||w_t||^2 log(1/delta)) | |
| + G sqrt(d sum_t||u_t||^2 log(1/delta)) + dG P_T | |
| was checked as an *event probability* over **{S1} seeds** for d in {{4, 8, 16}}, T in | |
| {{2000, 4000}}, ||u|| in {{1, 8}} and six values of delta: **{nrows} configurations, 0 violations**, | |
| empirical failure probability 0.0000 against the allowed 3*delta. | |
| ### T2 — the regret distribution against the theorem's bound | |
| {S2} seeds, d = 8, T = 2000, comparator norms 1, 4, 16, six values of delta ({nq2} tests): | |
| **no violation**; the largest ratio of the (1-3delta) quantile to the bound is {mrat:.3f}. | |
| | delta | (1-3delta) quantile, ||u||=4 | Theorem bound | ratio | | |
| | --- | --- | --- | --- | | |
| {qrows} | |
| ### T3 — the shape of the tail | |
| Regressing the quantile on sqrt(log(T/delta)) gives slope {slope:.2f} with **r^2 = {r2:.4f}**. | |
| On this family the regret is extremely concentrated (std/mean = {cv:.1e}), so the deviation term | |
| is not stressed; the supplement below repeats the test where it is. | |
| ### T4 — exponents of the (1-3delta) quantile, delta = 0.01 | |
| | swept | fitted | predicted | | |
| | --- | --- | --- | | |
| | T | {eT:.3f} ± {sT:.3f} | 0.5 | | |
| | d | {ed:.3f} ± {sd:.3f} | 0.5 | | |
| | ||u|| | {eu:.3f} ± {su:.3f} | 1 | | |
| ### Supplement — the same test where the learner is ACTIVE | |
| On the sign-flipping family PABLO does scale up (max_t ||w_t|| up to {mw:.2f}) and the regret | |
| has a genuine distribution (coefficient of variation up to {cv2:.2f}). Over {S3} seeds and 4 | |
| instances: **{v1} violations of the theorem's bound, {v2} violations of Proposition 4.1**, and | |
| the quantile grows in sqrt(log(T/delta)) with r^2 in [{r2lo:.3f}, {r2hi:.3f}]. | |
| ### T5 — boundary audit of varepsilon^2 ∝ 1/T | |
| Replacing Eq. (4)'s varepsilon by 0.1, by 1 and by 1e-6 leaves the bound satisfied (99th | |
| percentile {q1:.0f}, {q2:.0f}, {q3:.0f} against a bound of {bd:.0f}); on these instances the | |
| condition is not binding, which we report as a negative rather than as support. | |
| ## Scale, seeds, limitations | |
| * {S2} seeds for the distributional tests, {S1} for Proposition 4.1, six delta values down to | |
| 0.002 (so the 0.994 quantile is estimated from 4,000 replicates); master seed 20260725. | |
| * **Limitation (material).** Theorem 4.3 is stated for PABLO instantiated with | |
| *Zhang & Cutkosky (2022, Algorithm 1)*, which is not restated in this paper and was **not** | |
| re-implemented; we instantiate PABLO with Algorithm 6 of this paper. That base learner exists | |
| solely to control sum_t ||w_t||^2 in Proposition 4.1, so we measure that quantity directly: | |
| it stays at {sw:.2g} on the hard family and {sw2:.1f} on the active family. Our test therefore | |
| confirms the bound's validity and its delta-, T-, d- and ||u||-dependence for a valid PABLO | |
| instantiation; it cannot rule out instances where the iterates are unstable, which is | |
| precisely what the substituted algorithm addresses. | |
| * Scripts: `scripts/claim4_highprob.py`, `scripts/claim4_tail_supplement.py`. | |
| """.format( | |
| claim=CLAIMS[4], | |
| arxiv=ARXIV, | |
| S1=c4["T1_proposition_4_1"][0]["seeds"], | |
| nrows=len(c4["T1_proposition_4_1"]), | |
| S2=Q["quantiles"]["seeds"], | |
| nq2=len(Q["quantiles"]["rows"]), | |
| mrat=max(r["ratio"] for r in Q["quantiles"]["rows"]), | |
| qrows="\n".join( | |
| "| %.3f | %.1f | %.1f | %.4f |" | |
| % (r["delta"], r["quantile_1_minus_3delta"], r["theorem_bound"], r["ratio"]) | |
| for r in Q["quantiles"]["rows"] | |
| if r["u_norm"] == 4.0 | |
| ), | |
| slope=Q["quantiles"]["tail_regression_on_sqrt_log_T_over_delta"]["slope"], | |
| r2=Q["quantiles"]["tail_regression_on_sqrt_log_T_over_delta"]["r_squared"], | |
| cv=Q["distribution_summary"]["std"] / abs(Q["distribution_summary"]["mean"]), | |
| eT=EX["T"]["fitted"], | |
| sT=EX["T"]["stderr"], | |
| ed=EX["d"]["fitted"], | |
| sd=EX["d"]["stderr"], | |
| eu=EX["u_norm"]["fitted"], | |
| su=EX["u_norm"]["stderr"], | |
| mw=max(r["max_iterate_norm"] for r in c4s["distribution_rows"]), | |
| cv2=max(r["coefficient_of_variation"] for r in c4s["distribution_rows"][:2]), | |
| S3=c4s["distribution_rows"][0]["seeds"], | |
| v1=c4s["violations_of_theorem_bound"], | |
| v2=c4s["violations_of_proposition_4_1"], | |
| r2lo=min(r["tail_fit_r_squared"] for r in c4s["distribution_rows"]), | |
| r2hi=max(r["tail_fit_r_squared"] for r in c4s["distribution_rows"]), | |
| q1=c4["T5_varepsilon_boundary_audit"][1]["q_99"], | |
| q2=c4["T5_varepsilon_boundary_audit"][2]["q_99"], | |
| q3=c4["T5_varepsilon_boundary_audit"][3]["q_99"], | |
| bd=c4["T5_varepsilon_boundary_audit"][0]["theorem_bound_delta_0p0033"], | |
| sw=c4["T1_proposition_4_1"][0]["mean_sum_w_sq"], | |
| sw2=max(r["mean_sum_w_sq"] for r in c4s["distribution_rows"]), | |
| ) | |
| write(SLUGS[4], NAMES[4], [cell("markdown", NAMES[4], p4)]) | |
| R5 = c5["T1_T2_rates"] | |
| M5 = c5["T3_noise_variance_mechanism"] | |
| I5 = c5["T4_information_argument"] | |
| p5 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **verified** | |
| A lower bound cannot be *proved* by simulation, so what is reproduced here is the theorem's | |
| construction and its information-theoretic engine, end to end, plus the rate it predicts. | |
| **Construction (part 1 of Theorem 5.2, implemented verbatim).** theta in {{+-Delta}}^d with | |
| Delta = c/sqrt(T); losses l_t = theta + xi_t, xi_t ~ N(0, (2d)^{{-1}} I_d); the learner plays | |
| z_t in the unit Euclidean ball and observes only <l_t, z_t>. Measured quantity: the direction | |
| regret of Eq. (7), R^Z_T = sum_t <z_t, theta> + T||theta|| (comparator u = -theta/||theta||). | |
| ### T1 — every algorithm we ran is above the stated floor | |
| Three strong baselines, each *given advantages* (grid-optimised exploration budget / step size, | |
| and the adversary's best Delta selected per algorithm): linear Thompson sampling on the ball, | |
| explore-then-commit with coordinate exploration, and an OSMD-style bandit-gradient learner. | |
| | d | T | empirical minimax envelope | sqrt(dT) | envelope / sqrt(dT) | >= floor sqrt(dT)/64 ^ T/(12d) | | |
| | --- | --- | --- | --- | --- | --- | | |
| {rows5} | |
| ### T2 — the rate | |
| Fitted exponents of the empirical minimax envelope: **T^{{{eT:.3f} ± {seT:.3f}}}** (predicted | |
| 1/2) and, at fixed T = 4000, **d^{{{ed:.3f} ± {sed:.3f}}}**. The d-exponent overshoots 1/2 | |
| because at fixed T the aspect ratio T/d falls from 1000 to 125 and the envelope/sqrt(dT) ratio | |
| drifts from 0.54 to 0.82; sqrt(dT) is the rate in the regime T >> d that the theorem's | |
| T >= 4d assumption points at. Sweeping d at a **fixed aspect ratio T = 500d** (where sqrt(dT) | |
| = sqrt(500) d, so the predicted d-exponent is 1) gives **{eds:.3f} ± {seds:.3f}** with | |
| envelope/sqrt(dT) in [{lo5:.2f}, {hi5:.2f}]: | |
| | d | T = 500d | envelope | sqrt(dT) | ratio | | |
| | --- | --- | --- | --- | --- | | |
| {rows5s} | |
| ### T3 — the mechanism the proof sketch names | |
| The sketch attributes the sqrt(dT) rate (rather than d sqrt(T)) to the 1/d noise-variance | |
| constraint. Sweeping sigma^2 with Delta rescaled to the noise level: | |
| | sigma^2 | envelope regret | sigma d sqrt(T) | ratio | | |
| | --- | --- | --- | --- | | |
| {rows5b} | |
| fitted exponent in sigma^2 = **{es:.3f} ± {ses:.3f}** (predicted 1/2, i.e. regret ~ sigma d | |
| sqrt(T)); at sigma^2 = 1/(2d) this is exactly sqrt(dT/2). | |
| ### T4 — the KL / Pinsker step, re-derived numerically | |
| For neighbours differing in one coordinate sign, sum_i KL = 2 Delta^2 T / sigma^2 exactly (the | |
| algorithm plays ||z_t|| = 1). Measured along real trajectories: | |
| | Delta * sqrt(T) | mean total KL | closed form | fraction of coordinate signs recovered | regret / sqrt(dT) | | |
| | --- | --- | --- | --- | --- | | |
| {rows5c} | |
| When the total KL is O(d) the signs are recovered at chance level (0.5) and the regret sits at | |
| the sqrt(dT) scale — exactly the trade-off the randomisation-hammer argument exploits. | |
| ### T5 — part 2 (bounded losses) | |
| Truncating the losses to ||l_t|| <= 1 preserves the behaviour: envelope / sqrt(dT) = | |
| {trunc} for d = 8, 16, 32, all above the floor. | |
| ## Scale, seeds, limitations | |
| * {seeds} seeds per (algorithm, Delta) cell; d in {{4, 8, 16, 32}}, T in {{500 … 8000}} with | |
| T >= 4d as the theorem assumes; master seed 20260725. | |
| * **Limitation.** "Minimax" is over *all* algorithms; we can only run finitely many, so T1/T2 | |
| establish the floor for the three (advantaged) algorithms tested, not for every algorithm. | |
| The parts that are genuinely verified rather than sampled are the construction and the | |
| information argument (T4), which is where the proof's force lies. | |
| * Scripts: `scripts/claim5_lowerbound.py`, `scripts/claim5_supplement.py` · raw: | |
| `outputs/claim5_lowerbound.json`, `outputs/claim5_supplement.json`. | |
| """.format( | |
| claim=CLAIMS[5], | |
| rows5="\n".join( | |
| "| %d | %d | %.1f | %.1f | %.3f | %s |" | |
| % ( | |
| r["d"], | |
| r["T"], | |
| r["empirical_minimax_envelope"], | |
| r["sqrt_dT"], | |
| r["envelope_over_sqrt_dT"], | |
| "yes" if r["above_theorem_floor"] else "**no**", | |
| ) | |
| for r in R5["rows"] | |
| ), | |
| ed=R5["fitted_d_exponent"], | |
| sed=R5["stderr_d"], | |
| eT=R5["fitted_T_exponent"], | |
| seT=R5["stderr_T"], | |
| eds=c5s["fitted_d_exponent"], | |
| seds=c5s["stderr"], | |
| lo5=min(r["envelope_over_sqrt_dT"] for r in c5s["rows"]), | |
| hi5=max(r["envelope_over_sqrt_dT"] for r in c5s["rows"]), | |
| rows5s="\n".join( | |
| "| %d | %d | %.1f | %.1f | %.3f |" | |
| % (r["d"], r["T"], r["empirical_minimax_envelope"], r["sqrt_dT"], | |
| r["envelope_over_sqrt_dT"]) | |
| for r in c5s["rows"] | |
| ), | |
| rows5b="\n".join( | |
| "| %.4g | %.1f | %.1f | %.3f |" | |
| % (r["sigma_sq"], r["envelope_regret"], r["sigma_d_sqrtT"], r["ratio"]) | |
| for r in M5["rows"] | |
| ), | |
| es=M5["fitted_sigma_sq_exponent"], | |
| ses=M5["stderr"], | |
| rows5c="\n".join( | |
| "| %.2f | %.1f | %.1f | %.3f | %.3f |" | |
| % ( | |
| r["Delta_coefficient"], | |
| r["mean_total_KL"], | |
| r["closed_form_2Delta2T_over_sigma2"], | |
| r["mean_fraction_of_signs_recovered"], | |
| r["regret_over_sqrt_dT"], | |
| ) | |
| for r in I5["rows"] | |
| ), | |
| trunc=", ".join( | |
| "%.3f" % r["over_sqrt_dT"] for r in c5["T5_truncated_bounded_losses"] | |
| ), | |
| seeds=R5["seeds"], | |
| ) | |
| write(SLUGS[5], NAMES[5], [cell("markdown", NAMES[5], p5)]) | |
| A6 = c6["T1_achievability_shape"] | |
| p6 = """> **Claim (verbatim).** {claim} | |
| ## Verdict: **toy** — deliberately, and this is the honest label | |
| Conjecture 5.3 is an **open problem**: the paper states it and explicitly declines to prove it. | |
| No simulation can establish the Omega direction, and none is claimed here. What follows is | |
| numerical evidence about the conjectured *functional form*, on synthetic instances, plus an | |
| executable version of the obstruction the paper describes. | |
| ### 1. Does the conjectured shape describe the worst case we can build? | |
| For each ||u|| we take the maximum measured E[R_T(u)] over a battery of 10 loss families | |
| (minimax-hard hypercube, coordinate-Rademacher, nine sign-flipping variants, a 1-D | |
| Streeter-McMahan geometry), T = 4000, {S} seeds, and divide by ||u|| sqrt(T (d v log||u||)): | |
| | d | ||u|| range | min ratio | max ratio | spread | slope of ratio vs ||u|| (log-log) | | |
| | --- | --- | --- | --- | --- | --- | | |
| {rows6} | |
| The ratio stays in **[{lo:.2f}, {hi:.2f}]** across seven orders of magnitude of ||u|| and | |
| d in {{2, 4, 8}} — the conjectured form is the right envelope to within a constant — **but it | |
| decreases**: our oblivious battery realises ||u|| sqrt(dT) and does **not** realise the | |
| log||u|| growth. That is the expected signature of the log factor requiring an *adaptive* | |
| adversary (the paper's Theorem 5.1 is a Streeter-McMahan-type bound whose hard sequence is built | |
| against the learner), and it is reported here as a negative result, not as support. | |
| ### 2. The obstruction, made executable | |
| The paper argues the two partial lower bounds do not combine, because on a direction-hard | |
| sequence "nothing prevents the scale regret R^V_T from being large and negative". We compute | |
| the Eq. (7) decomposition R_T(u) = R^V_T(||u||) + ||u|| R^Z_T(u/||u||) along real trajectories | |
| (identity residual <= {res:.1e}): | |
| | instance | d | R^Z_T / sqrt(dT) | R^V_T at ||u||=10^4 | | |
| | --- | --- | --- | --- | | |
| {rows6b} | |
| On the Theorem-5.2 direction-hard instance at d = 16 the direction regret is | |
| {rz:.2f} sqrt(dT) while the scale regret is **negative** ({rv:.1f}) — precisely the | |
| cancellation that blocks the naive combination of the two bounds. On the scale-hard 1-D | |
| sequence the direction regret collapses to {rz2:.2f} sqrt(dT). The two hard instances are | |
| genuinely different instances. | |
| ### 3. Falsification probe | |
| {np} (instance, d, ||u||) cells were probed for a ratio growing above the conjectured rate; the | |
| largest ratio observed is **{mx:.3f}** (d = {mxd}, {mxi}), i.e. a constant, with no growing | |
| trend. Nothing in our battery falsifies the conjecture, and nothing in it can prove it. | |
| ## Scale, seeds, limitations | |
| * {S} seeds per instance, T = 4000, d in {{2, 4, 8, 16}}, ||u|| from 1 to 10^7; master seed | |
| 20260725. | |
| * **Blocker for a higher verdict:** the claim is an open conjecture. The Omega direction | |
| requires a proof; the O direction for the specific coin-bettor + OSMD combination is | |
| Eq. (5) of the paper, which is a corollary of results we do verify elsewhere, but the | |
| minimax statement is not decidable numerically. | |
| * Script: `scripts/claim6_conjecture.py` · raw: `outputs/claim6_conjecture.json`. | |
| """.format( | |
| claim=CLAIMS[6], | |
| S=A6["seeds"], | |
| rows6="\n".join( | |
| "| %s | 1 … 10^7 | %.3f | %.3f | %.2f | %+.3f |" | |
| % ( | |
| k, | |
| v["min_ratio"], | |
| v["max_ratio"], | |
| v["spread"], | |
| v["fitted_slope_of_ratio_vs_u_norm"], | |
| ) | |
| for k, v in A6["flatness_summary"].items() | |
| ), | |
| lo=min(v["min_ratio"] for v in A6["flatness_summary"].values()), | |
| hi=max(v["max_ratio"] for v in A6["flatness_summary"].values()), | |
| res=max(r["identity_residual"] for r in c6["T2_scale_direction_decomposition"]), | |
| rows6b="\n".join( | |
| "| %s | %d | %.3f | %.1f |" | |
| % (r["instance"], r["d"], r["R_Z_over_sqrt_dT"], r["scale_regret_R_V"]) | |
| for r in c6["T2_scale_direction_decomposition"] | |
| if r["u_norm"] == 1e4 | |
| ), | |
| rz=[ | |
| r | |
| for r in c6["T2_scale_direction_decomposition"] | |
| if r["d"] == 16 and r["instance"].startswith("theorem") | |
| ][0]["R_Z_over_sqrt_dT"], | |
| rv=[ | |
| r | |
| for r in c6["T2_scale_direction_decomposition"] | |
| if r["d"] == 16 and r["instance"].startswith("theorem") and r["u_norm"] == 1e4 | |
| ][0]["scale_regret_R_V"], | |
| rz2=[ | |
| r | |
| for r in c6["T2_scale_direction_decomposition"] | |
| if r["d"] == 16 and r["instance"].startswith("scale") | |
| ][0]["R_Z_over_sqrt_dT"], | |
| np=c6["T3_falsification_probe"]["instances_probed"], | |
| mx=c6["T3_falsification_probe"]["max_ratio"], | |
| mxd=c6["T3_falsification_probe"]["worst_case"]["d"], | |
| mxi=c6["T3_falsification_probe"]["worst_case"]["instance"], | |
| ) | |
| write(SLUGS[6], NAMES[6], [cell("markdown", NAMES[6], p6)]) | |
| # ---------------------------------------------------------------------------- conclusion | |
| concl_md = """## Outcome | |
| | # | Claim | Verdict | Key number | | |
| | --- | --- | --- | --- | | |
| | 1 | PABLO reduces uBLO to OLO (Sec. 3) | **verified** | exhaustive check of Prop. 2.1 over 2,400 configs, max rel. error {e1:.1e} | | |
| | 2 | Thm 3.1 expected static regret, kappa gap | **verified** | fitted d-exponent {ed:.3f} ± {sd:.3f} (kappa = sqrt(d) branch) | | |
| | 3 | Thm 3.3 sqrt(P_T) without prior knowledge | **verified** | R_T^2 affine in P_T, r^2 = {r2:.4f} | | |
| | 4 | Thm 4.2 (= Thm 4.3 in v2) high-probability | **verified** | 0 violations in {nq} quantile tests, 4,000 seeds | | |
| | 5 | Thm 5.2 Omega(sqrt(dT)) on the unit ball | **verified** | envelope/sqrt(dT) in [0.50, 0.82], T-exponent {e5T:.3f}, all above the floor | | |
| | 6 | Conjecture 5.3 (open problem) | **toy** | ratio to conjectured rate in [{lo:.2f}, {hi:.2f}], slope {sl:+.3f} | | |
| Two findings we would not have predicted from the paper: the norm-adaptive (kappa = 1) branch of | |
| Theorem 3.1 is **not tight** on any instance we could build (an adversary choosing ||u|| after | |
| the trajectory gains a factor 1.000, not sqrt(d)); and Theorem E.7's constant is dominated by | |
| its own lower-order additive term until T ~ 10^7, so the sqrt(P_T) main term is not the binding | |
| part of the guarantee at any horizon one can simulate. | |
| ## Download the reproduction bundle & rerun | |
| **Bucket:** `hf://buckets/SabaPivot/repro-pablo-bandits-artifacts` — | |
| [browse](https://huggingface.co/buckets/SabaPivot/repro-pablo-bandits-artifacts) | |
| (`scripts/`, `outputs/` raw JSON, `figs/`). | |
| ```bash | |
| hf buckets sync hf://buckets/SabaPivot/repro-pablo-bandits-artifacts ./pablo-repro | |
| pip install numpy scipy matplotlib | |
| python scripts/claim1_reduction.py # Prop 2.1 (exhaustive), Cor 2.2 + boundary audit, reduction identity | |
| python scripts/claim2_static.py # Theorem 3.1: exponents in T, d, ||u||; kappa mechanism; norm-adaptive adversary | |
| python scripts/claim3_dynamic.py # Theorems E.6/E.7 + Theorem 3.3: sqrt(P_T) with P_T withheld | |
| python scripts/claim4_highprob.py # Proposition 4.1 + Theorem 4.3 quantiles | |
| python scripts/claim4_tail_supplement.py # the same, on instances where the iterate is active | |
| python scripts/claim5_lowerbound.py # Theorem 5.2 construction, rate, noise mechanism, KL argument | |
| python scripts/claim5_supplement.py # the d-exponent at a fixed aspect ratio T = 500 d | |
| python scripts/claim6_conjecture.py # Conjecture 5.3 probes (open problem) | |
| python scripts/make_figures.py # the four poster figures | |
| ``` | |
| Everything is CPU-only (numpy, no GPU, no network) and took about 1.5 h wall-clock in total on a | |
| heavily loaded shared machine; every RNG seed is derived from the master seed 20260725 and is | |
| recorded in the JSON outputs. | |
| Paper: [arXiv {arxiv}](https://arxiv.org/abs/{arxiv}) · | |
| [OpenReview](https://openreview.net/forum?id={orid}). | |
| **No official code exists** — no repository is linked in the PDF, on the arXiv abstract page, or | |
| on the OpenReview forum; `scripts/pablo.py`, `scripts/alg5.py` and `scripts/batch.py` are an | |
| independent re-implementation from the pseudocode of Algorithm 1, Eq. (4), Algorithm 5 and | |
| Algorithm 6. | |
| """.format( | |
| e1=c1["t1_proposition_2_1_exhaustive"]["max_rel_err_unbiasedness"], | |
| ed=B["d_sweep"]["fitted_exponent"], | |
| sd=B["d_sweep"]["stderr"], | |
| r2=reg["r_squared"], | |
| nq=len(Q["quantiles"]["rows"]) + len(c4s["quantiles"]), | |
| e5d=R5["fitted_d_exponent"], | |
| e5T=R5["fitted_T_exponent"], | |
| lo=min(v["min_ratio"] for v in A6["flatness_summary"].values()), | |
| hi=max(v["max_ratio"] for v in A6["flatness_summary"].values()), | |
| sl=A6["flatness_summary"]["d=2"]["fitted_slope_of_ratio_vs_u_norm"], | |
| arxiv=ARXIV, | |
| orid=ORID, | |
| ) | |
| write( | |
| "conclusion", | |
| "Conclusion", | |
| [ | |
| cell( | |
| "artifact", | |
| "Reproduction bundle", | |
| "**\U0001F4E6 Artifact** `pablo-bandits-repro/repro-bundle:v0` \u00b7 dataset " | |
| "\u00b7 scripts + raw JSON + figures\n\n" | |
| "https://huggingface.co/buckets/SabaPivot/repro-pablo-bandits-artifacts", | |
| extra={"artifact_type": "dataset"}, | |
| ), | |
| cell("markdown", "Download & rerun", concl_md), | |
| ], | |
| ) | |
| print("logbook written") | |
Xet Storage Details
- Size:
- 42.2 kB
- Xet hash:
- de58db1f79aeebec3def438f9140160082860f6d2f0b301e1570243f2222f898
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.