Tracking a target allocation settles the empirical allocation
ProvedBanditAlgorithm.alloc_settling_of_tracking_and_target_accuracyFix a Gaussian bandit with means and a sampling rule, and suppose that on a full-measure set of trajectories the rule tracks a target , in the sense that the pull counts follow its partial sums to within a constant,
and that the target is within of a limit from a fixed round on as soon as the empirical means are -accurate. Suppose also that the rule explores enough that almost surely. Then for every the empirical allocation is eventually within of almost surely, and
This is the allocation half of Garivier and Kaufmann's Proposition 13, separated from the rule that realises it: nothing here is special to D-Tracking, only tracking and continuity of the plug-in map are used. The two hypotheses are deterministic properties of the rule; all of the probabilistic content enters through the accuracy of the means.
The proof trades a moment for a delay. A Cesàro average forgets its transient at rate , so an allocation failure at round cannot be caused by anything before round : it forces a failure of the means at some round . Exchanging the two sums charges each mean failure at for the allocation rounds below it, which converts the weight into — and the quadratically weighted mean-failure series converges because the forced-exploration floor makes each term sub-exponential in .
The almost-sure half is then Borel–Cantelli applied to the same series, so no separate consistency argument for the estimates is needed.
import Definitions.Def_TrackAndStop import Definitions.Def_GaussianBandit open MeasureTheory ProbabilityTheory InformationTheory NNReal ENNReal Filter
theorem BanditAlgorithm.alloc_settling_of_tracking_and_target_accuracy
{k : ℕ} [NeZero k] (μvec : Fin k → ℝ)
(pol : BanditAlgorithm.BanditPolicy k)
(p : (ℕ → Fin k × ℝ) → ℕ → Fin k → ℝ) (α : Fin k → ℝ) (C : ℝ) (hC : 0 ≤ C)
(G : Set (ℕ → Fin k × ℝ))
(hG : BanditAlgorithm.banditTrajMeasure
(BanditAlgorithm.gaussianBandit μvec) pol Gᶜ = 0)
(hα0 : ∀ i, 0 ≤ α i) (hα1 : ∀ i, α i ≤ 1)
(hp0 : ∀ ω s i, 0 ≤ p ω s i) (hp1 : ∀ ω s i, p ω s i ≤ 1)
(htrack : ∀ ω ∈ G, ∀ (n : ℕ) (i : Fin k),
|(BanditAlgorithm.trajPullCount i n ω : ℝ)
- ∑ s ∈ Finset.range n, p ω s i| ≤ C)
(hcount : ∀ᵐ ω ∂(BanditAlgorithm.banditTrajMeasure
(BanditAlgorithm.gaussianBandit μvec) pol),
∀ (t : ℕ) (j : Fin k),
Real.sqrt (t : ℝ) - 2 * (k : ℝ) ≤ (BanditAlgorithm.trajPullCount j t ω : ℝ))
{ξ : ℝ} (hξ : 0 < ξ) {ε : ℝ} (hε : 0 < ε) {S₀ : ℕ}
(hmod : ∀ ω ∈ G, ∀ s : ℕ, S₀ ≤ s →
(∀ l, |BanditAlgorithm.trajEmpiricalMean l s ω - μvec l| ≤ ε) →
∀ j, |p ω s j - α j| ≤ ξ / 2) :
(∀ᵐ ω ∂(BanditAlgorithm.banditTrajMeasure
(BanditAlgorithm.gaussianBandit μvec) pol),
∃ N : ℕ, ∀ n : ℕ, N ≤ n →
(0 < n ∧ ∀ i, |BanditAlgorithm.trajAllocation i n ω - α i| ≤ ξ))
∧ ∑' n : ℕ, ((n : ℝ≥0∞) + 1) *
BanditAlgorithm.banditTrajMeasure
(BanditAlgorithm.gaussianBandit μvec) pol
{ω : ℕ → Fin k × ℝ |
0 < n ∧ ∀ i, |BanditAlgorithm.trajAllocation i n ω - α i| ≤ ξ}ᶜ ≠ ⊤ := by
sorry