3个稳定版本
1.0.2 | 2020年9月14日 |
---|
#1971 在 算法
每月26次下载
在 dogs 中使用
49KB
195 行
rl-bandit:Rust老虎机实现
简单的多臂老虎机算法实现。
实现了几个老虎机算法(大部分可以在《强化学习:入门》一书中找到,作者是Richard S. Sutton和Andrew G. Barto。该书可在http://www.incompleteideas.net/book/the-book-2nd.html免费获取)。
使用示例
初始化老虎机算法(几个示例)
// ε-greedy algorithm with 10 arms, ε=0.1, initial values of 0
let egreedy1 = EGreedy::new(10, 0.1, 0.0, UpdateType::Average));
// same ε-greedy but non-stationary with step size of 0.1
let egreedy2 = EGreedy::new(10, 0.1, 0.0, UpdateType::Nonstationary(0.1));
// Upper Confidence Bound with 10 arms and c=1
let ucb1 = UCB::new(10, 1.);
// Stochastic gradient with 10 arms, step size of 0.1, with baseline
let sg1 = StochasticGradient::new(10, 0.1, true);
反馈循环
// choose the best action according to the bandit algorithm
let action = ucb1.choose();
let reward = [...]; // using the action and computing the reward
// updates the bandit algorithm using the reward
ucb1.update(action, reward);
注意: 更详细示例和基准测试可以在rl-bandit-bench仓库中找到。
实现算法
- ε-greedy
- 乐观ε-greedy
- 上置信界(UCB)
- 随机梯度上升
- EXP3
库内容
- bandit.rs 实现老虎机算法所需的特质和辅助函数
- src/bandits: 包含实现的老虎机算法
依赖
~535KB
~10K SLoC