01 / 别把“知道环境”与“靠经验学习”混在一起
同一个网格,四种更新方式
| 方法 | 知道完整转移规则? | 何时能更新? | 本节学习什么 |
|---|---|---|---|
| 价值迭代 | 知道 | 可直接枚举所有状态和动作 | 最优状态价值 V* |
| 蒙特卡洛(MC)预测 | 不需要 | 整回合结束,得到完整回报 | 固定策略的 Vπ |
| TD(0) 预测 | 不需要 | 每经历一步,就用下一状态估计 | 固定策略的 Vπ |
| Q-learning 控制 | 不需要 | 每经历一步,更新 Q(s,a) | 用于选择动作的 Q 表 |
还是第十四节的网格:S 向右到 C 立即拿 +2 并结束;向下经过 A、B、D 再到 G,末尾拿 +10。动作撞墙或越界会原地停留且奖励 0。折扣因子 γ 决定从 S 看哪条路更好。
02 / 已知环境时如何规划
价值从奖励处一轮轮向前传播
把所有状态的 V₀ 设为 0。每轮对每个非终止状态同时做一次 Bellman 最优备份,使用的是上一轮的数值;终止状态 C/G 价值设为 0,因为奖励已经在进入它们的转移上给出。切换 γ 和轮数,观察 G 的 +10 怎样传回 S。
γ=0.8:第 1 轮 D 因可直接到 G 获得价值 10;第 2 轮 B 看见 D 的价值;第 3 轮 A 看见 B;第 4 轮 S 才把“向下通往 G”的价值提高到 5.12,超过立即拿 2。γ=0.5 时,S 保持 2 更好。
03 / 不知道转移表,只能经历一回合
MC 等最终结果;TD 先借用已有估计
为了只比较更新规则,固定策略为 S↓A→B→D→G,奖励始终是 0,0,0,10,γ=0.8,学习率 α=0.5,初始 V 都是 0。这里是预测 Vπ,尚未改进策略。
第一回合结束后,MC 已知道从 S 出发的完整回报 5.12,所以 V(S) 变成 2.56;TD 第一回合走到 S→A 时 V(A) 仍是 0,所以 V(S) 仍是 0,直到后续回合把价值逐步传回来。TD 的优势是不用等回合结束就能更新,不是说第一次就一定学得更快。
04 / 从 V 转向状态—动作对
Q-learning 每经历一步,就修正一个表格单元
Q 表的行是状态 S/A/B/D/C/G,列是右、下、上、左,形状 (6,4)。下面这个独立数字例子允许你切换“下一状态是否终止”,从而看清为什么终止时不能继续加未来价值。
演算固定 Q旧(s,a)=1、γ=0.8、α=0.5、max Q(s',·)=5。代码训练时使用同一更新式;动作来自 ε-greedy 行为策略。收集数据可以探索,而更新目标仍选下一状态的最大 Q,这正是后面说的 off-policy 含义。
05 / 真正训练 6 张 Q 表
训练时探索,评估时关闭探索
代码分别用 γ=0.5/0.8、ε=0/0.1/0.3 训练 800 回合,每步按 ε-greedy 选动作;最多走 20 步。每次都从 S 开始,固定随机种子方便重现。下方“贪心评估”把 ε 设为 0,从 S 实际走一回合。
随机基线是不学习、四方向均匀随机,评估 300 回合并取平均;贪心评估来自本次训练后的 Q 表。在这个确定性网格里,同一张 Q 表的贪心路线每次相同。训练回合的平均回报仍包含 ε 探索动作,不等于关闭探索后的评估回报。
06 / 表格不是抽象符号
逐行读出最终 Q(s,a) 与实际路线
下表显示你在上一节训练面板选中的 800 回合末Q 表;改变 γ 或 ε 可观察差异。每行最高的动作就是贪心动作,平手按“右、下、上、左”的顺序选择。C/G 是终止格,不再选动作。
如果你把 γ 改为 0.5,走到 G 的起点折扣回报只有 1.25,因此即使知道长路线,起点选右拿 2 仍是合理策略。若 γ=0.8 且训练中探索到了长路线,Q(S,下) 可以超过 Q(S,右)。
07 / 同是 TD 控制,目标可不同
SARSA 跟随实际下一动作;Q-learning 取下一状态最大值
看一个独立数字例子:当前 Q(s,a)=1、r=0、γ=0.8、α=0.5;下一状态的最大 Q 为 5。如果行为策略因探索真的选了一个 Q=1 的动作,SARSA 用 1,Q-learning 仍用 5。
“on-policy”在这里指 SARSA 更新时跟着正在采样的行为策略所选下一动作;“off-policy”指 Q-learning 即使从探索行为采样,也朝下一状态的贪心最大值更新。这个小数例子用于对照公式,不是上面训练所得的某个真实 Q 行。
08 / 自己改代码
用项目已有的 NumPy 重跑与验证
代码沿用第十四节的网格,输出价值迭代各轮、固定策略 MC/TD、6 组 NumPy Q-learning、随机基线及贪心评估。无新依赖,也不需要启动服务。
uv run python lessons/lesson-15-tabular-rl.py- 手算 γ=0.8 时价值迭代前四轮 V(S)、V(A)、V(B)、V(D),再用页面核对。
- 解释为什么同一条长路线第一回合后,MC 的 V(S)=2.56,而 TD 的 V(S)=0。
- 从 Q-learning 循环找出行为策略、TD 目标、更新公式和终止判断,并预测删掉终止判断会出现什么问题。
- 将训练 ε 从 0 改为 0.1,比较 γ=0.8 的贪心评估路线;再把 γ 改成 0.5,解释起点策略变化。
- 改随机种子重跑,不用一次结果概括算法性能;记录贪心终点与随机基线。
09 / 自测