3个稳定版本

1.0.2 2020年9月14日

#1971算法

每月26次下载
dogs 中使用

MIT 许可证

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