动手学强化学习

第 4 课 · 动态规划算法

对应《动手学强化学习》第 4 章 · 约 40 分钟(含动手实验)

本课目标 在白盒环境(已知 P 和 r)中用动态规划求解 MDP 最优策略。掌握策略迭代(策略评估 + 策略提升)和价值迭代两种算法,理解策略提升定理,并在悬崖漫步网格世界里亲眼看着价值传播、策略逐步变优。

1. 动态规划与强化学习

动态规划(DP)的思想:把问题分解为子问题,先解子问题并保存答案,再组合出原问题的解。对 MDP 来说,贝尔曼方程天然给出了这种递归结构——一个状态的价值由后继状态的价值导出。

前提条件(也是局限) DP 要求事先知道环境的状态转移函数 P 和奖励函数 r(白盒环境),且只适用于状态、动作都有限离散的 MDP。现实中白盒环境很少——这就是之后要学蒙特卡洛(第 5 章)、时序差分(第 6 章)等免模型方法的原因。

2. 悬崖漫步(Cliff Walking)环境

4×12 网格世界:起点在左下角,终点在右下角,之间是一段悬崖。每个状态可采取上、下、左、右四个动作,撞墙则原地不动。每走一步奖励 −1,掉入悬崖奖励 −100并结束(回到起点重新开始一幕也可以视为终止)。智能体要学会:绕开悬崖,用最短路径到达终点(最优回报 −13)。

3. 策略迭代

策略评估:算出一个策略有多好

把第 3 课的贝尔曼期望方程改成迭代形式——用上一轮的价值函数计算这一轮的:

Vk+1(s) = Σa π(a|s) [ r(s,a) + γ Σs' P(s'|s,a) Vk(s') ]

可以证明 k→∞ 时 Vk 收敛到 Vπ(不动点)。实践中当 max|Vk+1(s) − Vk(s)| < θ 时提前停止。

策略提升:让策略变得更好

已知 Vπ 后,在每个状态贪心地选动作价值最大的动作:

π′(s) = argmaxa { r(s,a) + γ Σs' P(s'|s,a) Vπ(s') }

策略提升定理保证:若所有状态满足 Qπ(s, π′(s)) ≥ Vπ(s),则 Vπ′(s) ≥ Vπ(s)——新策略只会更好不会更差。当提升后策略不再变化时,就得到了最优策略。

策略迭代 = 评估 ⇄ 提升 循环

π⁰ →评估 Vπ⁰ →提升 π¹ →评估 Vπ¹ →提升 π² → … → π*

4. 价值迭代:不要等评估收敛

策略评估往往要扫很多轮才收敛(书中悬崖漫步例子:5 次循环里评估总共扫了上百轮)。一个自然的想法:每轮评估只扫一遍就直接提升——这就是价值迭代。它直接迭代贝尔曼最优方程:

Vk+1(s) = maxa { r(s,a) + γ Σs' P(s'|s,a) Vk(s') }

价值迭代不维护显式策略,收敛后用一次 argmax 恢复出 π*。书中结果:同一环境下价值迭代只需 14 轮扫描,远少于策略迭代。当 γ<1 时贝尔曼最优算子是 γ-压缩算子,收敛性有严格保证(扩展阅读 4.7)。

5. 🧪 动手实验:在浏览器里跑动态规划

下面复现了书中实验(γ=0.9,θ=0.001)。建议玩法:

  1. 选策略迭代,连续点"更新一轮",看价值(数字与蓝底深浅)如何从起点向全网格传播;评估收敛后自动触发一次策略提升,策略箭头会瞬间变化——数数几轮循环后收敛(书中 5 轮);
  2. 重置后切价值迭代,"跑到收敛",对比扫描轮数(书中 14 轮);
  3. 收敛后点▶ 播放最优路线:智能体会先向上再向右沿崖顶走最短路径,回报 −13。
观察要点

6. 冰湖环境:随机转移下的最优策略

书中 4.5 节还在 Gym 的冰湖(Frozen Lake)上验证了两种算法:4×4 网格、冰面打滑——每个动作会等概率滑向 3 个相邻状态(转移是随机的),到达目标奖励 +1,掉冰洞结束。结果两算法得到完全一致的价值与策略(例如 V ≈ [0.069, 0.061, 0.074, …, 0.639])。有趣的是最优策略看起来"反直觉":目标左边一格最优动作是向下而非向右——因为打滑可能把你滑到更难走的位置,向下更保险。这说明策略必须适应环境的随机性。

检查你的理解

1. 动态规划算法的适用前提是?
2. 策略评估使用的是哪个方程的迭代形式?
3. 价值迭代可以看作什么?
4. 策略提升定理保证了什么?
5. 悬崖漫步最优路线的回报是多少?

练习(书后习题方向)

① 把 γ 改成 0.5 会怎样?思考:更短视的智能体会不会更愿意绕远路避开悬崖?(提示:修改组件源码中的 GAMMA 即可实验)

② 为什么价值迭代不存在"显式策略"也能得到最优策略?从贝尔曼最优方程的不动点角度解释。

③ 冰湖中最优策略为何在目标左侧选择"向下"?用打滑概率解释。

推荐的原始资源

《动手学强化学习》第 4 章与完整代码:hrl.boyuai.com 第 4 章。收敛性证明细节见书中 4.7 节。

💡 有不懂的地方随时回对话问你的 AI 老师。

← 返回课程目录