RL COLLECTION / 04 / CONTROL & EXPLORATION

控制与探索:
怎样从“估值”走向“自己变好”?

价值函数只会评价;控制(control)才会改变策略。关键矛盾是:既要按当前判断选好动作,又要承担短期损失去试那些尚不确定的动作。

FIRST TERMS · CONTROL

这课的名字不是算法名,而是一个决策问题。

术语全称 / 白话含义它要解决什么
Control(控制)不再固定策略 π,而是不断改它,直到得到高 return 的策略。从“这条策略好不好”变成“怎样找到更好策略”。
Exploration(探索)主动尝试不确定的动作,收集新的证据。避免过早相信一个偶然看起来好的动作。
Exploitation(利用)选择当前估计价值最高的动作。把已有知识变成当前 reward。
ε-greedy以 1−ε 概率利用,以 ε 概率随机探索;ε(epsilon)是探索率。用一个可调旋钮平衡探索与利用。
本课先记一句

评估是在固定策略下估价值;控制是用估到的价值反过来改策略。探索不是“乱走”,而是为了降低对动作价值的不确定性而付出的信息成本。

LEARNING TARGET

学完后,你能解释 Q-learning 为什么能学会选动作,也能指出它何时会冒险过头。

完成目标直接应用为后续铺路
区分 policy evaluation 与 control;从 Q(s,a) 推出 greedy 改策略。阅读离散动作的 RL 训练循环,知道行为选择与价值更新各在做什么。DQN、Actor-Critic 与 policy gradient 都是在更大空间做“评估 + 改进”。
按 target 区分 SARSA 与 Q-learning,理解 on-policy / off-policy。根据“训练时会不会探索”和“部署时要不要保守”选择合理算法与评估协议。理解 replay buffer、offline RL 与 importance sampling 的前提。
用 ε-greedy 设计最小探索实验,并看懂最大化偏差。诊断卡在局部路径、早停探索、线上 reward 高估等现象。Double DQN、UCB、entropy bonus、PPO 的探索设计。

FROM EVALUATION TO CONTROL

有了 Q,为什么就能“改策略”?

Lesson 02 的动作价值 Qπ(s,a) 回答的是:“现在在状态 s 先做 a,之后继续遵循当前策略 π,平均能拿多少长期回报?”如果同一状态里 Q(s,right)=7、Q(s,down)=2,最朴素的改进就是让策略更偏向 right:

πnew(s) = argmaxa Qπ(s,a)argmax 读作“让后面的值最大的动作”。它输出动作,不输出那个最大数。这个选择叫 greedy(贪心)——只利用当前估计。
policy evaluation估计 Vπ 或 Qπpolicy improvement按 Q 让 π 更好Qπ(s,a) → choose better anew policy produces new experience → evaluate againGeneralized Policy Iteration(广义策略迭代)

这叫 Generalized Policy Iteration(GPI,广义策略迭代):评估和改进不必各自完全收敛才切换;它们可以一边收集经验、一边互相推动。SARSA、Q-learning、actor-critic 都是这个循环的不同实现。

WHY EXPLORE

只选当前最大的 Q,为什么会失败?

假设一个新状态有两个动作。你第一次随机试 A 得到 +1,试 B 时恰好遇到噪声得到 −1。若从此永远 greedy,就会认定 A 更好,永远不会发现 B 的真实平均收益可能是 +10。这不是实现 bug,而是数据由策略自己生成的后果。

选择规则当前 Q(A)=4,Q(B)=7优点风险
pure greedy总选 B当前即时表现最好。不再获得 A 的新证据,早期错误无法纠正。
ε-greedy,ε=0.190% 选 B;10% 随机选 A 或 B规则极简单,所有动作持续有被尝试的机会。即使已经确定 B 更好,也会偶尔做明显较差动作。
softmax / UCB(后续)按价值或不确定性分配概率探索更有针对性。需要额外假设、温度或不确定性估计。
πε-greedy(a|s) = 1−ε+ε/|A|(若 a 是当前最佳动作);ε/|A|(其他动作)|A| 是动作数量。即便是最佳动作也可能在随机探索时被选中,所以概率不是单纯的 1−ε。
实验时要记录什么

不要只看训练 reward。至少同时画:① ε 随时间的曲线;② 训练时带探索的 return;③ 评估时 ε=0 的 greedy return;④ 每个动作的被选次数。否则“训练 reward 低”可能只是探索很多,而不是策略变差。

TWO TD CONTROL ALGORITHMS

SARSA 与 Q-learning 只差一个 target,却在学习不同策略。

两者都使用 Lesson 03 的 TD 思路,维护一张 Q 表并每看见一步 transition 就更新。最关键问题不是名字,而是 target 中“下一步的动作”由谁决定。

