从 Bellman 到最优策略:值迭代和策略迭代到底差在哪里? 📅 2026/7/13 11:00:18 现在进入第一个真正的算法层如果环境模型已知怎样从 Bellman 方程求出最优策略适合读者理解了 Bellman 方程但分不清 value iteration 和 policy iteration 的人。阅读时间约 9 分钟。关键术语动态规划、值迭代、策略迭代、贪心改进。前两篇我们已经知道强化学习的核心问题是让策略在长期回报意义上变得更好而 Bellman 方程给了我们一种递归估值工具。现在进入第一个真正的算法层如果环境模型已知怎样从 Bellman 方程求出最优策略这里有两条经典路线值迭代和策略迭代。它们都属于动态规划方法核心前提是我们知道环境转移概率 p(s|s,a) 和奖励模型因此可以对下一状态求期望。图 1 是本篇的主地图。值迭代显式维护的是价值函数把“选最优动作”直接压进 Bellman 最优备份策略迭代显式维护的是策略先评估当前策略再根据价值结果改进策略。1. 值迭代每一步都往最优方向靠值迭代的核心更新可以写成这个式子可以拆成两层意思。第一层站在状态 s尝试每个动作 a计算“当前奖励 折扣后的下一状态价值期望”。第二层在所有动作里取最大值把这个最大值作为新的状态价值。所以值迭代并不是“不管策略”。它只是没有显式存一张策略表。策略其实藏在 里哪个动作让右边最大哪个动作就是当前价值估计下的贪心动作。等价值函数收敛后再对每个状态取就可以读出最优策略。2. 策略迭代先看清当前策略再改进策略迭代更像一个“评估—改进”的循环。第一步是policy evaluation固定当前策略计算它对应的价值函数这一步问的是如果我一直按照当前策略行动每个状态的长期价值是多少第二步是policy improvement用当前价值函数重新评估各个动作并选择更好的动作如果改进之后策略不再变化就说明已经达到稳定点。此时继续评估和改进也不会得到更好的策略。3. 贪心改进不是“拍脑袋选最大”很多人看到 arg max会把它理解成“直接选最大的动作”。但真正发生的是先把每个动作都换算成动作价值再在同一把尺上比较。图 2 展示了这个计算路径。对于同一个状态 s每个候选动作都会对应一个动作价值这里的表示先在状态 s 执行动作 a之后继续按照当前策略行动平均能得到多少长期回报。贪心改进就是让新策略在状态 s 选择 q 值最大的动作如果在每个状态下新策略选择的动作都不比旧策略差那么新策略整体不会比旧策略差。这就是策略改进定理背后的直觉。在实际学习中完全 greedy 有时会过早锁定当前估计下的好动作。因此常见做法是 -greedy大多数时候选当前最优动作少数时候随机探索。4. 两种方法为什么都离不开“遍历”值迭代和策略迭代看起来很优雅但它们背后有一个共同成本枚举。对每个状态 s要遍历每个动作 a对每个动作还要对所有可能下一状态 s 求和。从图 3 可以看出一次 Bellman 备份的计算规模大致与 |S| X |A| X |S|有关。如果状态空间只是一个小网格这完全可以接受。但如果状态是图像、文本上下文、机器人连续姿态状态空间会巨大到无法枚举。动作空间也可能很大甚至连续。所以动态规划给了我们最干净的数学基准却不是所有真实问题的直接解法。5. 值迭代和策略迭代怎么选可以用一个简化判断来理解二者差异。值迭代每一轮更新相对轻因为它不需要把某个策略完整评估到很准但它可能需要更多轮才能收敛。策略迭代每一轮更重因为 policy evaluation 可能本身就要多次迭代但它的策略改进更明确整体策略变化可能更快。实际算法里还存在介于两者之间的 modified policy iteration当前策略不用评估到完全收敛就做一次策略改进。它说明值迭代和策略迭代不是非黑即白而是一条连续谱上的两个端点。6. 为什么这篇是后续算法的入口动态规划方法的价值不只是求解小规模 MDP。更重要的是它提供了后续 model-free 方法的数学原型。当模型已知时我们可以对 求完整期望当模型未知时我们只能采样一次转移用样本去近似这个期望。下一篇要讨论的 Monte Carlo、TD、Sarsa 和 Q-learning本质上都在回答这个问题如果不能枚举环境概率还能不能沿着 Bellman 的方向学习小结值迭代和策略迭代都在求解 Bellman 最优性问题。区别在于值迭代把最优动作选择压进价值更新策略迭代把“评估当前策略”和“改进当前策略”拆成两个步骤。理解这两种方法就理解了强化学习从“模型已知的精确计算”走向“模型未知的样本学习”的分水岭。