探索 vs 利用
多臂老虎机Multi-Armed Bandits
在「试新臂」和「榨取已知最优臂」之间权衡 —— ε-greedy、UCB、梯度老虎机,实时调参看学习曲线。
2.5 小时
阅读 + 实操
3 个
交互演示
入门
难度
多臂老虎机 · 交互演示
累计奖励+182
最优臂B
ε0.10
为什么学这步?
强化学习的第一个核心矛盾就藏在老虎机里:你不知道每个臂的真实回报,只能在「试新」和「吃老本」之间找平衡。它把后续所有 RL 算法的探索—利用难题压缩到了极简形式。
📌 发生了什么
- 每个臂有隐藏的真实均值奖励,只能靠采样估计
- ε-greedy 以概率 ε 随机选臂、否则选当前估计最优
- UCB 用「不确定性上界」更聪明地引导探索
- 梯度老虎机直接学每个臂的选择偏好
⚠️ 常见陷阱
- ε 太小会卡在次优臂(利用过头)
- ε 太大则永远在随机试,学不到稳定策略
- 用累积平均而非滑动窗口会抹平近期变化
✅ 本章小结
- 老虎机 = 单状态 MDP,是 RL 的最小实验台
- ε-greedy 简单有效,UCB 理论更优
- 权衡探索与利用贯穿全部 RL 算法
📐 估值更新与策略公式
三种老虎机算法的核心更新规则:ε-greedy 用增量均值,UCB 加不确定性上界,梯度老虎机按偏好更新。
ε-greedy 增量更新:新估值 = 旧估值 + 步长 α × (新样本 - 旧估值)。当 α = 1/N(a) 时退化为样本均值;定常 α 则给近期样本更大权重。
UCB(上置信界):在估值基础上加一个随访问次数 N(a) 递减、随时间 t 递增的探索项。没试够的臂 N(a) 小,不确定性项大,从而被优先探索。
梯度老虎机:维护每个臂的偏好分 H(a),按 softmax 转成概率 π(a)。奖励高于基线 R̂ 时增大被选臂偏好、降低其他臂偏好,反之亦然。
🎛 ε 探索率对比
ε 是探索-利用天平的砝码。太小锁死次优臂,太大浪费步数。下表对比三种典型取值在 10 臂老虎机上的表现。
| ε 值 | 表现 | 结果 |
|---|---|---|
| ε = 0(贪心) | 只拉当前最优臂,无任何探索 | 易锁死次优臂 |
| ε = 0.1 | 90% 利用 + 10% 探索,稳步逼近最优 | 推荐区间 |
| ε = 0.3 | 探索过多,大量步数浪费在差臂 | 过度探索 |
💡 实践中常让 ε 随时间衰减(如 ε = 1/t),前期多探索、后期多利用。
💻 ε-greedy 核心循环
增量更新估值的核心代码(与上方 Live 模式逻辑一致):
const k = 10; // 臂数
const eps = 0.1; // 探索率 ε
const alpha = 0.1; // 步长 α
let Q = new Array(k).fill(0);
let N = new Array(k).fill(0);
for (let t = 0; t < steps; t++) {
// 1. 选动作:ε 概率随机探索,否则贪心
let a;
if (Math.random() < eps) {
a = Math.floor(Math.random() * k); // 探索
} else {
a = argmax(Q); // 利用
}
// 2. 拉杆得到奖励 r
const r = pull(a);
// 3. 增量更新估值
N[a]++;
Q[a] += alpha * (r - Q[a]);
}
📚 参考文献与延伸阅读
- Sutton & Barto, Reinforcement Learning (2nd ed.), §2 Multi-armed Bandits — ε-greedy、UCB、梯度老虎机的完整论述
- Auer, Cesa-Bianchi & Fischer (2002), Finite-time Analysis of the Multiarmed Bandit Problem — UCB1 算法与遗憾界证明
- Wikipedia: Multi-armed bandit — 问题定义与算法综述
📝 课后练习
检验你的理解——答对为止