算法全称 / target它评估谁名称怎么来的
SARSAState–Action–Reward–State–Action
Q(s,a) ← Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]
实际会执行的 ε-greedy 策略。一条经验正好按 s,a,r,s′,a′ 五个量排列。
Q-learningQ 值学习
Q(s,a) ← Q(s,a)+α[r+γ maxa′Q(s′,a′)−Q(s,a)]
假设后续总选最优动作的 greedy 策略。核心是直接学习最优动作价值 Q*。
同一条经验:s,a,r,s′SARSAtake actual a′r + γ Q(s′,a′)跟随实际探索动作Q-learningignore actual a′r + γ max Q(s′,·)假设随后完全贪心SARSA:学“我真的会怎样走”Q-learning:学“若以后不探索,最好能怎样走”

ALGORITHM ANATOMY

不要背更新式:把一次更新拆成五个机械步骤。

表格型 TD 控制没有“神秘训练”。它维护的是一个可写入的数表 Q;每到一条 transition,就构造一个对长期回报的局部承诺(target),再只把对应表格单元向该承诺移动一小步。

步骤程序里发生什么数学上发生什么为什么需要
1 · 取动作用 ε-greedy 从 Q[s,*] 选 a。行为策略 μ(a|s) 决定数据分布。既拿当前收益,也确保每个动作仍有机会被看到。
2 · 交互环境返回 (s′, r, done)。采到一次 p(s′,r|s,a) 的样本。模型未知时,不能直接枚举所有后继,只能采样。
3 · 选 target 的后半段SARSA 选实际 a′;Q-learning 取 max Q[s′,*]。分别写成 Q(s′,a′) 或 maxa′Q(s′,a′)。这一行决定了它学实际策略还是 greedy 目标策略。
4 · 形成 TD errordelta = target - Q[s,a]。δ = r + γ·next_value − Q(s,a)。把“当前预测错多少”变成带方向的学习信号。
5 · 局部写回Q[s,a] += alpha * delta。Q ← (1−α)Q + α·target。α∈(0,1] 是旧信息与新证据的权重,不是随便加的系数。
Qnew(s,a) = (1−α)Qold(s,a) + α[r + γ · next_value]这揭示了更新本质:不是把 Q “改成一次样本”,而是在旧估计与新 target 之间做加权平均。α=1 完全相信本次 target;α 很小则缓慢累计证据。

ONE EPISODE, BY HAND

同一条轨迹,SARSA 与 Q-learning 从哪一步开始分叉?

设 γ=0.9、α=0.5。环境有 A → B → terminal:从 A 执行 go 到 B,reward=0;在 B 执行 safe 后终止并得到 +4。初始 Q 全为 0,但假设过去的噪声经验使 Q(B,risky)=5,而 Q(B,safe)=0。当前 ε-greedy 在 B 实际选中了 safe。

看到的 transitionSARSA target 与更新Q-learning target 与更新这一步揭示什么
A, go → r=0, B
实际下一动作是 safe
target=0+0.9·Q(B,safe)=0
Q(A,go)=0+0.5(0−0)=0
target=0+0.9·max(0,5)=4.5
Q(A,go)=0+0.5(4.5−0)=2.25
SARSA 把“我真的会选 safe”带进 target;Q-learning 不管实际动作,追随当前最大估计 risky。
B, safe → r=+4, terminaltarget=4(终止后 next_value=0)
Q(B,safe)=0+0.5(4−0)=2
同样 target=4
Q(B,safe)=2
终止 transition 没有未来价值,两者一致。
下一次再访问 A → B,且仍选 safetarget=0+0.9·2=1.8
Q(A,go) 从 0 向 1.8 移动
若 risky 的虚高值仍最大,仍向 4.5 移动bootstrap 会把 B 的新信息逐次向 A 传播;Q-learning 的 max 也会放大幸运噪声。
不要从这个例子得出错误结论

它不是说 SARSA 总更安全、Q-learning 总更差。它只隔离了一个机制:同一份数据,target 的后半段不同,学习对象就不同。若 Q(B,risky)=5 真实可靠且部署时不探索,Q-learning 的乐观 target 反而可能更接近目标策略。

WHAT THE ALGORITHM ASSUMES

“会收敛”不是无条件承诺。

