LeanMachineLearning exposition

Bandits.ArrayModel.truePast๐Ÿ”—

This page has the declaration's own card below, then its dependency graph, then a card for each dependency (type dependencies first, then the rest of the transitive closure). For a theorem, the graph and the dependency cards only follow its statement's dependencies (its proof is replaced by sorry, so what it proves doesn't depend on how); for everything else, both the type and the body/value are followed, since their content is part of what later declarations build on.

Minimal Lean file

truePast๐Ÿ”—

DefinitionBandits.ArrayModel.truePast

All random variables in the space, except for the unseen rewards for action a after time n.

๐Ÿ”—def
Bandits.ArrayModel.truePast.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] [Nonempty R] (alg : Learning.Algorithm ๐“ R) (a : ๐“) (n : โ„•) (ฯ‰ : probSpace ๐“ R) : probSpace ๐“ R
Bandits.ArrayModel.truePast.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] [Nonempty R] (alg : Learning.Algorithm ๐“ R) (a : ๐“) (n : โ„•) (ฯ‰ : probSpace ๐“ R) : probSpace ๐“ R

Code

noncomputable
def truePast (alg : Algorithm ๐“ R) (a : ๐“) (n : โ„•) (ฯ‰ : probSpace ๐“ R) :
    probSpace ๐“ R :=
  (ฯ‰.1, fun i b โ†ฆ if b = a then if pullCount (action alg) a (n + 1) ฯ‰ โ‰  0 then
      ฯ‰.2 (min i ((pullCount (action alg) a (n + 1) ฯ‰) - 1)) a else Nonempty.some inferInstance
    else ฯ‰.2 i b)
Type uses (2)
Body uses (2)
Used by (6)

Actions: Source ยท Open Issue

Dependency graph

Type dependencies (2)

Algorithm๐Ÿ”—

StructureLearning.Algorithm

A stochastic, sequential algorithm.

๐Ÿ”—structure
Learning.Algorithm.{u_4, u_5} (๐“ : Type u_4) (๐“จ : Type u_5) [MeasurableSpace ๐“] [MeasurableSpace ๐“จ] : Type (max u_4 u_5)
Learning.Algorithm.{u_4, u_5} (๐“ : Type u_4) (๐“จ : Type u_5) [MeasurableSpace ๐“] [MeasurableSpace ๐“จ] : Type (max u_4 u_5)

Code

structure Algorithm (๐“ ๐“จ : Type*) [MeasurableSpace ๐“] [MeasurableSpace ๐“จ] where
  /-- Policy or sampling rule: distribution of the next action. -/
  policy : (n : โ„•) โ†’ Kernel (Iic n โ†’ ๐“ ร— ๐“จ) ๐“
  /-- The policy is a Markov kernel. -/
  [h_policy : โˆ€ n, IsMarkovKernel (policy n)]
  /-- Distribution of the first action. -/
  p0 : Measure ๐“
  /-- The first action distribution is a probability measure. -/
  [hp0 : IsProbabilityMeasure p0]
Used by (216)

Actions: Source ยท Open Issue

probSpace๐Ÿ”—

DefinitionBandits.ArrayModel.probSpace

Probability space for the array model of stochastic bandits.

๐Ÿ”—def
Bandits.ArrayModel.probSpace.{u_1, u_2} (๐“ : Type u_1) (R : Type u_2) : Type (max u_1 u_2)
Bandits.ArrayModel.probSpace.{u_1, u_2} (๐“ : Type u_1) (R : Type u_2) : Type (max u_1 u_2)

Code

def probSpace : Type _ := (โ„• โ†’ I) ร— (โ„• โ†’ ๐“ โ†’ R)
Used by (64)

Actions: Source ยท Open Issue

All dependencies, transitively (8)

pullCount๐Ÿ”—

DefinitionLearning.pullCount

Number of times action a was chosen up to time t (excluding t).

