Dynamic Programming、Policy/Value Iteration
已知环境模型时,通过全状态备份进行策略评估和改进。
学习目标
- 用已知环境模型精确做期望备份,区分策略评价与策略改进。
- 独立复核“随机后继下的一次最优备份”的输入、计算和解释。
- 必须对随机后继求期望,不能只挑最好后继。
为什么重要
用已知环境模型精确做期望备份,区分策略评价与策略改进。
学习前需要掌握
背景与问题
小型调度问题中,所有转移概率和成本可能已经给定。此时不必先通过随机试验估计每一步结果,可以直接枚举后继状态并计算期望;这正是动态规划成为强化学习基准和概念起点的原因。
概念定义
动态规划在已知转移与奖励模型下,对价值函数反复应用 Bellman 备份。策略迭代交替做给定策略的评价和贪心改进;价值迭代直接应用最优备份。它不是从固定轨迹直接求平均,也不要求训练一个神经网络。
直观理解
如果有完整路线图和每段路的通行概率,可以在地图上反复更新“从这里出发还要花多少成本”,不必真的把每条路线都走一遍。
核心原理
策略评价对动作按当前策略加权,并对各后继按模型概率加权。策略改进比较动作价值后改变策略;混用两个步骤会把“评价旧策略”误写成“寻找最优策略”。
同步备份用同一份旧价值计算所有新值,原地异步备份立即使用刚更新的值。它们在适当条件下可以接近同一固定点,但每轮中间数值不同,手算与代码必须说明更新顺序。
有限折扣 MDP 的 Bellman 最优算子具有压缩性质,可支持相应收敛结论;不折扣持续任务、近似模型和任意非线性逼近需要额外条件。全状态与动作扫描也会遇到维数灾难。
数学表达
Bellman 最优备份
变量解释
| 变量 | 含义 |
|---|---|
p | 已知的后继状态与奖励联合模型 |
V_k | 第 k 次备份前的状态价值 |
γ | 折扣因子 |
完整数值示例
随机后继下的一次最优备份
已知条件
- 动作 stop 立即得 2 并终止。
- 动作 try 奖励为 0,以 0.5 到达价值 4 的状态,以 0.5 到达价值 0 的状态;折扣 0.9。
计算步骤
- 先求 try 的后继价值期望:0.5×4+0.5×0=2。
- try 的备份值为 0+0.9×2=1.8。
- 比较 stop=2 与 try=1.8,选择 stop。
计算结果
一次最优备份得到 V(s)=2.000,贪心动作为 stop。
处理前后对比
- 必须对随机后继求期望,不能只挑最好后继。
- 有限一次备份并不代表全部状态已达到固定点。
计算与实现步骤
- 初始化价值
- Bellman sweep
- 贪心改进
- 直到变化足够小
代码实现
示例 1
随机后继下的一次最优备份
example_01.py用途:一次最优备份得到 V(s)=2.000,贪心动作为 stop。
gamma = 0.9
q = {"stop": 2.0, "try": gamma * (0.5 * 4.0 + 0.5 * 0.0)}
print(f"Q_stop={q['stop']:.3f}, Q_try={q['try']:.3f}")
print("best=" + max(q, key=q.get))代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
一次最优备份得到 V(s)=2.000,贪心动作为 stop。
Step 1 · 1–4 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
gamma = 0.9
q = {"stop": 2.0, "try": gamma * (0.5 * 4.0 + 0.5 * 0.0)}
print(f"Q_stop={q['stop']:.3f}, Q_try={q['try']:.3f}")
print("best=" + max(q, key=q.get))预期输出或运行结果
Q_stop=2.000, Q_try=1.800 best=stop
常见错误 · 3 条
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 模型未知时仍声称做了精确 Bellman 期望。
- 手算用同步更新,代码却原地更新而不说明。
- 把折扣有限表格结论推广到任意函数逼近。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Sutton 与 Barto《Reinforcement Learning: An Introduction》(第 4 章)。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 模型未知时仍声称做了精确 Bellman 期望。
- 手算用同步更新,代码却原地更新而不说明。
- 把折扣有限表格结论推广到任意函数逼近。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
动态规划是否需要环境交互数据?
若模型完全已知,可以直接规划;若模型由数据估计,规划虽仍可执行,但误差与收敛结论须考虑估计模型的可靠性。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。