经典表格收敛讨论需要为什么现实里破坏它会怎样
有限的 MDP 与有界 rewardQ 表必须可被反复覆盖,return 也应有稳定尺度。连续/极大状态空间装不进表,要进入函数近似与 DQN。
所有 (s,a) 被充分访问没尝试过的动作没有证据,无法知道其真实价值。ε 太早归零、稀疏奖励,会造成错误价值永远没有机会修正。
步长满足“逐渐但不停学习”的条件理论上通常要求累计步长足够大、平方累计有限,以平均掉随机噪声。固定 α 适合非平稳任务的持续适应,却不等同于经典的精确收敛保证。
表格 + 合理采样的组合Q-learning 的证明依赖特定的 tabular 设置。函数近似、bootstrap、off-policy 混在一起会形成 deadly triad,可能发散。

因此真实实验的正确问法不是“Q-learning 收不收敛”,而是:在这个状态表示、探索日程、步长、数据分布与函数近似下,它的评估 return、Q 值尺度和覆盖度是否共同支持收敛的证据?

ON-POLICY VS OFF-POLICY

“用什么行为采数据”与“要学谁”可以相同,也可以分开。

概念行为策略(behavior policy)目标策略(target policy)本课例子
On-policy(同策略)产生数据的策略要被评估/改进的同一策略SARSA 用 ε-greedy 行动,也把这个会探索的 ε-greedy 当作学习对象。
Off-policy(异策略)可以更嘈杂、更旧或来自别人的策略另一个目标策略Q-learning 用 ε-greedy 收集数据,却用 max 学 greedy 目标策略。
悬崖行走的直觉

若到终点的最短边路旁就是悬崖,Q-learning 的 target 假设“以后总能完美 greedy”,因而可能偏好贴边最短路;SARSA 把将来偶尔 ε-greedy 失手也算进去,常会学到离悬崖更远的安全路。这不是谁绝对正确,而是目标策略不同。

ALGORITHM DEEP DIVES

两条 TD control 路线必须各自推到尽头,不能只做一张对比表。

READ THE CODE

先读 Q-learning 的数据流,不必先背每个变量。

initialize Q(s, a) = 0
for each episode:
    s = env.reset()
    while not done:
        a = epsilon_greedy(Q, s, epsilon)  # behavior: 收集数据
        s_next, r, done = env.step(a)
        next_value = 0 if done else max_a(Q[s_next, a])  # target: greedy
        td_target = r + gamma * next_value
        Q[s, a] += alpha * (td_target - Q[s, a])
        s = s_next

把第 6 行的 max_a(Q[s_next, a]) 换成“实际按 ε-greedy 选出的下一动作 a_next 的 Q[s_next,a_next]”,并让循环带着 a_next 前进,就得到 SARSA。唯一实质差异仍是 target。

变量不是它什么本课中它的作用
α(alpha,步长)不是探索率。一次 TD error 写回 Q 表的幅度。
γ(gamma,折扣)不是学习率。定义远期 reward 在 target 中有多重。
ε(epsilon,探索率)不是随机环境概率。定义行动时有多频繁故意不选当前最佳动作。

WHAT CAN GO WRONG

最大化偏差:max 会偏爱噪声中的幸运值。

若两个动作真实价值都为 0,但估计里一个因噪声是 +1、另一个是 −1,max 总挑 +1。反复如此,Q-learning 的 target 容易系统性偏高。它并不是“max 写错了”,而是同一组带噪估计既负责挑最大,又负责评估被挑中的那个。

症状

估计 Q 不断升高,实际评估 return 却没同步变好;或在随机 reward 环境里看起来异常乐观。

下一课的修复线索

Double Q-learning / Double DQN 会把“选择动作”和“评价动作”分给相对独立的估计器,降低这个偏差。

另一个常见错误是只把 ε 线性降到 0:在非平稳环境、稀疏奖励或新状态不断出现的任务中,完全停止探索可能使性能退化。调 ε 是实验假设,应记录和比较,而不是默认一个“标准答案”。

CHECK YOUR UNDERSTANDING

先判断 target,再判断它在学谁。

01 · 当前 s′ 上 Q(s′,left)=4、Q(s′,right)=9,行为策略因 ε-greedy 实际选了 left。Q-learning 与 SARSA 的下一步价值各用多少?

Q-learning 用 max=9;SARSA 用实际动作 left 的 4。前者学习 greedy target policy,后者学习实际会探索的 behavior policy。

02 · ε=0.2、三个动作,当前 greedy 动作被选中的概率是多少?

0.8 + 0.2/3 ≈ 0.867。80% 是直接利用,20% 的随机探索中也有三分之一会恰好选到它。

03 · 为什么“训练 return 下降”不一定表示策略退化?

若 ε 增大或尚未衰减,训练时刻意随机探索会拉低实际回报。必须分开报告探索行为的训练 return 与 ε=0 的评估 return。

NEXT

下一课:Q 表装不下时,DQN 为什么会不稳定?