๐Ÿ”—def
Learning.pullCount.{u_1, u_3} {๐“ : Type u_1} {ฮฉ : Type u_3} [DecidableEq ๐“] (A : โ„• โ†’ ฮฉ โ†’ ๐“) (a : ๐“) (t : โ„•) (ฯ‰ : ฮฉ) : โ„•
Learning.pullCount.{u_1, u_3} {๐“ : Type u_1} {ฮฉ : Type u_3} [DecidableEq ๐“] (A : โ„• โ†’ ฮฉ โ†’ ๐“) (a : ๐“) (t : โ„•) (ฯ‰ : ฮฉ) : โ„•

Code

noncomputable
def pullCount (A : โ„• โ†’ ฮฉ โ†’ ๐“) (a : ๐“) (t : โ„•) (ฯ‰ : ฮฉ) : โ„• :=
  #(filter (fun s โ†ฆ A s ฯ‰ = a) (range t))
Used by (146)

Actions: Source ยท Open Issue

instIsProbabilityMeasureP0๐Ÿ”—

InstanceLearning.instIsProbabilityMeasureP0

No docstring.

๐Ÿ”—theorem
Learning.instIsProbabilityMeasureP0.{u_1, u_2} {๐“ : Type u_1} {๐“จ : Type u_2} {m๐“ : MeasurableSpace ๐“} {m๐“จ : MeasurableSpace ๐“จ} (alg : Algorithm ๐“ ๐“จ) : MeasureTheory.IsProbabilityMeasure (Algorithm.p0 alg)
Learning.instIsProbabilityMeasureP0.{u_1, u_2} {๐“ : Type u_1} {๐“จ : Type u_2} {m๐“ : MeasurableSpace ๐“} {m๐“จ : MeasurableSpace ๐“จ} (alg : Algorithm ๐“ ๐“จ) : MeasureTheory.IsProbabilityMeasure (Algorithm.p0 alg)

Code

instance (alg : Algorithm ๐“ ๐“จ) : IsProbabilityMeasure alg.p0
Type uses (1)
Used by (13)

Actions: Source ยท Open Issue

Proof
alg.hp0

initAlgFunction๐Ÿ”—

DefinitionBandits.ArrayModel.initAlgFunction

The initial action is the image of a uniform random variable by this function.

๐Ÿ”—def
Bandits.ArrayModel.initAlgFunction.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] (alg : Learning.Algorithm ๐“ R) : โ†‘unitInterval โ†’ ๐“
Bandits.ArrayModel.initAlgFunction.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] (alg : Learning.Algorithm ๐“ R) : โ†‘unitInterval โ†’ ๐“

Code

noncomputable
def initAlgFunction (alg : Algorithm ๐“ R) : I โ†’ ๐“ :=
  (Measure.exists_measurable_map_eq alg.p0).choose
Type uses (1)
Body uses (1)
Used by (12)

Actions: Source ยท Open Issue

instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy๐Ÿ”—

InstanceLearning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy

No docstring.

๐Ÿ”—theorem
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy.{u_1, u_2} {๐“ : Type u_1} {๐“จ : Type u_2} {m๐“ : MeasurableSpace ๐“} {m๐“จ : MeasurableSpace ๐“จ} (alg : Algorithm ๐“ ๐“จ) (n : โ„•) : ProbabilityTheory.IsMarkovKernel (Algorithm.policy alg n)
Learning.instIsMarkovKernelForallSubtypeNatMemFinsetIicProdPolicy.{u_1, u_2} {๐“ : Type u_1} {๐“จ : Type u_2} {m๐“ : MeasurableSpace ๐“} {m๐“จ : MeasurableSpace ๐“จ} (alg : Algorithm ๐“ ๐“จ) (n : โ„•) : ProbabilityTheory.IsMarkovKernel (Algorithm.policy alg n)

Code

instance (alg : Algorithm ๐“ ๐“จ) (n : โ„•) : IsMarkovKernel (alg.policy n)
Type uses (1)
Used by (14)

Actions: Source ยท Open Issue

Proof
alg.h_policy n

algFunction๐Ÿ”—

DefinitionBandits.ArrayModel.algFunction

The next action is the image of the history and a uniform random variable by this function.

