探索 vs 利用
多臂老虎机Multi-Armed Bandits
在「试新臂」和「榨取已知最优臂」之间权衡 —— ε-greedy、UCB、梯度老虎机,实时调参看学习曲线。
2.5 小时
阅读 + 实操
3 个
交互演示
入门
难度
多臂老虎机 · 交互演示
累计奖励+182
最优臂B
ε0.10
1.1 为什么从老虎机学起:探索 vs 利用
如果把强化学习压缩成一个最小问题,就是老虎机:10 根拉杆、每次拉一根、拿到一个奖励 —— 没人告诉你哪根杆最好。你的每个选择既是「赚钱」也是「收集信息」:这就是探索与利用的困境,贯穿整门课的核心矛盾。本章用三种经典算法在同一个老虎机上赛跑,让你亲眼看到不同的平衡策略如何收敛。
下一步预告:老虎机把「探索 vs 利用」压缩到单状态;下一章我们把它放进多状态的棋盘——从老虎机到 GridWorld,正式进入 MDP。
📌 发生了什么
- 每个臂有隐藏的真实均值奖励,只能靠采样估计
- ε-greedy 以概率 ε 随机选臂、否则选当前估计最优
- UCB 用「不确定性上界」更聪明地引导探索
- 梯度老虎机直接学每个臂的选择偏好
⚠️ 常见陷阱
- ε 太小会卡在次优臂(利用过头)
- ε 太大则永远在随机试,学不到稳定策略
- 用累积平均而非滑动窗口会抹平近期变化
✅ 本章小结
- 老虎机 = 单状态 MDP,是 RL 的最小实验台
- ε-greedy 简单有效,UCB 理论更优
- 权衡探索与利用贯穿全部 RL 算法
1.2 ε-greedy:用增量均值估价值
三种老虎机算法的核心更新规则:ε-greedy 用增量均值,UCB 加不确定性上界,梯度老虎机按偏好更新。
ε-greedy 增量更新:新估值 = 旧估值 + 步长 α × (新样本 - 旧估值)。当 α = 1/N(a) 时退化为样本均值;定常 α 则给近期样本更大权重。
1.3 UCB:给不确定的臂一个机会
UCB(上置信界):在估值基础上加一个随访问次数 N(a) 递减、随时间 t 递增的探索项。没试够的臂 N(a) 小,不确定性项大,从而被优先探索。
1.4 梯度老虎机:学偏好而不是估值
梯度老虎机:维护每个臂的偏好分 H(a),按 softmax 转成概率 π(a)。奖励高于基线 R̂ 时增大被选臂偏好、降低其他臂偏好,反之亦然。
1.5 探索率 ε 怎么选:天平上的砝码
ε 是探索-利用天平的砝码。太小锁死次优臂,太大浪费步数。下表对比三种典型取值在 10 臂老虎机上的表现。
| ε 值 | 表现 | 结果 |
|---|---|---|
| ε = 0(贪心) | 只拉当前最优臂,无任何探索 | 易锁死次优臂 |
| ε = 0.1 | 90% 利用 + 10% 探索,稳步逼近最优 | 推荐区间 |
| ε = 0.3 | 探索过多,大量步数浪费在差臂 | 过度探索 |
💡 实践中常让 ε 随时间衰减(如 ε = 1/t),前期多探索、后期多利用。
1.6 ε-greedy 核心代码走读
增量更新估值的核心代码(Python,与上方实时模式逻辑一致):
k = 10 # 臂数
eps = 0.1 # 探索率 ε
alpha = 0.1 # 步长 α
Q = np.zeros(k)
N = np.zeros(k)
for t in range(steps):
# 1. 选动作:ε 概率随机探索,否则贪心
if np.random.rand() < eps:
a = np.random.randint(k) # 探索
else:
a = np.argmax(Q) # 利用
# 2. 拉杆得到奖励 r
r = pull(a)
# 3. 增量更新估值
N[a] += 1
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 — 问题定义与算法综述
📝 课后练习
检验你的理解——答对为止