资讯动态

贝尔曼方程与压缩映射:强化学习数学原理与算法收敛性解析

发布时间:2026/10/17 12:42:24 来源:尧图企业网站定制
简介《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著面向具备一定数学基础、希望从理论层面系统理解强化学习的读者。全书从零出发结合大量例子循序渐进地揭示强化学习本质涵盖基础概念、状态值与贝尔曼方程、最优状态值与贝尔曼最优方程、值迭代与策略迭代、蒙特卡洛方法、随机近似、时间差分方法、值函数近似、策略梯度方法及演员-评论家方法附录还讨论了序列收敛性。资源包为1个PDF文件约18.9MB内容完整、目录清晰便于按章节检索学习。目前已有843人学习下载。通过阅读读者可掌握网格世界、状态转移、策略、奖励、轨迹与回报、马尔可夫决策过程等核心概念理解贝尔曼方程的矩阵向量形式、闭式解与迭代解并进一步把握从状态值到动作值、从策略评估到策略优化的数学脉络为设计分析强化学习算法打下坚实基础。1. 贝尔曼方程为什么“一步自洽”能解出全局最优强化学习最反直觉的地方在于一个只看下一步的方程居然能算出无限步之后的累积回报。很多人第一次翻开《强化学习的数学原理》时以为会看到大量神经网络和调参技巧结果第一章就被一个网格世界和几条线性方程拦住了。但恰恰是这个“拦路”的设计暴露了强化学习真正的底层机制——它不靠试错堆经验而是靠贝尔曼方程把“长期回报”拆成“即时奖励 下一状态价值”的递归结构。这个结构一旦成立无限步的期望就被压缩成一个可迭代求解的不动点问题。搞懂这一点后面所有算法——值迭代、策略迭代、Q-learning、Actor-Critic——都只是这个方程在不同假设下的变体。这份英文专著用十章篇幅从数学角度把这条主线完整推了一遍适合已经会调库但说不清“为什么能收敛”的开发者。2. 状态值与贝尔曼方程从“回报是什么”到“怎么算出来”2.1 回报的递归结构为什么必须引入折扣因子书里第二章先抛出一个动机示例同一个策略下从不同状态出发累积回报差异巨大。如果只看即时奖励智能体会短视如果看无限步累积数值又可能发散。折扣因子 γ 的引入不是为了“调参方便”而是为了保证回报的数学期望有限。当 γ 1 时未来奖励按几何级数衰减回报的无穷级数收敛状态值才有定义。这一步是后续所有收敛性证明的前提。常见的实现思路是把回报写成 G_t R_{t1} γR_{t2} γ²R_{t3} …然后观察到 G_t R_{t1} γG_{t1}。这个递推关系就是贝尔曼方程的雏形。书里用网格世界的具体数值演示了这一点每个格子的状态值等于“走一步的即时奖励 γ × 下一格的状态值”。当所有格子都写出这个等式就得到一个线性方程组。2.2 贝尔曼方程的矩阵形式与闭式解对于固定策略 π状态值向量 v_π 满足v_π r_π γP_π v_π其中 r_π 是策略下的即时奖励期望P_π 是状态转移矩阵。移项后得到v_π (I - γP_π)^{-1} r_π这就是闭式解。书里明确写了这个公式并指出它的理论意义大于实用意义——因为矩阵求逆的复杂度是 O(n³)状态数大时不可行。但它揭示了一个关键事实状态值是策略和环境动态的确定性函数不需要采样就能算出来。这为后续“有模型”和“无模型”方法的分野埋下伏笔。import numpy as np # 假设 3 个状态策略 π 下的转移矩阵 P_π 和奖励向量 r_π P_pi np.array([[0.5, 0.5, 0.0], [0.0, 0.5, 0.5], [0.5, 0.0, 0.5]]) r_pi np.array([1.0, 0.0, -1.0]) gamma 0.9 # 闭式解v (I - γP)^{-1} r I np.eye(3) v_pi np.linalg.inv(I - gamma * P_pi) r_pi print(v_pi) # 输出每个状态的状态值这段代码直接对应书里第二章的矩阵-向量形式。参数说明P_pi[i][j] 表示在策略 π 下从状态 i 转移到状态 j 的概率r_pi[i] 是状态 i 的即时奖励期望γ 是折扣因子。注意矩阵求逆只适合小规模验证实际算法用迭代法。2.3 迭代解与压缩映射为什么迭代一定能收敛书里接着给出迭代解v_{k1} r_π γP_π v_k。这个迭代之所以收敛是因为贝尔曼算子是一个 γ-压缩映射。压缩映射定理保证在完备度量空间中压缩映射有唯一不动点且迭代序列收敛到该不动点。γ 1 是压缩性的关键——它让每次迭代后的距离至少缩小 γ 倍。我一般会这么理解压缩映射就像把一张地图不断对折无论初始点在哪最终都会落到同一个折痕上。这个折痕就是真实的状态值。书里在第三章进一步把压缩映射定理用到贝尔曼最优方程上证明最优状态值的存在唯一性。没有这个定理值迭代和策略迭代的收敛性就是玄学。2.4 从状态值到动作值为什么需要多算一层状态值 v(s) 衡量的是“在状态 s 下遵循策略 π 有多好”。但要做策略改进需要知道“在状态 s 下选动作 a 有多好”。这就是动作值 q(s,a)。书里第二章末尾给出两者的关系q_π(s,a) r(s,a) γ Σ_{s} p(s|s,a) v_π(s)以及 v_π(s) Σ_a π(a|s) q_π(s,a)这两个式子把状态值和动作值绑在一起。动作值的贝尔曼方程形式类似只是多了一层对动作的求和。书里用网格世界的例子展示了同一个状态不同动作的动作值不同策略改进就是选动作值最大的那个动作。这一步是后面策略迭代和 Q-learning 的基础。3. 贝尔曼最优方程为什么“贪心”能保证全局最优3.1 最优状态值与最优策略的存在性书里第三章先定义最优状态值 v*(s) max_π v_π(s)即在所有策略中能取得的最大状态值。然后证明存在一个最优策略 π*使得对所有状态 sv_{π*}(s) v*(s)。这个证明依赖贝尔曼最优方程v*(s) max_a [ r(s,a) γ Σ_{s} p(s|s,a) v*(s) ]注意这里的 max 是对动作取的而不是对策略求和。这个 max 操作是贝尔曼最优方程和普通贝尔曼方程的核心区别。普通贝尔曼方程是线性的最优方程是非线性的因为 max 算子不是线性的。3.2 压缩映射定理在最优方程上的应用书里花了不小篇幅证明贝尔曼最优方程的右端也是一个 γ-压缩映射。证明思路是对任意两个值函数 v1 和 v2考虑它们的无穷范数 ||v1 - v2||_∞经过 max 算子后距离不超过 γ||v1 - v2||_∞。这个性质保证了值迭代的收敛性。常见的实现思路是值迭代 v_{k1}(s) max_a [ r(s,a) γ Σ_{s} p(s|s,a) v_k(s) ] 就是不断应用这个压缩算子。每次迭代后值函数与最优值函数的距离至少缩小 γ 倍。当 γ 接近 1 时收敛变慢当 γ 接近 0 时收敛很快但智能体变得短视。书里用网格世界展示了不同 γ 下的收敛曲线。3.3 最优策略的提取与影响因素一旦得到 v*最优策略就是贪心策略π*(s) argmax_a [ r(s,a) γ Σ_{s} p(s|s,a) v*(s) ]。书里强调最优策略可能不唯一但所有最优策略共享同一个最优状态值。另外γ 的大小会影响最优策略的形状——γ 越大智能体越愿意为了长期回报牺牲即时奖励。# 值迭代求解最优状态值 def value_iteration(P, r, gamma, tol1e-6): n_states P.shape[0] n_actions P.shape[1] v np.zeros(n_states) while True: v_new np.zeros(n_states) for s in range(n_states): # 对每个动作计算 q 值取最大 q_values [r[s][a] gamma * np.dot(P[s][a], v) for a in range(n_actions)] v_new[s] max(q_values) if np.max(np.abs(v_new - v)) tol: break v v_new return v这段代码对应书里第四章的值迭代算法。参数说明P[s][a][s] 是转移概率r[s][a] 是即时奖励γ 是折扣因子tol 是收敛阈值。注意这里用了双重循环实际实现会向量化。书里在第四章给出了逐元素形式和实现细节。4. 值迭代与策略迭代两种收敛路径的取舍4.1 值迭代一步 max 走到底值迭代的每一步都直接逼近最优值函数不显式维护策略。书里第四章给出逐元素形式v_{k1}(s) max_a Σ_{s} p(s|s,a) [ r(s,a) γ v_k(s) ]这个式子把贝尔曼最优方程的右端直接作为迭代更新。值迭代的优点是简单每步只做一次 max 操作缺点是每步都要遍历所有动作计算量较大。书里用网格世界展示了值迭代的收敛过程初始值全零经过若干轮后每个格子的值逐渐逼近真实最优值。4.2 策略迭代两步交替更精细策略迭代分成两步策略评估和策略改进。策略评估用贝尔曼方程迭代算出当前策略的状态值策略改进用贪心策略更新动作选择。书里证明策略迭代的每一步都保证策略单调改进且有限步内收敛到最优策略。策略迭代的优点是收敛步数少通常比值迭代快缺点是每步策略评估需要完整迭代到收敛计算量更大。书里在第四章对比了两者的差异并引出截断策略迭代——只做有限步策略评估就改进介于两者之间。4.3 截断策略迭代统一视角书里第四章最后给出截断策略迭代策略评估只做有限次迭代然后立即改进策略。当评估步数为 1 时退化为值迭代当评估步数趋于无穷时退化为策略迭代。这个统一视角揭示了两种算法的本质联系它们都是广义策略迭代的特例。我一般会这么理解值迭代是“急性子”每步都想直接逼近最优策略迭代是“慢性子”先把当前策略算准再改。截断策略迭代是折中实际算法如 Q-learning 和 Actor-Critic 都落在这个谱系上。5. 蒙特卡洛与时间差分无模型下的贝尔曼方程5.1 蒙特卡洛用采样均值替代期望书里第五章从均值估计讲起如果不知道分布就用样本均值估计期望。蒙特卡洛方法把贝尔曼方程中的期望用实际采样回报替代。MC Basic 算法直接对每个状态-动作对采样多条轨迹用平均回报估计动作值然后贪心改进策略。MC Exploring Starts 和 MC ε-Greedy 解决了探索问题。书里详细分析了 ε-greedy 的探索与利用权衡ε 越大探索越充分但策略越随机ε 越小利用越充分但可能陷入局部最优。这个权衡在后续所有算法中反复出现。5.2 时间差分一步自举的魔力书里第七章引入时间差分TD方法。TD 的核心是用“即时奖励 下一状态估计值”替代完整回报TD 误差 δ_t r_{t1} γ v(s_{t1}) - v(s_t)然后更新 v(s_t) ← v(s_t) α δ_t。这个更新不需要等到 episode 结束每一步都能更新。书里证明在适当的学习率下TD 收敛到真实状态值。Sarsa 和 Q-learning 是 TD 在动作值上的扩展区别在于 Q-learning 用 max 操作是 off-policy 的。# Q-learning 更新 def q_learning_update(q_table, s, a, r, s_next, alpha, gamma): # 下一状态的最大 Q 值 max_q_next np.max(q_table[s_next]) # TD 目标 td_target r gamma * max_q_next # TD 误差 td_error td_target - q_table[s][a] # 更新 q_table[s][a] alpha * td_error return q_table这段代码对应书里第七章的 Q-learning 实现。参数说明q_table[s][a] 是动作值估计α 是学习率γ 是折扣因子。注意 Q-learning 的 TD 目标用了 max所以它直接逼近最优动作值不需要遵循当前策略。5.3 随机近似学习率为什么必须衰减书里第六章专门讲随机近似理论。Robbins-Monro 算法给出迭代求解方程根的条件学习率 α_k 满足 Σα_k ∞ 且 Σα_k² ∞。前者保证能走到根后者保证噪声被平均掉。这个条件解释了为什么学习率不能是常数——常数学习率会导致在最优值附近震荡无法精确收敛。Dvoretzky 收敛定理进一步推广了随机近似的收敛条件。书里用这些定理统一分析了 TD、SGD 和 Q-learning 的收敛性。没有这一章前面算法的收敛性证明就缺了数学基础。6. 值函数近似与策略梯度从表格到函数6.1 值函数近似为什么表格不够用书里第八章指出当状态空间连续或巨大时表格存储不可行。值函数近似用参数化函数 v(s; w) 替代表格目标是最小化估计值与真实值的误差。书里给出目标函数和优化算法并讨论函数逼近器的选择——线性逼近、神经网络等。TD 学习结合函数逼近的更新变成w ← w α [ r γ v(s; w) - v(s; w) ] ∇_w v(s; w)这个更新和表格 TD 形式一致只是把表格索引换成了梯度。书里分析了“致命三要素”函数逼近、自举、off-policy 同时出现时可能发散。这是深度强化学习中最经典的坑之一。6.2 策略梯度直接优化策略书里第九章转向策略梯度方法。策略用参数化函数 π(a|s; θ) 表示目标是最大化期望回报 J(θ)。策略梯度定理给出∇_θ J(θ) E[ ∇_θ log π(a|s; θ) · q_π(s,a) ]REINFORCE 算法用蒙特卡洛回报估计 q_π然后做梯度上升。书里详细推导了折扣和未折扣情况下的梯度公式并讨论了基线技巧降低方差。6.3 Actor-Critic值函数和策略的合流书里第十章把值函数近似和策略梯度结合形成 Actor-Critic 方法。Actor 是策略网络Critic 是值函数网络。最简单的 QAC 用动作值作为 CriticA2C 引入优势函数降低方差off-policy Actor-Critic 用重要性采样确定性 Actor-Critic 直接输出确定性动作。书里给出这些算法的统一框架Actor 更新策略参数Critic 更新值函数参数两者交替进行。这个框架是当前主流深度强化学习算法的骨架。7. 避坑与排查那些书里没明说但一定会踩的坑7.1 折扣因子设成 1 导致回报发散现象值迭代或 TD 更新时状态值越来越大最终溢出。 原因γ 1 时无穷步回报的级数不收敛贝尔曼算子的压缩性消失。 解决确保 γ 1。如果任务确实需要无折扣必须保证 episode 有限且终止状态吸收所有回报。7.2 学习率不衰减导致在最优值附近震荡现象Q-learning 或 TD 的估计值在真实值附近来回跳无法稳定。 原因常数学习率让随机近似的噪声无法被平均掉违反 Robbins-Monro 条件。 解决使用衰减学习率如 α_k 1/k 或 α_k α_0 / (1 k·decay)。书里第六章给出了理论依据。7.3 探索不足导致策略陷入局部最优现象ε-greedy 的 ε 设得太小智能体反复选同一个动作其他动作的 Q 值永远不更新。 原因未充分探索的动作值估计不准贪心策略基于错误估计。 解决初期用较大的 ε后期逐渐衰减。或者用乐观初始化给未尝试动作较高的初始值。7.4 函数逼近与自举结合导致发散现象用神经网络做值函数近似时TD 误差不降反升最终发散。 原因函数逼近、自举、off-policy 同时出现违反收敛条件。书里第八章提到的“致命三要素”。 解决使用经验回放和目标网络稳定训练或者改用策略梯度方法避免自举。7.5 重要性采样比率爆炸现象off-policy Actor-Critic 中重要性采样权重方差极大梯度估计不稳定。 原因行为策略和目标策略差异过大比率 π/μ 可能非常大。 解决裁剪重要性采样比率或使用 V-trace 等更稳定的 off-policy 修正方法。书里第十章讨论了这个问题。8. 从数学原理到算法直觉一份值得反复翻的底稿这份书稿最值得深挖的地方是它把“为什么这样设计”和“怎么证明它 work”绑在一起讲。很多强化学习资料只给算法伪代码读者调包能跑通但遇到不收敛就束手无策。这本书从贝尔曼方程出发用压缩映射定理保证收敛性用随机近似理论解释学习率条件用策略梯度定理推导更新方向。每一步都有数学依据不是“玄学调参”。我自己的习惯是每次实现一个新算法前先回到书里对应的章节把贝尔曼方程或策略梯度定理的假设条件过一遍。比如用 Q-learning 时确认环境是否满足有限 MDP、学习率是否衰减、探索是否充分。这些条件不满足算法跑崩是必然的不是“运气不好”。书里附录 C 关于序列收敛性的内容我一般会在调试收敛问题时翻一翻确认迭代序列是否满足压缩映射或随机近似的条件。这份资源是纯英文书稿十章正文加四个附录覆盖从基础概念到 Actor-Critic 的完整链条。它不要求读者有强化学习背景但需要概率论和线性代数基础。如果你已经会调 Stable-Baselines 或 RLlib但说不清“为什么目标网络能稳定训练”“为什么策略梯度要加基线”这份书稿能帮你把底层逻辑补上。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