๐Ÿ”—def
Bandits.ArrayModel.algFunction.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] (alg : Learning.Algorithm ๐“ R) (n : โ„•) : (โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R) โ†’ โ†‘unitInterval โ†’ ๐“
Bandits.ArrayModel.algFunction.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] (alg : Learning.Algorithm ๐“ R) (n : โ„•) : (โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R) โ†’ โ†‘unitInterval โ†’ ๐“

Code

noncomputable
def algFunction (alg : Algorithm ๐“ R) (n : โ„•) :
    (Iic n โ†’ ๐“ ร— R) โ†’ I โ†’ ๐“ :=
  (Kernel.exists_measurable_map_eq_unitInterval (alg.policy n)).choose
Type uses (1)
Body uses (1)
Used by (17)

Actions: Source ยท Open Issue

pullCount'๐Ÿ”—

DefinitionLearning.pullCount'

Number of pulls of arm a up to (and including) time n. This is the number of entries in h in which the arm is a.

๐Ÿ”—def
Learning.pullCount'.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} [DecidableEq ๐“] (n : โ„•) (h : โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R) (a : ๐“) : โ„•
Learning.pullCount'.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} [DecidableEq ๐“] (n : โ„•) (h : โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R) (a : ๐“) : โ„•

Code

noncomputable
def pullCount' (n : โ„•) (h : Iic n โ†’ ๐“ ร— R) (a : ๐“) := #{s | (h s).1 = a}
Used by (29)

Actions: Source ยท Open Issue

hist๐Ÿ”—

DefinitionBandits.ArrayModel.hist

History of actions and rewards up to time n in the array model.

๐Ÿ”—def
Bandits.ArrayModel.hist.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] (alg : Learning.Algorithm ๐“ R) (ฯ‰ : probSpace ๐“ R) (n : โ„•) : โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R
Bandits.ArrayModel.hist.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] (alg : Learning.Algorithm ๐“ R) (ฯ‰ : probSpace ๐“ R) (n : โ„•) : โ†ฅ(Finset.Iic n) โ†’ ๐“ ร— R

Code

noncomputable
def hist [DecidableEq ๐“] (alg : Algorithm ๐“ R) (ฯ‰ : probSpace ๐“ R) : (n : โ„•) โ†’ Iic n โ†’ ๐“ ร— R
| 0 => fun _ โ†ฆ (initAlgFunction alg (ฯ‰.1 0), ฯ‰.2 0 (initAlgFunction alg (ฯ‰.1 0)))
| n + 1 =>
  let hn : Iic n โ†’ ๐“ ร— R := hist alg ฯ‰ n
  let a : ๐“ := algFunction alg n hn (ฯ‰.1 (n + 1))
  fun i โ†ฆ if hin : i โ‰ค n then hn โŸจi, by simp [hin]โŸฉ else (a, ฯ‰.2 (pullCount' n hn a) a)
Type uses (2)
Body uses (3)
Used by (30)

Actions: Source ยท Open Issue

action๐Ÿ”—

DefinitionBandits.ArrayModel.action

Action taken at time n in the array model.

๐Ÿ”—def
Bandits.ArrayModel.action.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] (alg : Learning.Algorithm ๐“ R) (n : โ„•) (ฯ‰ : probSpace ๐“ R) : ๐“
Bandits.ArrayModel.action.{u_1, u_2} {๐“ : Type u_1} {R : Type u_2} {m๐“ : MeasurableSpace ๐“} {mR : MeasurableSpace R} [Nonempty ๐“] [StandardBorelSpace ๐“] [DecidableEq ๐“] (alg : Learning.Algorithm ๐“ R) (n : โ„•) (ฯ‰ : probSpace ๐“ R) : ๐“

Code

noncomputable
def action [DecidableEq ๐“] (alg : Algorithm ๐“ R) (n : โ„•) (ฯ‰ : probSpace ๐“ R) : ๐“ :=
  (hist alg ฯ‰ n โŸจn, by simpโŸฉ).1
Type uses (2)
Body uses (1)
Used by (43)

Actions: Source ยท Open Issue