01 / 学习范式的变化
预测一个答案,还是选择一连串行动?
样本带标签。例如看一张图,目标是预测“猫”。训练时可直接比较预测与标签。
智能体在状态中选动作,环境返回新状态和奖励。单步动作不一定有“正确标签”;好坏要看之后的累计回报。
本节是独立的序列决策练习,不把强化学习只当成语言模型偏好训练。先学清状态、回报和策略,再在下一节写 Q-learning。
02 / 和环境交互
右边立刻 +2;下方绕路最后 +10
起点是 S。走进 C 立即拿 2 分并结束;走进 G 拿 10 分并结束。A、B、D 是没有即时奖励的通道;# 是墙,撞墙或越界会留在原地,奖励 0。终止后要重置才能开始新回合。
状态可用格子名称表示;动作由智能体选;转移和奖励由环境给。你可以试“起点向上”:因为越界,下一状态仍是 S,奖励 0。
03 / 别只看眼前的 2 分
折扣因子 γ 决定远处的奖励值多少
两条路线的奖励序列固定:即时路线为 [2];延迟路线为 [0, 0, 0, 10]。这里第 0 步的奖励不打折,第 3 步的奖励乘 γ³。改变 γ,看你对未来奖励的重视程度如何影响起点选择。
γ=0.5 时,延迟路线回报 1.25,低于即时 2;γ=0.8 时是 5.12,高于 2。它比较的是从起点出发的整条路线,不是最后一步“10 比 2 大”这么简单。
04 / 给环境一个数学名字
马尔可夫性质:当前状态足够描述下一步
在这个例子中,只要知道当前位置和动作,就能确定下一格与奖励;之前是怎样走到这里的,不改变下一步规则。这是马尔可夫性质。环境加上状态、动作、转移概率和奖励规则,构成一个马尔可夫决策过程(MDP)。本例是确定性的,所以目标下一状态的概率为 1。
“马尔可夫”不等于“环境一定确定”。真实 MDP 可以随机转移;只要求给定当前状态和动作后,下一步分布不再额外依赖更早的历史。若状态没有包含决定未来所需的信息,这个状态表示可能不是马尔可夫的。
05 / 从一条路线走向一个策略
V 看状态,Q 看状态加动作
策略 π 规定每个状态如何选动作。Vπ(s) 是从状态 s 开始按 π 行动的期望累计回报;Qπ(s,a) 是先做动作 a,再按 π 行动的期望累计回报。上标 * 表示最优策略。本例确定,且本页 γ 都在 0.5~0.95 范围内,长路线后续选择一直向右是到 G 的最优延续。
从 S 向右立刻到终点 C,所以没有未来价值;向下第一步奖励 0,但会来到 A,再沿通道到 G。这个“即时奖励 + 折扣后的下一状态价值”就是 Bellman 关系的核心。下一节会用它更新未知的价值估计。
06 / 奖励在最后才出现
起点向下为什么也该“记一功”?
延迟路线前三步都是 0 分,最后一步才拿 10 分。如果只按每一步即时奖励评价,起点向下看起来毫无用处;但它使之后到达 G 成为可能。把末尾奖励沿整条轨迹折回去,前面的动作才会得到适当的评价。
这里直接展示每个位置的实际后续回报,环境与路线都已知。真正学习时,智能体可能不知道转移或最终奖励,需要靠探索获得经历,再估计这些值;这就是“信用分配”问题的一个小例子。
07 / 不试就永远不知道
探索与利用:在起点选整条路线的简化实验
假设智能体起初只知道两条路线的估计都是 0,平手先选即时路线。每个回合它在起点选一条路线,走完后才看到从起点算的回报;估计值是该路线已观察回报的平均值。以 γ=0.8 运行 30 回合。
橙色边框表示那回合触发了随机探索,绿色底表示选了长路线。随机探索也可能碰巧选到当前已知的较好路线,所以“触发探索”和“实际选长路线”不是一回事。固定种子只为让页面记录可复现;单次 30 回合结果不能当作算法优劣结论。
08 / 代码与验收
自己验证网格规则和回报
配套代码使用 Python 标准库,生成两条路线的逐步奖励、状态转移表和起点探索实验。代码内部还核对 Bellman 值,但下一节才系统学习价值迭代与 Q-learning。无需下载任何环境或启动服务。
uv run python lessons/lesson-14-rl-basics.py- 写出 S、A、B、D、C、G 分别表示什么;手动走一次两条终止路线。
- 手算 γ=0.8 时延迟路线从起点的回报,以及从 B 出发沿路线向右的回报。
- 说明为什么 γ=0.5 时起点选右,而 γ=0.8 时选下;求两条路线相等时的 γ。
- 解释
P(s'|s,a)=1在本例中的意思。把撞墙的情况也写成一个转移。 - 比较 ε=0 与 ε=0.2 的 30 回合记录,说明为什么不探索可能一直不知道长路线更好;不要把这段路线选择实验误称为 Q-learning。
09 / 自测