Repository navigation
feat: the eventual regret of ucbF as the Gaussian instance of KL-UCB - #380
Merged
lmlexplore-automation[bot] merged 3 commits intoNov 14, 2026
Conversation
Co-Authored-By: Claude Code <noreply@github.com>
RemyDegenne
commented
Nov 14, 2026
Contributor
Author
AI review — approvedEach rubric is judged independently by multiple review agents; the PR merges only once every rubric is green — any rubric that is not green (changes requested, blocked, errored, stale, or not yet run) blocks the merge. See the rubrics.
♻️ = approved on an earlier commit, re-run before merge. Reviewing this diff at head |
…CB proofs Factor out HasSubgaussianMGF.mgfDominatedOn_expFamily_natParam_gaussianReal and expFamilyDiv_gaussianReal_eq_gap_sq, used by sum_gap_div_expFamilyDiv_gaussianReal, klucbFam_gaussianReal_regret_eventually_le and UCBF.integral_pullCount_eventually_le. Co-Authored-By: Claude Code <noreply@github.com>
RemyDegenne
commented
Nov 14, 2026
…ential family Co-Authored-By: Claude Code <noreply@github.com>
Merged
via the queue into
LeanMachineLearning:main
with commit Nov 14, 2026
5776025
23 of 25 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR derives the asymptotic part of [LS, Theorem 8.1] for the asymptotically optimal UCB algorithm
ucbF σ2as the Gaussian instance of KL-UCB for exponential families, as Bandits Layer 3.4 asks ("Deduce, as the Gaussian instance, the eventual form of Layer 2.2 for σ²-sub-Gaussian rewards"; Layer 2.2: "the eventual form is also the Gaussian instance of Layer 3.4"). Until nowucbF_regret_eventually_leandUCBF.integral_pullCount_eventually_leeach had their own ε-argument over the explicit finite-time bound. Now they follow fromklucbFam_gaussianReal(ucbF σ2is KL-UCB for the Gaussian family of varianceσ²):ucbF_regret_eventually_leisklucbFam_gaussianReal_regret_eventually_lewith a common variance.UCBF.integral_pullCount_eventually_leisKLUCBFam.integral_pullCount_eventually_lefor the Gaussian family, withd(μ_a, μ*) = Δ_a² / (2σ²)(expFamilyDiv_gaussianReal).Both keep their names and their exact statements. They move from
LMLExplore/Bandits/AsymptoticallyOptimalUCB.leantoLMLExplore/Bandits/KLUCB.lean, the first file where the KL-UCB family theorems exist;KLUCB.leanalready importsAsymptoticallyOptimalUCB.lean. Their old proofs are deleted. The explicit finite-time boundsUCBF.integral_pullCount_leanducbF_regret_lestay where they are, since Layer 2.2 says "the explicit constants above keep the proof through [LS, Lemma 8.2]". The module docstrings of both files are updated.AsymptoticallyOptimalUCB.leandrops its import ofLMLExplore.Bandits.Regret, which only the moved proof used. The only downstream user isBandits/AsymptoticOptimality.lean(UCBF.isConsistent,tendsto_ucbF_regret_div_log_gaussianBandit), which already importsKLUCBand builds unchanged.Public declarations removed or renamed: none. The two moved theorems keep their names and statements; only their module changes, from
LMLExplore.Bandits.AsymptoticallyOptimalUCBtoLMLExplore.Bandits.KLUCB.Milestone: Bandits Layer 3.4 (regret of KL-UCB for exponential families and its instances). After this PR, Layer 3 has only its completion examples left: the Bernoulli boundary level
U(0, c) = 1 - e^{-c}and a two-armed Bernoulli bandit.Verification (local checks, not CI):
tauceti-local-checks verify --policy ordinarypassed withscope: scoped: against 7fc78707241a5393aa85a7751e472cf1cb45fca9. The whole-librarylake build --iofailsucceeded (8551 jobs).local-axioms: checked 2 changed module(s), 64 declaration(s); 0 violation(s). Module-system, header-style and changed-module environment lint passed.Roadmap: Bandits
🤖 Prepared with Claude Code