简介《强化学习的数学原理》是西湖大学赵世钰教授撰写的英文专著面向具备线性代数、概率论与优化基础的研究生及算法工程师系统解决强化学习理论理解不深、公式推导不清、算法本质难把握等核心痛点。全书从网格世界等直观示例切入严格推导贝尔曼方程、值迭代、策略梯度、Actor-Critic等关键方法并在附录中严谨论证序列收敛性兼顾数学严谨性与教学可读性。资源为单文件PDF18.9MB内容完整覆盖10章主体附录含大量图示、矩阵向量形式表达、闭式解与迭代解对比、QA总结等特色设计便于精读推演与课堂讲授参考。目前已有845人学习下载适合希望夯实RL数学根基、深入理解算法收敛性与设计逻辑的进阶学习者。1. 强化学习的数学原理为什么一个“不写代码”的英文讲义反而让无数人第一次看懂贝尔曼方程的来龙去脉你有没有过这种体验反复读 Sutton 的《Reinforcement Learning: An Introduction》看到 Bellman 方程那一节公式推得滴水不漏可合上书——脑子里只剩下一个模糊印象“好像是个递归式”再打开 PyTorch 写 DQN调参时 loss 曲线乱跳想查是 reward scaling 没做对、还是 target network 更新频率太低、抑或 discount factor γ 设成了 0.999 导致 value collapse却连“为什么 γ 影响收敛速度”都讲不出数学依据这不是你数学差而是绝大多数资料把“贝尔曼方程”当成了一个现成结论直接抛给你没人告诉你它从哪来、为什么非得长成那样、更没人告诉你——它本质上是一道带约束的期望方程求解问题而那个约束正是马尔可夫性在数学上的精确投射。赵世钰老师这本《Mathematical Foundations of Reinforcement Learning》的颠覆性正在于此。它不教你torch.nn.Linear怎么搭网络也不列gym.make(CartPole-v1)的 API整本书用纯英文、零代码、全手绘网格世界示例硬生生把 RL 的骨架一节一节拆开从“智能体在格子上左移右移”这个最朴素的动作出发推导出状态转移概率 P(s′|s,a) 是如何自然浮现的从“走三步拿到 1 奖励”这个直觉严格定义出 return Gₜ Rₜ₊₁ γRₜ₊₂ γ²Rₜ₊₃ …再把“长期回报的期望值”这个想法用条件期望 E[·|Sₜs] 一层层套进去最终让 Bellman 方程 V^π(s) Σₐ π(a|s) Σₛ′ P(s′|s,a)[R(s,a,s′) γV^π(s′)] 不是凭空出现的公式而是你亲手推出来的必然结果。这不是“讲清楚”这是把黑匣子焊死的盖子拧开让你看见里面每个齿轮怎么咬合、每根弹簧怎么蓄力。当你真正理解为什么 V^π(s) 必须等于它下一时刻所有可能动作-状态组合的加权平均权重是策略 π 和转移概率 P你就不会再把 value iteration 当成一个玄学迭代过程——你会意识到它本质是在解一个不动点方程而它的收敛性直接由 contraction mapping 定理担保。这本书的价值不在于它多“新”而在于它拒绝把数学当装饰坚持让每一个符号都有其物理意义和推导路径。它解决的不是“怎么跑通一个 RL 算法”而是“为什么 RL 能 work”这个根本问题。2. 贝尔曼方程为什么它不是递归定义而是马尔可夫性在期望空间中的唯一数学表达贝尔曼方程常被简化为一句“当前状态价值等于即时奖励加上后续状态价值的折扣和”但这句大白话掩盖了它背后最锋利的数学内核它是马尔可夫决策过程MDP中状态价值函数 V^π(s) 在给定策略 π 下必须满足的、且唯一满足的函数方程。它不是人为设计的“好用技巧”而是 MDP 结构强加给价值函数的刚性约束。要真正吃透它必须回到两个基石条件期望的链式分解以及马尔可夫性对历史信息的彻底剥离。2.1 条件期望的链式分解从 Gₜ 的定义出发拆解“未来回报”的数学结构强化学习的目标是最大化长期累积回报 Gₜ。它的标准定义是G_t R_{t1} \gamma R_{t2} \gamma^2 R_{t3} \cdots \sum_{k0}^{\infty} \gamma^k R_{tk1}这个无穷级数本身没有给出任何计算路径。关键一步是引入条件期望。我们关心的不是某一次 trajectory 的 Gₜ而是智能体在状态 s 时遵循策略 π 所能获得的平均未来回报即 V^π(s) E[Gₜ | Sₜ s]。现在对这个期望进行链式分解V^\pi(s) \mathbb{E}[G_t \mid S_t s] \mathbb{E}\left[ R_{t1} \gamma R_{t2} \gamma^2 R_{t3} \cdots \mid S_t s \right]根据期望的线性性质可以拆开 \mathbb{E}[R_{t1} \mid S_t s] \gamma \mathbb{E}[R_{t2} \mid S_t s] \gamma^2 \mathbb{E}[R_{t3} \mid S_t s] \cdots但这样拆毫无意义因为E[R_{t2} | S_t s]依赖于整个历史无法计算。此时马尔可夫性登场——它断言P(S_{t1}, R_{t1} | S_t, A_t) P(S_{t1}, R_{t1} | H_t)即下一状态和奖励只取决于当前状态和动作与之前所有状态、动作、奖励完全无关。这意味着我们可以将E[R_{t2} | S_t s]这种“隔代”期望通过引入中间变量S_{t1}和A_{t1}来“落地”\mathbb{E}[R_{t2} \mid S_t s] \mathbb{E}\left[ \mathbb{E}[R_{t2} \mid S_{t1}, A_{t1}] \mid S_t s \right]而E[R_{t2} | S_{t1}, A_{t1}]正是环境定义的即时奖励函数R(s, a)的期望通常简记为R(s, a)。同理G_{t1}的期望E[G_{t1} | S_{t1} s]就是V^π(s)。于是整个链条被锚定在S_{t1}上。2.2 马尔可夫性如何“杀死”历史依赖强制导出贝尔曼结构将上述思想完整代入我们得到V^\pi(s) \mathbb{E}[G_t \mid S_t s] \\ \mathbb{E}\left[ R_{t1} \gamma G_{t1} \mid S_t s \right] \\ \mathbb{E}\left[ \mathbb{E}[R_{t1} \gamma G_{t1} \mid S_t s, A_t] \mid S_t s \right] \quad \text{(先对动作取期望)} \\ \sum_{a} \pi(a \mid s) \cdot \mathbb{E}[R_{t1} \gamma G_{t1} \mid S_t s, A_t a] \quad \text{(策略π给出动作概率)} \\ \sum_{a} \pi(a \mid s) \cdot \mathbb{E}\left[ \mathbb{E}[R_{t1} \gamma G_{t1} \mid S_t s, A_t a, S_{t1}] \mid S_t s, A_t a \right] \quad \text{(再对下一状态取期望)} \\ \sum_{a} \pi(a \mid s) \sum_{s} P(s \mid s, a) \cdot \mathbb{E}[R_{t1} \gamma G_{t1} \mid S_t s, A_t a, S_{t1} s] \\ \sum_{a} \pi(a \mid s) \sum_{s} P(s \mid s, a) \cdot \left( R(s, a, s) \gamma \cdot \mathbb{E}[G_{t1} \mid S_{t1} s] \right) \\ \sum_{a} \pi(a \mid s) \sum_{s} P(s \mid s, a) \cdot \left( R(s, a, s) \gamma V^\pi(s) \right)这就是完整的贝尔曼期望方程Bellman Expectation Equation。注意每一步等号都不是“约定俗成”而是由概率论公理全期望公式和 MDP 定义马尔可夫性、奖励/转移函数定义严格推出的。它揭示了一个冰冷的事实如果你承认环境是 MDP且你的策略是确定的或随机的那么任何合理的状态价值函数 V^π(s)都不可能逃避这个方程。它不是一个可选的“算法”而是一个必要条件。这也是为什么后续所有算法Value Iteration, Policy Iteration的核心都是在寻找这个方程的解。2.3 矩阵-向量形式把“函数方程”变成“线性系统”看清收敛的本质当状态空间 S 是有限的比如一个 5x5 的网格世界共 25 个状态我们可以将 V^π(s) 视为一个 |S| 维列向量v^π。同样将策略 π(a|s) 和转移概率 P(s|s,a) 组合成一个 |S|×|S| 的矩阵P^π其元素为(P^\pi)_{ss} \sum_{a} \pi(a \mid s) P(s \mid s, a)这个矩阵P^π 被称为策略诱导的状态转移矩阵它描述了在策略 π 下从任意状态 s 出发一步之后到达状态 s 的总概率。同时定义一个 |S| 维向量r^π其第 s 个元素为(r^\pi)_s \sum_{a} \pi(a \mid s) \sum_{s} P(s \mid s, a) R(s, a, s)它代表在状态 s 下执行策略 π 所能得到的一步期望奖励。于是整个贝尔曼方程可以被压缩为一个极其简洁的矩阵方程\mathbf{v}^\pi \mathbf{r}^\pi \gamma \mathbf{P}^\pi \mathbf{v}^\pi移项后得到(\mathbf{I} - \gamma \mathbf{P}^\pi) \mathbf{v}^\pi \mathbf{r}^\pi这是一个标准的线性方程组只要(I - γP^π)可逆就有唯一解v^π (I - γP^π)^{-1} r^π。而(I - γP^π)可逆的充要条件正是γ ∈ [0, 1)。因为P^π是一个随机矩阵每行和为 1其谱半径 ρ(P^π) 1所以ρ(γP^π) γ 1从而I - γP^π必然可逆。这个推导瞬间解释了两个关键现象第一为什么 discount factor γ 必须小于 1因为只有 γ1才能保证(I - γP^π)可逆从而保证 V^π 存在且唯一第二为什么 Value Iteration 的迭代v_{k1} r^π γP^π v_k会收敛因为它正是求解线性方程组的Jacobi 迭代法而其收敛性由ρ(γP^π) γ 1严格保证。这不再是“经验之谈”而是线性代数里关于迭代法收敛性的经典结论。2.4 常见问题与避坑那些让你在调试时抓狂的“贝尔曼陷阱”提示以下问题均来自真实教学反馈和开源项目 issue绝非纸上谈兵。现象在实现 Value Iteration 时发现v_new[s]的更新顺序按行扫描 vs 随机打乱导致最终策略完全不同甚至有时 policy 会震荡。原因你混淆了in-place update原地更新和two-array update双数组更新。标准的 Value Iteration 理论分析基于v_{k1}(s) max_a Σ_s P(s|s,a)[R(s,a,s) γ v_k(s)]即v_{k1}完全由v_k计算得出。如果你在循环中v[s] ...直接覆盖了v[s]那么当计算v[s1]时它用到的v[s]已经是v_{k1}的值而非v_k的值。这破坏了理论假设使算法变成了 Gauss-Seidel 迭代虽然通常更快但收敛性证明更复杂且在某些 pathological MDP 中可能不收敛。解决严格使用两个数组v_old和v_new。每次迭代开始前v_new copy(v_old)计算完所有s后再整体赋值v_old v_new。这是确保你复现的是“教科书版” Value Iteration 的铁律。现象在 grid world 中设置γ 0.999运行 Policy Iteration发现v^π的数值巨大如1e6级别且策略在边界格子上行为诡异本该走向目标却原地打转。原因这不是 bug而是γ接近 1 时v^π的尺度爆炸scale explosion现象。由闭式解v^π (I - γP^π)^{-1} r^π可知当γ → 1(I - γP^π)趋近于奇异其逆矩阵的范数急剧增大导致v^π数值极大。这本身没问题但当v^π大到浮点数精度无法区分v^π(s1)和v^π(s2)时例如两者相差1e-10但绝对值是1e6argmax_a Q^π(s,a)就会因舍入误差而选错动作。解决永远对v^π或Q^π进行reward normalization。一种简单方法是在每次 Policy Evaluation 后将v^π减去其最小值min(v^π)使其最小值为 0或者除以其最大值max(|v^π|)将其缩放到[-1, 1]。这不会改变最优策略因为argmax对平移和正缩放不变却能极大缓解数值不稳定。现象在推导Q^π(s,a)的贝尔曼方程时你写出了Q^π(s,a) Σ_s P(s|s,a)[R(s,a,s) γ Σ_a π(a|s) Q^π(s,a)]但发现它和书中Q^π(s,a) E[R_{t1} γ Q^π(S_{t1}, A_{t1}) | S_ts, A_ta]在形式上似乎不一致怀疑自己推错了。原因这是对“期望”理解的常见误区。E[Q^π(S_{t1}, A_{t1}) | S_ts, A_ta]这个条件期望其内部的A_{t1}并非自由变量而是由策略 π 决定的A_{t1} ~ π(·|S_{t1})。因此这个期望必须先对A_{t1}取平均再对S_{t1}取平均即E[·] Σ_s P(s|s,a) * E[· | S_{t1}s] Σ_s P(s|s,a) * Σ_a π(a|s) Q^π(s,a)。你写的公式完全正确只是它显式展开了期望的定义而书中的写法是紧凑的记号。二者等价没有矛盾。解决养成习惯在遇到任何带策略 π 的期望时立刻在脑中补全Σ_a π(a|s)这一项。这是打通 “value-based” 和 “policy-based” 方法的思维桥梁。3. 贝尔曼最优方程为什么“最优”不是全局搜索而是局部贪婪与全局一致性的精妙平衡如果说贝尔曼期望方程BEE描述了“在某个固定策略 π 下价值函数必须长什么样”那么贝尔曼最优方程BOE则回答了更根本的问题“所有可能策略中最好的那个策略其价值函数又必须满足什么” 它的出现标志着强化学习从“评估”Evaluation正式迈入“改进”Improvement阶段。而 BOE 的核心魔力在于它用一个看似简单的max操作将“全局最优性”这一宏大概念压缩进了一个与 BEE 结构几乎完全相同的局部方程里。这并非巧合而是动态规划Dynamic Programming思想的巅峰体现最优策略的局部决策必然是其全局最优性的直接反映。3.1 从“策略改进”到“最优性原理”为什么max是唯一合法的选项考虑一个直观场景你在状态 s面前有三个动作 a₁, a₂, a₃。执行 a₁ 后你预期能获得的长期价值是q₁ 10执行 a₂ 后是q₂ 15执行 a₃ 后是q₃ 8。那么为了最大化总回报你“显然”应该选 a₂。这个“显然”就是最优性原理Principle of Optimality的朴素表达一个最优策略所采取的首个动作必须是所有可能动作中能带来最高“动作价值”Q^*(s,a)的那个。Q^*(s,a)被定义为在所有策略中能从状态 s、动作 a 开始所能获得的最大期望回报。因此V^*(s)—— 即从状态 s 开始的最优价值 —— 必然等于max_a Q^*(s,a)。而Q^*(s,a)本身又由环境动态决定Q^*(s,a) Σ_s P(s|s,a)[R(s,a,s) γ V^*(s)]。将二者结合就得到了 BOEV^*(s) \max_{a} Q^*(s, a) \max_{a} \sum_{s} P(s \mid s, a) \left[ R(s, a, s) \gamma V^*(s) \right]这个max操作是 BOE 与 BEE 最本质的区别。BEE 中的Σ_a π(a|s)...是一个加权平均它反映了策略 π 的“妥协”而 BOE 中的max_a ...则是一种“决断”它宣告在最优策略下智能体绝不会在任何一个状态 s 上对任何次优动作分配哪怕一丝一毫的概率。这正是“最优”的残酷定义它不容忍任何局部的次优选择。3.2 收敛性保障为什么 BOE 的右侧是一个“收缩映射”Contraction Mapping一个方程有解不等于你能用迭代法找到它。BOE 的伟大之处在于它的右侧操作符T^*称为贝尔曼最优算子具有收缩性Contraction。定义T^*作用于任意向量v上(T^* v)(s) \max_{a} \sum_{s} P(s \mid s, a) \left[ R(s, a, s) \gamma v(s) \right]收缩性意味着对于任意两个向量u和v它们经过T^*映射后的“距离”严格小于它们原来的距离。这里“距离”采用无穷范数||u - v||_∞ max_s |u(s) - v(s)|。其证明的关键步骤如下|(T^* u)(s) - (T^* v)(s)| \left| \max_{a} \sum_{s} P(s \mid s, a) \left[ R(s, a, s) \gamma u(s) \right] - \max_{a} \sum_{s} P(s \mid s, a) \left[ R(s, a, s) \gamma v(s) \right] \right|利用|max f(a) - max g(a)| ≤ max |f(a) - g(a)|这一不等式可由反证法证明可得\leq \max_{a} \left| \sum_{s} P(s \mid s, a) \gamma (u(s) - v(s)) \right| \leq \max_{a} \sum_{s} P(s \mid s, a) \gamma |u(s) - v(s)| \leq \gamma \max_{s} |u(s) - v(s)| \gamma ||u - v||_\infty因此||T^* u - T^* v||_∞ ≤ γ ||u - v||_∞且γ ∈ [0,1)故T^*是一个收缩映射。根据巴拿赫不动点定理Banach Fixed-Point TheoremT^*在完备度量空间这里是R^{|S|}上有且仅有一个不动点即V^*并且迭代v_{k1} T^* v_k必然以指数速率收敛到V^*。这就是 Value Iteration 算法的全部理论根基。它告诉你v_{k1}(s) max_a Σ_s P(s|s,a)[R(s,a,s) γ v_k(s)]这个看起来像“暴力穷举”的更新其背后是坚实的泛函分析支撑其收敛性不是靠运气而是由γ 1这个数学事实铁板钉钉地保证的。3.3 矩阵-向量形式的 BOE为什么它不能写成v^* r^* γP^* v^*对比 BEE 的矩阵形式(I - γP^π)v^π r^π你可能会尝试为 BOE 写一个类似的线性方程。但这是徒劳的。原因在于max操作的非线性。P^π是一个固定的、由策略 π 决定的线性变换矩阵而T^*中的max_a意味着对于每一个状态 s我们都在从|A|个不同的线性表达式每个对应一个动作 a中挑选最大的那个。这使得T^*成为一个分段线性Piecewise Linear的非线性算子。它无法被一个单一的、固定的矩阵P^*所表示。你可以想象一个二维空间T^*的图像不是一条直线而是由几条线段组成的“折线”每一段对应一个最优动作的区域。这种非线性正是最优控制问题比策略评估问题更难的根本原因。它也解释了为什么 Policy Iteration 会比 Value Iteration 更快PI 将问题拆解为“Policy Evaluation线性求解 Policy Improvement局部max”而 VI 则试图在一个非线性算子下直接迭代。前者利用了线性部分的高效求解能力后者则直面了非线性的全部挑战。3.4 常见问题与避坑那些在实现最优算法时踩过的“max”深坑现象在实现 Q-learning 时发现Q(s,a)的值在训练后期剧烈震荡甚至发散loss 曲线呈锯齿状无法稳定。原因你很可能忽略了max操作带来的高方差。Q-learning 的更新规则是Q(s,a) ← Q(s,a) α [R γ max_{a} Q(s,a) - Q(s,a)]。其中max_{a} Q(s,a)是一个有偏估计它总是倾向于高估Q^*(s,a)的真实值因为max操作天然会选择当前估计中最大的那个而这个最大值很可能是由噪声或过拟合造成的。这种现象被称为maximization bias。它在离散动作空间中尤为明显是 Q-learning 的经典缺陷。解决采用Double Q-learning。其核心思想是“用一个网络选动作用另一个网络评价值”。具体来说维护两套 Q 网络Q_A和Q_B。更新Q_A时先用Q_B选出最优动作a* argmax_a Q_B(s,a)再用Q_A评估该动作的价值Q_A(s,a*)反之亦然。这样argmax和evaluation由两个独立的估计完成有效消除了max带来的系统性偏差。现象在 grid world 中最优策略π^*(s)应该是确定性的比如在某个格子永远向右走但你的 Policy Iteration 算法输出的π^*(s)却是一个概率分布例如[0.99, 0.01, 0.0, 0.0]而不是[1.0, 0.0, 0.0, 0.0]。原因这是浮点数精度和argmax实现方式的副产品。在 Policy Improvement 步骤中你写了π_new(a|s) 1 if a argmax_a Q^π(s,a) else 0。但argmax函数在多个Q值相等或在浮点误差范围内相等时可能返回第一个索引也可能返回随机索引。更糟的是由于Q^π是通过迭代计算得到的其数值本身带有微小误差可能导致Q(s,a1)和Q(s,a2)的理论值相等但计算值相差1e-15从而让argmax错误地选中了a2。解决在argmax前加入一个稳定性阈值epsilon threshold。例如先计算max_q max_a Q(s,a)然后找出所有满足Q(s,a) max_q - 1e-8的动作a再从中随机均匀选择一个。这不仅能处理浮点误差还能在存在多个真正最优动作时生成一个合理的随机策略避免算法因“抖动”而卡住。现象你试图用 BOE 的矩阵形式(I - γP^*)v^* r^*来求解最优价值但发现P^*根本无法定义因为P^*依赖于v^*哪个动作最优取决于v^*而v^*又依赖于P^*陷入死循环。原因这暴露了对“最优策略诱导转移矩阵”概念的根本误解。P^π是良定义的因为策略 π 是给定的但P^*并不存在一个独立于v^*的定义。最优策略π^*本身就是一个函数π^*(s) argmax_a Q^*(s,a)而Q^*又依赖于V^*。因此P^*是V^*的一个隐函数无法预先写出。任何试图绕过max操作、强行线性化的努力都会失败。解决接受非线性的现实。要么使用 Value Iteration老老实实做max迭代要么使用 Policy Iteration将“找max”Policy Improvement和“解线性方程”Policy Evaluation分开。这是动态规划的智慧不是妥协。4. 值迭代与策略迭代为什么一个“慢”算法反而比“快”算法更能暴露你对收敛性的无知Value IterationVI和 Policy IterationPI是求解 MDP 的两大经典动态规划DP算法。初学者常被一个表象迷惑PI 通常只需几次迭代就能收敛而 VI 可能需要上百次。于是PI 被冠以“高效”之名VI 则被视作“笨拙”的备选。这种看法恰恰掩盖了二者最深刻的差异PI 的“快”是以 Policy EvaluationPE步骤的潜在高成本为代价的而 VI 的“慢”却因其每一步都清晰、可验证成为检验你是否真正理解“收敛”本质的试金石。当你能亲手推导出 PI 中 PE 的迭代次数如何影响整体收敛性或者能画出 VI 中||v_k - v^*||_∞随 k 指数衰减的曲线你才算真正跨过了 RL 的第一道门槛。4.1 Value Iteration一次迭代一次对“最优性”的逼近VI 的算法骨架异常简洁初始化v_0(s)为任意值通常为 0。重复直到收敛v_{k1}(s) \max_{a} \sum_{s} P(s \mid s, a) \left[ R(s, a, s) \gamma v_k(s) \right], \quad \forall s \in \mathcal{S}输出v^* ≈ v_k并提取最优策略π^*(s) argmax_a Q^{v_k}(s,a)。其核心就是不断应用贝尔曼最优算子T^*。正如前文所述T^*是一个收缩映射因此v_k会以指数速率收敛到v^*。其误差界为||v_k - v^*||_\infty \leq \frac{\gamma^k}{1 - \gamma} ||v_1 - v_0||_\infty这个公式是 VI 的灵魂。它告诉你k每增加 1误差上限就乘以γ。如果γ 0.9那么k10时误差上限是初始误差的0.9^10 ≈ 0.35k50时是0.9^50 ≈ 0.005。这就是“指数收敛”的力量。然而这个漂亮的理论界有一个致命的前提你必须精确地计算出v_{k1}(s)的每一个值。在现实中P(s|s,a)和R(s,a,s)往往是未知的model-free 场景或者状态空间巨大continuous state无法进行精确的求和。此时VI 的“精确迭代”就变成了一个不可达的理想。它的价值不在于工程实现而在于提供了一个黄金标尺任何 model-free 算法如 Q-learning的性能都应该与这个标尺下的v_k进行比较以衡量其“逼近最优”的效率。4.2 Policy Iteration两次迭代一次对“评估-改进”循环的完整演绎PI 的流程则更为“工程化”初始化一个任意策略π_0。重复直到策略稳定Policy Evaluation (PE)求解v^{π_i}即解v^{π_i} r^{π_i} γ P^{π_i} v^{π_i}。精确解法直接求逆v^{π_i} (I - γ P^{π_i})^{-1} r^{π_i}。迭代解法v_{j1} r^{π_i} γ P^{π_i} v_j直到||v_{j1} - v_j|| ε。Policy Improvement (PI)对每个s令π_{i1}(s) argmax_a Q^{π_i}(s,a)。PI 的魅力在于其二次收敛性quadratic convergence的潜力。理论上如果 PE 步骤能精确求解v^{π_i}那么 PI 的策略序列π_0, π_1, π_2, ...会在有限步内最多|A|^{|S|}步达到最优策略π^*。这是因为每一次 Policy Improvement都严格地、至少在一个状态上提升了策略的价值v^{π_{i1}}(s) ≥ v^{π_i}(s)且至少存在一个s使得不等式严格成立。这是一个单调上升的过程而策略总数是有限的故必终止。4.3 截断策略迭代在“精确”与“实用”之间寻找那个恰到好处的平衡点然而“精确求解v^{π_i}”在实践中往往是奢侈的。求逆一个 |S|×|S本文还有配套的精品资源点击获取