本节摘要:探索试新动作发现更优策略;利用选当前最优拿回报。ε-greedy、Softmax(Boltzmann)、乐观初值、UCB 是常见平衡手段。Q-learning 行为策略常 ε-greedy,目标策略是 greedy。
过度探索:随机乱走,样本浪费,收敛慢。
过度利用:永远选当前 max Q,错过更优路径——GridWorld 里困在次优出口。
以概率 ε 随机动作,1-ε 选 argmax_a Q(s,a)。
def epsilon_greedy(Q, s, eps, n_actions): if random.random() < eps: return random.randint(0, n_actions - 1) return max(range(n_actions), key=lambda a: Q[s, a])
| 策略 | 公式/规则 | 特点 |
|---|---|---|
| ε-greedy | ε 随机,否则 greedy | 简单;ε 固定 |
| Softmax | P(a)=exp(Q/τ)/Σexp(Q'/τ) | τ 大→探索多 |
| 乐观初值 | Q 初值很大 | 鼓励未访问 (s,a) |
| UCB | 选置信上界最大臂 | 多臂 bandit 经典 |
训练初期 ε 高(0.3–1.0),后期衰减到 0.05。Q 表未收敛就 ε→0 → 策略锁死在早期噪声。

⚠️ 常见坑:ε 不变——后期仍大量随机,回报曲线平台。
💡 关键直觉:Off-policy Q-learning 靠行为策略探索、更新用 max Q(s',·) 学最优。
ε-greedy 是最简单的探索策略,但参数怎么调、衰减怎么安排,是工程里最常踩坑的地方。这里给一套可操作的思路。
# 概念:ε 衰减调度(线性衰减示例) def epsilon_schedule(step, eps_start=1.0, eps_end=0.05, decay_steps=100_000): if step >= decay_steps: return eps_end progress = step / decay_steps return eps_start - progress * (eps_start - eps_end)
衰减的意义:训练初期对 Q 一无所知,几乎全靠随机探索(ε≈1);随着经验积累,Q 越来越可信,应该逐步加大"利用当前最优"的比例,最终把 ε 压到很小的值(0.05 左右)保证仍有少量探索。最典型的翻车方式是 ε 不衰减——训练后期每步仍有 30% 的概率随机乱走,智能体始终学不到精细策略,回报曲线在高位平台震荡。反过来,ε 衰减太快也会翻车:Q 还没收敛就只剩 2% 的探索,策略会被锁死在早期噪声估计上,形成"次优陷阱"。
探索陷阱的经典例子:GridWorld 里有远近两个出口,近出口奖励 +1,远出口奖励 +100。如果早期探索不足,智能体总是发现近出口就给分,Q 表把"走向近出口"估得很高;一旦 ε 快速降为 0,它就永远停在 +1 的次优解上——因为"远出口 +100"这条路没被充分探索过,Q 值一直是错的。这个例子解释了为什么 Q-learning 里"探索策略"与"目标策略"是分开的(off-policy):行为策略负责探索,目标策略贪婪,两不耽误。
Softmax(Boltzmann)的直觉:它把 Q 值按温度 τ 转成概率——τ 大时各动作概率接近均匀(更像探索),τ 小时概率集中到 Q 最大者(更像利用)。相比 ε-greedy 的"一刀切",Softmax 对"价值差"敏感:Q 差别小的动作概率接近,Q 明显更优的动作概率突出。代价是多一个要调的温度参数,且对 Q 值尺度敏感,工程上常用 ε-greedy 起步。
UCB 的适用边界:UCB 根据"平均奖励 + 不确定性上界"选臂,在多臂老虎机(bandit)里是最优策略之一;但它假设动作不改变状态(无状态转移),所以严格说只适用于 bandit 而非完整 RL。把 UCB 用在完整 MDP 上需要 UCB1 式的树搜索(如 AlphaGo 的 MCTS 思想),远超本教程范围——理解它的"置信上界"直觉即可。
把一个模糊的"ε 要衰减"落实成一份可执行的计划。场景:10×10 的格子寻宝,预计训练 20 万步。请按以下要素设计:初始 ε(建议 1.0,因为对 Q 一无所知);最终 ε(建议 0.05,保留少量探索防漏最优);衰减方式(线性衰减、指数衰减、分段常数,任选一种并写明理由);衰减拐点(什么时候开始降、什么时候降到最低)。写下计划后,再设计两个验证实验:实验一,固定 ε=0.5 永不衰减,跑同样的 20 万步,预期现象是什么(Q 无法精细收敛,后期回报平台震荡)?实验二,ε 从 1.0 在前 1 万步就骤降到 0.01,预期现象是什么(Q 没学完就锁死,策略停在早期噪声上)?
最后对照三个"训练症状 → 原因"的映射自检:曲线平台不升,看 ε 是否没降;曲线剧烈抖动,看 ε 是否降太快或学习率过大;策略死板只会走一条路,看最终 ε 是否降到了 0 而不是 0.05。把这份计划和两个实验写下来,探索与利用就从概念变成了你手中可调可验的参数。做实验时记住一点:探索不是"为了随机而随机",而是"为未来的信息付费"——好的探索策略应该让每次随机都有明确的信息收益,这也是 UCB 思想存在的理由。