Reward models and arm priors
Reward models describe observation noise conditional on true arm means. Arm
priors generate those means. Keeping the concepts separate avoids interpreting
one generic scale as a Gaussian standard deviation in one place and a Beta
concentration in another.
Available reward models are GaussianReward, BernoulliReward, and
UniformReward. Available priors are GaussianArmPrior, BetaArmPrior,
and UniformArmPrior.
Reward models and explicit priors for simulated arm means.
-
class ArmPrior[source]
Bases: ABC
Distribution used only to generate initial true arm means.
-
abstractmethod sample(*, n_arms, rng)[source]
Generate one true mean per arm.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
class BernoulliReward[source]
Bases: RewardModel
Binary observations whose means are success probabilities.
-
domain: RewardDomain = 'binary'
-
validate_means(means)[source]
Validate true arm means against this model’s support.
- Parameters:
means (ndarray[tuple[Any, ...], dtype[float64]])
- Return type:
None
-
sample(means, rng)[source]
Sample one potential reward for every supplied arm mean.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__()
- Return type:
None
-
clone()
Return an independent reward-model instance for one replicate.
- Return type:
RewardModel
-
sample_one(mean, *, rng)
Sample a scalar reward for one arm using an explicit random stream.
- Parameters:
-
- Return type:
float
-
class BetaArmPrior[source]
Bases: ArmPrior
BetaArmPrior(alpha: ‘float’ = 1.0, beta: ‘float’ = 1.0)
-
alpha: float = 1.0
-
beta: float = 1.0
-
sample(*, n_arms, rng)[source]
Generate one true mean per arm.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__(alpha=1.0, beta=1.0)
- Parameters:
-
- Return type:
None
-
class GaussianArmPrior[source]
Bases: ArmPrior
GaussianArmPrior(mean: ‘float’ = 0.0, std: ‘float’ = 1.0)
-
mean: float = 0.0
-
std: float = 1.0
-
sample(*, n_arms, rng)[source]
Generate one true mean per arm.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__(mean=0.0, std=1.0)
- Parameters:
-
- Return type:
None
-
class GaussianReward[source]
Bases: RewardModel
Gaussian observations with known standard deviation.
-
std: float = 1.0
-
domain: RewardDomain = 'real'
-
sample(means, rng)[source]
Sample one potential reward for every supplied arm mean.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__(std=1.0)
- Parameters:
std (float)
- Return type:
None
-
clone()
Return an independent reward-model instance for one replicate.
- Return type:
RewardModel
-
sample_one(mean, *, rng)
Sample a scalar reward for one arm using an explicit random stream.
- Parameters:
-
- Return type:
float
-
validate_means(means)
Validate true arm means against this model’s support.
- Parameters:
means (ndarray[tuple[Any, ...], dtype[float64]])
- Return type:
None
-
class RewardModel[source]
Bases: ABC
Distribution of observed rewards conditional on their true means.
-
domain: RewardDomain
-
abstractmethod sample(means, rng)[source]
Sample one potential reward for every supplied arm mean.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
sample_one(mean, *, rng)[source]
Sample a scalar reward for one arm using an explicit random stream.
- Parameters:
-
- Return type:
float
-
clone()[source]
Return an independent reward-model instance for one replicate.
- Return type:
RewardModel
-
validate_means(means)[source]
Validate true arm means against this model’s support.
- Parameters:
means (ndarray[tuple[Any, ...], dtype[float64]])
- Return type:
None
-
class UniformArmPrior[source]
Bases: ArmPrior
UniformArmPrior(low: ‘float’ = 0.0, high: ‘float’ = 1.0)
-
low: float = 0.0
-
high: float = 1.0
-
sample(*, n_arms, rng)[source]
Generate one true mean per arm.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__(low=0.0, high=1.0)
- Parameters:
-
- Return type:
None
-
class UniformReward[source]
Bases: RewardModel
Uniform observations centered on each true arm mean.
-
half_width: float = 1.0
-
domain: RewardDomain = 'real'
-
sample(means, rng)[source]
Sample one potential reward for every supplied arm mean.
- Parameters:
-
- Return type:
ndarray[tuple[Any, …], dtype[float64]]
-
__init__(half_width=1.0)
- Parameters:
half_width (float)
- Return type:
None
-
clone()
Return an independent reward-model instance for one replicate.
- Return type:
RewardModel
-
sample_one(mean, *, rng)
Sample a scalar reward for one arm using an explicit random stream.
- Parameters:
-
- Return type:
float
-
validate_means(means)
Validate true arm means against this model’s support.
- Parameters:
means (ndarray[tuple[Any, ...], dtype[float64]])
- Return type:
None
-
resolve_reward_model(model, *, observation_scale=1.0)[source]
Resolve a short name, class, or instance into a reward model.
- Parameters:
-
- Return type:
RewardModel