☰
强化学习数学原理:从MDP到贝尔曼方程的算法进阶指南
2026/10/3 5:34:46 网站建设 项目流程

简介:西湖大学赵世钰教授的英文专著《强化学习的数学原理》从数学视角系统梳理强化学习核心理论,适合具备一定线性代数与概率论基础的研究生、工程师及研究者。全书以网格世界引入基本概念,逐步讲解状态值与贝尔曼方程、最优状态值与贝尔曼最优性方程、值迭代与策略迭代,进而覆盖蒙特卡洛方法、随机近似、时间差分、值函数近似、策略梯度及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_{k+1} = r + γP v_k中等规模、需快速实现γ 接近 1 时收敛慢
策略迭代评估与改进交替策略需要强收敛保证每轮评估成本高

这三种求法对应的实际意义各不相同。直接求逆适合课堂演示和几十个状态的玩具问题;线性迭代适合小规模机器人的动力学模型;策略迭代则是把价值评估与策略改进拆成两步,成为后文价值迭代和深度强化学习算法的思想来源。我建议你把这一页的内容当作书的“总纲”记住:后面蒙特卡洛、时序差分、Q-learning,其实都是在做同一件事——用不同手段逼近这个不动点方程的解。

我想强调一下为什么这个矩阵视角对工程派重要。入门时你是不是经常听说“强化学习算法炼丹”?说得不好听,如果只看开源实现,确实像炼丹,因为你看不到每一步在逼近哪一个数学量。但从贝尔曼方程的矩阵形式出发,你会清楚地看到,任何时域差分更新都是在朝 (I-γP)v=r 的不动点靠近。所谓 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_{t+1} + γ V(S_{t+1}) - 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 回到论文和开源库:做符号互译训练

读完这本书后,下一步是拿几篇近年高质量强化学习论文,把论文里的数学公式一一映射到这本书的术语和符号体系上。遇到不认识的记号,回查书中的定义,做一个“互译表”。坚持三个月,你会发现自己能独立读懂论文正文里的推导部分,这对从业者来说是非常稀缺的进阶能力。

时间有限时,优先读带伪代码的论文,把伪代码拆成步骤,再对照书中的公式逐一找出对应关系。到这一步,你就不再是一个只会跑开源仓库的调参师,而是能对算法做改动、解释改动原因、并把改动带到下一份工作中的研究者型工程师。

我最后想分享的一个习惯是:在第二次读完这本书后,把所有与贝尔曼方程相关的章节做了交叉索引,并用这些索引去解释业务里碰到的奖励崩溃和训练不稳定问题。用了半年后回过头看,最大的感受是书里的数学原理并不过时,它让那些别人口中带点“玄学”的强化学习算法,变成了可预测、可纠错的计算过程。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询