Bellman 期望与最优方程
把长期价值递归分解为即时奖励与下一状态价值。
学习目标
- 定义Bellman 期望与最优方程并复述输入输出。
- 从公式计算一个最小数值例子。
- 说明它与相邻算法的区别、失败模式和适用场景。
为什么重要
Bellman 关系把长期价值拆成“一步奖励”和“下一状态的价值”。它让动态规划、TD 学习和许多强化学习算法可以复用已有价值估计,而不必每次都等到一整条很长轨迹结束。
但必须分清正在评估某个固定策略,还是在寻找最优策略。把策略加权平均与动作最大值混用,会直接改变计算目标。
学习前需要掌握
背景与问题
一条轨迹可以直接累计奖励,但有多个分支时,不同状态会反复出现相似的后续问题。例如从同一个中转站出发,之后的收益可以被前面多个位置共同使用。
如果能把“从下一状态开始值多少”作为一个子问题,当前状态的长期价值就可以递归表达。Bellman 方程说明的正是这种一致性关系,而不是一种独立的神经网络结构。
概念定义
Bellman 期望方程描述固定策略下的价值:先按该策略选择动作,再按环境转移考虑下一状态,把即时奖励与折扣后的下一价值取期望。
Bellman 最优方程描述最优价值:在每个可选择动作之间比较长期收益并取最大值。这里动作可以由智能体选择,但环境的随机转移不能由智能体挑选最有利的一支。
直观理解
假设后面那个局面的价值已经知道,当前局面就可以通过“一步收益 + 折扣后的后续价值”往前回推。它像把一条长决策链拆成可复用的子问题。
如果玩家坚持采用固定随机打法,就应按这个打法平均动作结果;如果在问最好的打法能达到什么,就需要比较动作结果。计算时的平均与最大值,分别对应这两个问题。
核心原理
期望方程中的策略概率和转移概率有不同含义:前者描述智能体怎样选动作,后者描述执行动作后环境怎样变化。即使使用最优方程,也仍要对随机环境的后果求期望。
真实价值满足方程;用当前估计的下一价值计算一个目标,再更新当前估计,叫做一次 backup。当前下一价值不准确时,一次 backup 也不会凭空得到真实最优值。
动态规划通常显式使用环境模型,对可能后果求和;TD 方法可以从采样到的转移构造近似目标。它们共享一步分解思想,但使用的信息和估计误差不同。
终止状态的后续回报按本回合约定为零。否则,终点之后的任意估计会被错误加回前面,甚至让没有真实后续收益的动作看起来更好。
数学表达
Bellman 最优方程
固定状态和动作后,仍对环境的随机后果求期望;到达的下一状态可以再选择最优动作。
变量含义
V^π(s)在状态 s 开始并持续使用策略 π 的期望回报。Q^π(s,a)在状态 s 先执行 a,之后使用 π 的期望回报。π(a|s)固定策略在 s 选择动作 a 的概率。P(s′|s,a)环境转移概率;不能因为寻找最优策略就忽略不利分支。γ对下一状态价值的折扣权重。
计算步骤
- 1stop 的动作价值是 1,因为后面已经终止。
- 2continue 的动作价值是 0+0.9×4=3.6。
- 3固定随机策略的状态价值是 0.5×1+0.5×3.6=2.3。
- 4最优选择的状态价值是 max(1,3.6)=3.6,对应选择 continue。
代码对应位置
示例 1分别计算随机策略与最优选择的价值:让动作平均与动作最大值出现在同一段可核对的代码中。
固定策略的 Bellman 期望方程
先按给定策略的动作概率加权,再按环境转移概率加权;不能把这两个平均都替换成最大值。
变量含义
V^π(s)在状态 s 开始并持续使用策略 π 的期望回报。Q^π(s,a)在状态 s 先执行 a,之后使用 π 的期望回报。π(a|s)固定策略在 s 选择动作 a 的概率。P(s′|s,a)环境转移概率;不能因为寻找最优策略就忽略不利分支。γ对下一状态价值的折扣权重。
计算步骤
- 1stop 的动作价值是 1,因为后面已经终止。
- 2continue 的动作价值是 0+0.9×4=3.6。
- 3固定随机策略的状态价值是 0.5×1+0.5×3.6=2.3。
- 4最优选择的状态价值是 max(1,3.6)=3.6,对应选择 continue。
代码对应位置
示例 1分别计算随机策略与最优选择的价值:让动作平均与动作最大值出现在同一段可核对的代码中。
变量解释
| 变量 | 含义 |
|---|---|
V^π(s) | 在状态 s 开始并持续使用策略 π 的期望回报。 |
Q^π(s,a) | 在状态 s 先执行 a,之后使用 π 的期望回报。 |
π(a|s) | 固定策略在 s 选择动作 a 的概率。 |
P(s′|s,a) | 环境转移概率;不能因为寻找最优策略就忽略不利分支。 |
γ | 对下一状态价值的折扣权重。 |
完整数值示例
同一个环境,固定策略价值与最优价值为何不同
已知条件
- 在 s0 可选 stop:立即得到 1 并终止;或选 continue:当前奖励 0,确定到达 s1。
- 在 s1 只有一个动作:得到 4 并终止,因此 s1 的价值为 4。
- gamma=0.9。固定策略在 s0 各以 0.5 概率选择两个动作。
计算步骤
- stop 的动作价值是 1,因为后面已经终止。
- continue 的动作价值是 0+0.9×4=3.6。
- 固定随机策略的状态价值是 0.5×1+0.5×3.6=2.3。
- 最优选择的状态价值是 max(1,3.6)=3.6,对应选择 continue。
计算结果
同一个 s0,在给定随机策略下价值为 2.3,在最优策略下价值为 3.6。差异来自动作选择规则。
处理前后对比
- 这里每个动作后的转移都是确定的;如果存在多个随机后果,还必须按转移概率加权。
- stop 的即时奖励更高,但 continue 的长期价值更高;只比较当前奖励会选错本例的最优动作。
- 把下一状态的真实价值 4 换成一个尚未学准的估计时,计算得到的只是对应估计下的一次目标。
计算与实现步骤
- 明确要计算 V 还是 Q,以及对应的是固定策略还是最优策略。
- 对每个合法动作写出即时奖励和可能的下一状态。
- 按环境转移概率计算一步奖励与下一价值的期望,终止后续价值置零。
- 固定策略按动作概率加权;寻找最优价值时在动作之间取最大。
- 对需要迭代的问题,说明初始化、更新方式和停止条件,并检查估计误差。
代码实现
示例 1
分别计算随机策略与最优选择的价值
example_01.py用途:让动作平均与动作最大值出现在同一段可核对的代码中。
gamma = 0.9
v_s1 = 4.0
q_s0 = {"stop": 1.0, "continue": 0.0 + gamma * v_s1}
policy = {"stop": 0.5, "continue": 0.5}
v_policy = sum(policy[action] * value for action, value in q_s0.items())
v_optimal = max(q_s0.values())
best_action = max(q_s0, key=q_s0.get)
print(f"V_policy={v_policy:.4f}")
print(f"V_optimal={v_optimal:.4f}")
print(f"choose={best_action}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
让动作平均与动作最大值出现在同一段可核对的代码中。
Step 1 · 1–10 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
gamma = 0.9
v_s1 = 4.0
q_s0 = {"stop": 1.0, "continue": 0.0 + gamma * v_s1}
policy = {"stop": 0.5, "continue": 0.5}
v_policy = sum(policy[action] * value for action, value in q_s0.items())
v_optimal = max(q_s0.values())
best_action = max(q_s0, key=q_s0.get)
print(f"V_policy={v_policy:.4f}")
print(f"V_optimal={v_optimal:.4f}")
print(f"choose={best_action}")预期输出或运行结果
V_policy=2.3000 V_optimal=3.6000 choose=continue
常见错误 · 4 条
- 计算固定策略价值时随意取 max,或计算最优价值时仍使用一个任意固定策略的动作平均。
- 只挑选随机环境最有利的下一状态,漏掉其他后果及其概率。
- 把使用当前估计得到的一次 backup 当成已经求得真实最优解。
- 给真正终止的状态继续加上后续价值,制造不存在的收益。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 计算固定策略价值时随意取 max,或计算最优价值时仍使用一个任意固定策略的动作平均。
- 只挑选随机环境最有利的下一状态,漏掉其他后果及其概率。
- 把使用当前估计得到的一次 backup 当成已经求得真实最优解。
- 给真正终止的状态继续加上后续价值,制造不存在的收益。
扩展内容说明
未找到可直接映射的本地强化学习文档;中文直觉、数值例子、代码和交互演示属于扩展解释,算法定义与公式以所列教材或原论文为依据。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 探索不足
- 目标漂移
- 函数近似不稳定
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
Bellman 方程和梯度下降是同一种东西吗?
不是。Bellman 方程表达价值的一步递归关系;梯度下降是优化参数的方法。使用神经网络近似价值时,可以用 Bellman 目标构造损失,再用梯度下降拟合,但两者职责不同。
算出一个 Bellman 目标,就已经得到最优价值了吗?
通常没有。目标依赖下一状态价值的当前估计与获得的数据;估计不准、覆盖不足或函数近似有误差时,一次更新仍可能偏离真实值。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。