强化学习数学原理 - 第2章:贝尔曼方程 (Bellman Equation)
1. 为什么需要贝尔曼方程?
在第1章中,我们建立了 MDP 模型,但留下了一个核心问题:如何评价一个策略(Policy)的好坏?
直观上,如果一个策略能让 Agent 获得更多的 Return(累积回报),它就是好的。但 Return是一个随机变量(取决于未来的随机状态转移和奖励),我们不能直接比较随机变量。因此,我们引入 期望(Expectation),即 状态价值(State Value)。
贝尔曼方程(Bellman Equation)就是描述状态价值之间关系的数学工具,它是强化学习的基石。
2. 状态价值函数 (State Value Function)
2.1 定义
给定一个策略,状态的价值定义为从状态出发,遵循策略能获得的期望回报:
2.2 为什么叫 “Bootstrapping” (自举)?
我们可以把 Return 展开:
对两边求期望:
这看起来像是一个死循环:要算当前状态的价值,得先知道未来状态的价值。这种“自己提着鞋带把自己提起来”的思想在 RL 中称为 Bootstrapping。但实际上,这是一组联立方程,完全可以求解。
3. 贝尔曼方程的推导 (Step-by-Step)
为了把上面的期望展开成具体的计算公式,我们需要用到 MDP 的转移概率和策略。
这个公式可以拆解为两步理解(对应视频中的树状图):
- 平均动作: 我可能选动作 A,也可能选动作 B,按概率加权。
- 平均结果: 选了动作 A 后,环境可能把我送到,也可能送到,按概率加权。
4. 矩阵形式与代码求解 (Matrix Form)
对于有限状态 MDP,我们可以把贝尔曼方程写成非常漂亮的矩阵形式。这是理解“求解价值”本质的关键。
4.1 矩阵公式
假设状态有个,我们将排列成向量:
其中:
- 是平均即时奖励向量,其第个元素为。
- 是状态转移矩阵,其第元素为。
4.2 解析解 (Closed-form Solution)
通过简单的线性代数变换:
只要,矩阵就是可逆的。这意味着:只要环境模型 () 和策略 () 已知,状态价值是唯一的,且可以直接算出!
4.3 深度思考:矩阵逆与无穷级数的统一
这里隐藏着一个极美的数学联系。我们知道,对于标量(),有级数展开。
同样的逻辑应用到矩阵上,Neumann Series 告诉我们:
将这个展开式代入,我们得到:
物理意义震撼人心:
- :第一步的平均奖励。
- :第二步的平均奖励(转移了一次)。
- :第三步的平均奖励(转移了两次)。
结论:“解线性方程组”(代数视角)和**“累加未来所有奖励”**(轨迹视角)在数学上是完全等价的!这也解释了为什么必须小于 1:为了保证这个无穷级数收敛。
4.4 Python 代码实战
让我们用 NumPy 实现这个求解过程。假设一个简单的 4 状态环境(如书中 Figure 2.3):
1 | import numpy as np |
运行结果会告诉你每个状态“值多少钱”。如果,意味着从开始玩,平均会亏 2.5 分。
5. 迭代法求解 (Iterative Solution)
虽然矩阵求逆很帅,但在状态很多(比如围棋)时,求逆矩阵是不可能的。这时我们需要迭代法。
算法逻辑:
- 随便猜一个(比如全 0)。
- 用贝尔曼方程右边算出一个新的。
- 再把代入右边算出…
- 一直算,直到和几乎一样(收敛)。
这正是动态规划 (Dynamic Programming) 的雏形,也是后续 Value Iteration 算法的基础。
6. 动作价值函数 (Action Value, Q-function)
除了状态价值,还有一个更重要的概念:动作价值。
它表示:在状态强制采取动作,之后遵循策略的期望回报。
6.1 为什么要 Q 值?
如果只有,Agent 到了路口不知道怎么选,因为它只知道“我在这个路口平均能得 10 分”,但不知道“往左走得多少分,往右走得多少分”。
明确给出了每个动作的评分,有了 Q 值,Agent 就能直接选 Q 值最大的动作(Greedy Policy),从而改进策略。
6.2 V 与 Q 的关系
7. 总结
本章我们攻克了 RL 中最核心的数学堡垒:
- State Value: 衡量处境好坏。
- Bellman Equation:必须满足的递归方程。
- 求解方法: 小规模用矩阵求逆,大规模用迭代更新。
- Action Value: 衡量动作好坏,是策略改进的桥梁。
有了评价标准,下一章我们终于可以聊如何寻找最优策略了。我们将引入 Bellman Optimality Equation (BOE)。
上一章:第1章 - 基本概念 | 下一章:第3章 - 最优状态值与贝尔曼最优方程 >>

