强化学习数学原理:从MDP到贝尔曼方程的算法进阶指南
发布时间:2026/10/3 5:34:53 锦皓数字建站

简介西湖大学赵世钰教授的英文专著《强化学习的数学原理》从数学视角系统梳理强化学习核心理论适合具备一定线性代数与概率论基础的研究生、工程师及研究者。全书以网格世界引入基本概念逐步讲解状态值与贝尔曼方程、最优状态值与贝尔曼最优性方程、值迭代与策略迭代进而覆盖蒙特卡洛方法、随机近似、时间差分、值函数近似、策略梯度及Actor-Critic方法附录补充序列收敛性分析章节间逻辑连贯、案例丰富。资源为单个PDF文件大小18.9MB纯英文完整书稿便于离线阅读。目前已有833人学习浏览读者普遍认为推导细致、从零起步。通过本书可理解强化学习算法背后的数学动机与收敛性条件掌握从理论到算法设计的完整链路为后续研究或工程落地打下扎实基础。1. 为什么一本数学书比任何代码教程更能拯救你的强化学习如果只靠照着开源库调参强化学习项目的上限会很低。你能在一周内跑通 PPO但改一个 reward 函数后整个训练崩溃时往往既不知道看哪个公式也不知道哪个超参数动了本质。西湖大学赵世钰老师的《强化学习的数学原理》恰好把这条链路补上了它不教怎么调库而是从马尔可夫决策过程开始把回报、价值函数、贝尔曼方程这些底账一层层写清楚。适合两类人一类是从 Python 转强化学习、代码能跑但数学没系统过一遍的工程派另一类是数学基础好但没时间系统啃论文的从业者。这本书把“为什么这样做”推到台前把代码实现留给你自己动手做。2. 全书地基MDP、回报、价值函数与贝尔曼方程的矩阵化2.1 从马尔可夫链到MDP为什么有限状态假设是全书推演前提强化学习问题一旦脱离状态转移的数学描述后面的一切推导都没有抓手。赵世钰老师在书中把马尔可夫决策过程MDP当作全书起点用状态集、动作集、奖励函数和转移概率四元组把问题的边界画死。这里的关键不是“接受这个定义”而是理解他为什么坚持从有限状态空间说起。一旦有限价值函数就不是函数而是一个向量策略也不是抽象分布而是一张有限矩阵。比如状态数 n动作数 m那么转移矩阵 P 就是 n×n策略矩阵是一个 n×m 的矩阵策略梯度中的概率项也都有明确的代数载体。后续所有证明可以靠矩阵乘积和求逆展开而不需要引入测度论和函数空间的概念。对工程背景读者来说这就是降低门槛的明智一步你先在有限状态上把每条推论吃透再接触连续状态时只需要把“向量”换成“函数”“矩阵”换成“算子”主干推导路径完全不变。这个有限假设也会直接影响后续章节对算法的选取逻辑。书中大部分无模型算法都以表格型为起点也就是为每一个状态或状态-动作对单独维护一个数值再随训练逐步更新。表格型方法在数学上干净但一旦状态数巨大更新效率和存储都会出问题。于是你会自然理解为什么后来的函数逼近和深度神经网络必须登场。这个“从表格到函数”的递进顺序比很多上来就讲 DQN 的教材扎实得多。2.2 状态价值与动作价值两种函数如何通过策略衔接价值函数是强化学习的心脏。书中引入两个核心量状态价值 v_π(s) 和动作价值 q_π(s,a)。两个定义式都是条件期望两者只差一个“在状态 s 处先指定动作 a 再往后走”的条件。工程上最常见的困惑是既然 q 包含了动作那一层信息为什么还要定义 v答案是理论分析把 v 当作目标算法迭代把 q 当作操作对象。给定策略 π 时两者关系式是 v_π(s) Σ_a π(a|s) q_π(s,a)。这个加法表明状态价值本质上是动作价值关于策略的期望。如果没有策略约束最优价值满足 v_(s) max_a q_(s,a)即你每个状态都挑使动作价值最大的动作就得到最优状态价值。这一升一降的关系是后续所有强化学习算法设计的基本约束条件。赵世钰对这些公式的处理有一个容易被忽略的好处他把每个等式的成立条件写得很清楚。哪些推导依赖 MDP 的马尔可夫性质哪些依赖策略的类型哪些只在无限时域折扣回报下成立书里都做了区分。读者在自学时如果能把每一节后面那些条件句都读进去而不是只看中间的等号就能避免后面 70% 的符号纠缠。2.3 贝尔曼方程的矩阵写法把 MDP 变成不动点问题分量形式的贝尔曼方程是强化学习的入门公式v_π(s) Σ_a π(a|s) [ R(s,a) γ Σ_{s} P(s|s,a) v_π(s) ]这个式子看起来需要为每个状态展开求和非常繁琐。赵世钰书里最鲜明的处理手法就是把有限状态下的贝尔曼方程压缩为一条矩阵向量方程v_π r_π γ P_π v_π在这条等式里v_π 是 n 维向量r_π 是策略 π 下的期望即时奖励向量P_π 是该策略下的状态转移矩阵。经整理得到 (I - γP_π) v_π r_π理论解为 v_π (I - γP_π)^{-1} r_π。这一下把问题纳入了线性代数的范畴也带来了三种可落地的求法方法核心操作适合场景典型限制直接求逆对 (I-γP) 取逆后乘 r状态数极小矩阵过大时 O(n³) 不可用线性迭代v_{k1} r γP v_k中等规模、需快速实现γ 接近 1 时收敛慢策略迭代评估与改进交替策略需要强收敛保证每轮评估成本高这三种求法对应的实际意义各不相同。直接求逆适合课堂演示和几十个状态的玩具问题线性迭代适合小规模机器人的动力学模型策略迭代则是把价值评估与策略改进拆成两步成为后文价值迭代和深度强化学习算法的思想来源。我建议你把这一页的内容当作书的“总纲”记住后面蒙特卡洛、时序差分、Q-learning其实都是在做同一件事——用不同手段逼近这个不动点方程的解。我想强调一下为什么这个矩阵视角对工程派重要。入门时你是不是经常听说“强化学习算法炼丹”说得不好听如果只看开源实现确实像炼丹因为你看不到每一步在逼近哪一个数学量。但从贝尔曼方程的矩阵形式出发你会清楚地看到任何时域差分更新都是在朝 (I-γP)vr 的不动点靠近。所谓 reward shaping 的最终作用、γ 的选择、学习率 α 的衰减都可以在这个线性代数框架里找到对应的几何意义。这本书真正的价值不在于罗列算法而是给了你这样一个视角所有算法都只是不同约束条件下的求根工具。3. 从矩阵求解到采样逼近动态规划、蒙特卡洛、时序差分的主线3.1 有模型时的精确解策略迭代与价值迭代的取舍先给一个可复现的最小实验用一个小规模 MDP 验证矩阵迭代。一个三状态 MDP状态 0 和 1 会互相转移状态 2 是吸收态转移矩阵和奖励向量写成确定值。用不动点迭代 v ← r γPv 跑 100 轮观察价值向量是否收敛再用直接求逆得到精确解对照。把 γ 从 0.9 改成 0.999你会看到迭代次数明显变长这正是“长期信用分配”的数学代价。这个实验能同时验证一条重要直觉γ 越接近 1信息从远期状态传回当前状态越慢任何时域类强化学习算法的训练步数都不可能少。如果你发现自己某个项目训练曲线迟迟不涨先检查是不是 γ 设得太高。当模型完整可得策略迭代与价值迭代是两个决策点。在有限 MDP 中策略迭代由“策略评估”和“策略改进”两步组成。策略评估阶段用线性迭代把当前策略的价值函数算到收敛改进阶段用贪心法从价值函数推出新策略。由于改动的方向总是使价值单调提升最终会收敛到最优策略。书里对收敛性的证明很严密但对于工程使用你只需要记住它要求每轮评估都做到近似精确因此总时间开销高。价值迭代则不同它把“评估”压缩成一步操作每轮直接按即时奖励加折扣下一状态价值来做同步更新。对状态数在几万以内的 MDP我一般先跑价值迭代用它的结果去评价后续无模型算法的上限。这个做法能让你分清到底问题是样本效率差还是问题本身就无法用当前奖励结构学到好策略。如果价值迭代得到的 v* 已经很低那就不要在深度强化学习算法上耗太多时间优先去改 reward 设计或状态表示。3.2 蒙特卡洛没有模型时用经验均值代替期望无模型任务里你不知道 P 和 R能拿到的只有轨迹。蒙特卡洛MC强化学习方法的思想很直接用多个回合的真实累计回报的平均值来估计价值函数。数学核心是期望与样本均值的关系——样本越多均值越逼近期望这是大数定律的直观应用。书上对 MC 的定义几乎都很短但工程应用中容易漏掉四个设置项设置项参数或条件漏掉后果回合终止必须能自然结束或设置 max_stepsG_t 无法完整累计探索策略通常用 ε-greedyε 要递减状态子集覆盖不全首访与每访同一状态在一回合内出现多次估计方差显著不同方差控制增加训练回合数而非单回合长度曲线长期不收敛先前提过这一段的自然验算是随机生成一批回合计算状态价值的样本平均与上一节用矩阵方法得到的精确 v 对比。你会发现只在回合数足够多时均值才会贴近真值。这个实验能直观回答一个经典疑问为什么同样一个表格MC 训练几百回合还是毛刺不断。因为它把整个轨迹长度里的随机性全部打包进了一个值信息量小方差自然高。3.3 时序差分一步采样加自举把方差打下来MC 要等到回合结束TD 只用一步就更新。时序差分更新式是V(S_t) ← V(S_t) α [ R_{t1} γ V(S_{t1}) - V(S_t) ]方括号里那一项就是 TD 误差。符号右边同时出现采样奖励和当前估计值这种“用估计更新估计”的做法被称为自举。它带来的直接收益是更新频率提升了一个数量级且方差远小于 MC代价是引入了偏差因为目标本身不真实。书中对 TD 还有一层数学细节值得记录如果把价值函数写成两步展开TD 误差的期望值是偏差的度量。当策略固定且状态空间离散时TD(0) 最终会收敛到满足贝尔曼方程的解即便目标有偏也能靠迭代修正。这个性质在工程上的意义是你不需要一开始就把价值函数初始化得很准算法会自己慢慢校正。TD(λ) 和 n 步回报其实是同一主线的两个延伸。λ0 退化为一步 TDλ1 退化为 MC中间值是“走几步再回看几步”的折中。很多开源库实现里并没有直接叫 λ 的参数但 GAE广义优势估计本质上就是 TD(λ) 与优势函数结合的产物。如果你读 PPO 源码感到吃力回来看懂这本书的 TD(λ) 那一节会非常有帮助。提示看到 TD 更新式后先不要急着接神经网络。先在表格型环境里把 TD(0) 和 MC 都实现一遍记录各自的误差曲线这个对比练习比背下任何公式都有用。4. 自学避坑跟着这本书推导时最容易翻车的五个地方4.1 符号体系与 Sutton 原书不一致推导到后面断线现象你一边读赵世钰的书一边对照 Sutton 的经典教材发现同一个符号在两本书里的含义不一样推导到后半截时思路中断。原因Sutton 的教材以离散表和连续情形并重符号尽量贴近心理学和动物学习文献赵世钰的书更强调用向量矩阵语言贯穿全篇对有限状态空间的依赖更强。你如果默认两本书定义一致就会制造大量隐性冲突。解决开读前维护一张符号对照表把 v、q、π、γ、P、r 在两本书中的定义分别列出标清哪些是向量、哪些是矩阵、哪些是标量。读到一个公式不理解时优先查自己的对照表而不是再翻另一本书印证。等这本书读完再对照 Sutton 来横向阅读。4.2 证明看得懂、合上书推不动现象书里的推导一步步都对看得很顺畅但合上书只给你一个公式你写不出第一步。原因被动阅读和主动推导是两种认知活动。看证明时大脑在做“核对”而不是在“生成”。看懂了与能推出来中间差着大量练习距离。解决对每个重要公式先抄一遍再不看书写出“从定义到公式”的推导链写不下去就回去翻。三轮之后章节骨架自然刻进记忆。条件允许的话找一个学习伙伴用十分钟口头互相推导贝尔曼方程和策略梯度定理比独自看三遍效率高得多。4.3 公式与开源库里实现对不上怀疑自己没看懂现象把书里的公式抄下来去比对开源库的 PPO 或者 DQN 实现发现变量名和数值都不完全对应以为是自己理解错了。原因开源库为速度和稳定性做了大量工程改动梯度裁剪、熵正则、优势归一化、目标网络软更新等都是原始数学公式之外的东西。书里写的是原理库里写的是工程折中。解决把公式和实现当成两个层次来学。先用书上公式在自己写的最小环境里跑通例如用 numpy 写一个表格型 Q-learning再去看开源库代码。此时你能分辨每一处代码是在实现贝尔曼方程本身还是在做数值稳定处理而不会发生“对不上就开始怀疑自己”的失控循环。4.4 跳过策略梯度定理后劲不足现象想尽快上手 PPO看到前面还在推策略梯度定理觉得公式又多又长直接跳过去看代码回来发现 Actor-Critic 架构完全连不起来。原因策略梯度定理是深度强化学习从“基于价值”转向“基于策略”的分水岭。PPO、TRPO、SAC 这些主流强化学习算法出发点本质上是同一个定理的不同展开。跳过它就等于跳过整章的地基。解决不要跳。把策略梯度定理的证明自己推一遍从目标函数 J(θ) 开始中间出现对 log π(θ|s) 求梯度然后转成采样平均。推完你才会明白为什么策略梯度可以用样本估计为什么优势函数能把方差降下来。把这件事想透再回头看 PPO 的 CLIP 目标就是一个很自然的数值保护措施而不是四不像的补丁。4.5 只看公式不做数值实验误以为背完线性代数就能跑通算法现象全书公式背得熟练但一上手写强化学习训练脚本loss 曲线还是抖成一条毛线模型不学习。原因公式只描述迭代关系没有体现超参数敏感性、样本利用率、随机种子对结果的影响。数学原理是把你要优化的对象说清楚工程是把优化过程稳定下来两者不能互相替代。解决每学完一个算法族就在一个小规模环境做一次完整闭环。比如读完 TD 那一章不要急着上神经网络先在表格环境里对比 TD(0) 和 MC 的误差曲线。这种练习会把公式里隐藏的 α、γ、回合长度的真实影响呈现出来比背公式管用得多。5. 把书真正读完的三个自检方法与下一步进阶方向5.1 三遍读法先框架、再证明、后重述第一遍只花三到五天浏览全书目录和每一章的章节小结把强化学习算法的主族列出来。第二遍细读符号、证明和例子把每一节的关键等式自己推导并做笔记。第三遍最关键每读一章后合上书用白纸把这一章的公式和结论重写一遍能写出完整推导链就算过关写不出就回去查。我自己的教训是第一遍读时太着急第二遍时只抄公式而没有合上书写导致第三遍时还要回头重读。所以你现在开始读的话直接按三遍读法来能节约大量返工时间。5.2 画一张贝尔曼方程主线的算法全景图读完前几章后试着画一幅中心为“贝尔曼方程”的算法图左边伸展出 DP、MC、TD 三种求解路径右边伸展出策略梯度、Actor-Critic 两类策略方法。在每个分支上标注适用条件要不要模型、是否回合制、表格还是函数逼近。你一旦能不看书写出这幅图并且能解释为什么每个算法落在那个位置这本书的数学主线就已经消化为你的知识地图了。这中间最容易出的偏差是把 DQN 理解为一套神秘黑匣子而不是“用神经网络逼近 q_* 的迭代算法”。用这幅图你可以准确说出 DQN 与 Q-learning 之间的差别只是价值更新式换成了网络权重更新本质仍然是在逼近某个不动点。能这样表述时你才算脱离照抄源码的阶段。5.3 回到论文和开源库做符号互译训练读完这本书后下一步是拿几篇近年高质量强化学习论文把论文里的数学公式一一映射到这本书的术语和符号体系上。遇到不认识的记号回查书中的定义做一个“互译表”。坚持三个月你会发现自己能独立读懂论文正文里的推导部分这对从业者来说是非常稀缺的进阶能力。时间有限时优先读带伪代码的论文把伪代码拆成步骤再对照书中的公式逐一找出对应关系。到这一步你就不再是一个只会跑开源仓库的调参师而是能对算法做改动、解释改动原因、并把改动带到下一份工作中的研究者型工程师。我最后想分享的一个习惯是在第二次读完这本书后把所有与贝尔曼方程相关的章节做了交叉索引并用这些索引去解释业务里碰到的奖励崩溃和训练不稳定问题。用了半年后回过头看最大的感受是书里的数学原理并不过时它让那些别人口中带点“玄学”的强化学习算法变成了可预测、可纠错的计算过程。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。