MDP 与五元组
用状态、动作、转移、奖励和折扣统一描述序贯决策。
学习目标
- 定义MDP 与五元组并复述输入输出。
- 从公式计算一个最小数值例子。
- 说明它与相邻算法的区别、失败模式和适用场景。
为什么重要
MDP 把“环境是什么”和“智能体怎样学习”分开。先把状态、动作、转移、奖励和折扣写清楚,才能判断一个更新公式究竟在学习哪个决策问题。
它还帮助发现建模遗漏:如果当前状态没有包含影响下一步的关键信息,后续价值函数再复杂,也可能是在一个不合适的状态表示上学习。
学习前需要掌握
背景与问题
在连续决策中,一次动作既产生当前奖励,也改变之后会遇到的局面。例如机器人先充电会付出时间代价,却可能让下一次送货更有可能成功。
因此不能把每一步都当成互不相关的分类题。需要明确:当前有哪些状态、允许什么动作、动作可能导致哪些后果,以及怎样比较现在和未来的收益。
概念定义
一个常用 MDP 由状态集合 S、动作集合 A、转移概率 P、奖励规则 R 与折扣因子 gamma 描述。状态是对决策有用的环境表示,转移给出在当前状态执行某个动作后,各种下一状态出现的概率。
马尔可夫性质的关键是:给定当前状态与动作后,预测下一步不再额外依赖更早的历史。它不表示世界没有历史,而是要求当前状态已经包含该预测所需的信息。
策略描述智能体在状态下怎样选择动作,不属于环境五元组本身。同一个 MDP 可以被不同策略使用,产生不同的轨迹和回报。
直观理解
MDP 像游戏的规则书:有哪些局面、每个局面允许做什么、行动会以什么概率改变局面、改变后得到什么分数。策略则是玩家按照这些规则采用的打法。
知道规则书与通过试错学会打法是两件事。model-free 方法可以不知道完整转移表,而从真实或模拟交互中学习;这并不意味着环境没有转移规律。
核心原理
状态必须足以支持决策。如果电量影响能否送货,却只用当前位置作为状态,那么相同的“在仓库”可能对应完全不同的下一步结果。在这个例子中,补充电量信息有助于形成合适的状态表示;观察不充分时则可能需要历史估计或 POMDP 视角。
转移概率是一组条件分布。固定一个状态和合法动作后,各个可能下一状态的概率之和应为 1。只列出成功结果、忽略失败分支,会改变正在学习的问题。
奖励需要说明在什么时候、因为什么产生。即时奖励的期望与某一次实际得到的奖励不同,长期折扣回报又是另一个量,不能把三者互换。
终止状态意味着当前回合结束,不能继续往它后面拼接不存在的未来奖励。持续任务也可以用吸收状态等形式统一描述,但必须明确采用的约定。
数学表达
MDP 五元组
序贯决策问题的标准抽象。
变量含义
S所有状态;本例使用 low、ready、delivered 三个抽象状态。A(s)在状态 s 允许执行的动作;终止状态不再执行新动作。P(s′|s,a)在状态 s 执行动作 a 后到达 s′ 的概率。R(s,a,s′)这次转移产生的即时奖励,本例按转移给定。γ对未来奖励的折扣权重,本例为 0.9。
计算步骤
- 1对 ready 下的 deliver,检查转移概率 0.8+0.2=1。
- 2该动作的即时奖励期望为 0.8×5+0.2×(-1)=3.8。
- 3一条具体成功轨迹可以是 low→ready→delivered,对应奖励 [-1, 5]。
- 4这条具体轨迹的折扣回报为 -1+0.9×5=3.5;它不是所有随机轨迹回报的期望。
代码对应位置
示例 1核对转移分布与一条具体轨迹:显式写出送货动作的两种后果,分别检查期望奖励和样本轨迹回报。
变量解释
| 变量 | 含义 |
|---|---|
S | 所有状态;本例使用 low、ready、delivered 三个抽象状态。 |
A(s) | 在状态 s 允许执行的动作;终止状态不再执行新动作。 |
P(s′|s,a) | 在状态 s 执行动作 a 后到达 s′ 的概率。 |
R(s,a,s′) | 这次转移产生的即时奖励,本例按转移给定。 |
γ | 对未来奖励的折扣权重,本例为 0.9。 |
完整数值示例
把一个送货机器人写成明确的 MDP
已知条件
- 状态 low 表示需要充电,ready 表示可以送货,delivered 表示本回合成功结束。
- low 状态只允许 charge;ready 状态允许 deliver;delivered 终止。
- 充电必定变成 ready,奖励 -1;送货以 0.8 概率成功并得 5,以 0.2 概率回到 low 并得 -1。
- 折扣因子 gamma=0.9。所有数值都是为讲解而构造的规则。
计算步骤
- 对 ready 下的 deliver,检查转移概率 0.8+0.2=1。
- 该动作的即时奖励期望为 0.8×5+0.2×(-1)=3.8。
- 一条具体成功轨迹可以是 low→ready→delivered,对应奖励 [-1, 5]。
- 这条具体轨迹的折扣回报为 -1+0.9×5=3.5;它不是所有随机轨迹回报的期望。
计算结果
同一规则中,ready 送货的一步期望奖励为 3.8,而从 low 开始这条成功轨迹的回报为 3.5;两者回答不同问题。
处理前后对比
- 改变转移概率或奖励是在改变环境;在同一环境中改为选择不同动作是在改变策略。
- 如果只记录是否在仓库、不记录 low/ready 的区别,就丢掉了本例中决定合法动作与结果的重要信息。
- 一条成功轨迹不足以证明策略长期表现,必须把失败分支及其后续收益也纳入评价。
计算与实现步骤
- 确定状态包含哪些影响下一步结果的信息,并区分状态与实际可观察量。
- 列出各状态允许的动作,说明终止状态的处理方式。
- 为每个合法状态—动作对列出可能转移,并核对概率和。
- 明确奖励是在动作还是转移后产生,以及它与真实目标的关系。
- 设定折扣与回合结束规则,再另行定义或学习策略。
- 用一两条可手算轨迹检查模型是否表达了原问题,之后才选择算法。
代码实现
示例 1
核对转移分布与一条具体轨迹
example_01.py用途:显式写出送货动作的两种后果,分别检查期望奖励和样本轨迹回报。
transitions = {
("low", "charge"): [(1.0, "ready", -1.0)],
("ready", "deliver"): [(0.8, "delivered", 5.0),
(0.2, "low", -1.0)],
}
outcomes = transitions[("ready", "deliver")]
assert abs(sum(p for p, _, _ in outcomes) - 1.0) < 1e-12
expected_reward = sum(p * reward for p, _, reward in outcomes)
gamma = 0.9
one_successful_trajectory_return = -1.0 + gamma * 5.0
print(f"expected_immediate_reward={expected_reward:.4f}")
print(f"one_trajectory_return={one_successful_trajectory_return:.4f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
显式写出送货动作的两种后果,分别检查期望奖励和样本轨迹回报。
Step 1 · 1–12 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
transitions = {
("low", "charge"): [(1.0, "ready", -1.0)],
("ready", "deliver"): [(0.8, "delivered", 5.0),
(0.2, "low", -1.0)],
}
outcomes = transitions[("ready", "deliver")]
assert abs(sum(p for p, _, _ in outcomes) - 1.0) < 1e-12
expected_reward = sum(p * reward for p, _, reward in outcomes)
gamma = 0.9
one_successful_trajectory_return = -1.0 + gamma * 5.0
print(f"expected_immediate_reward={expected_reward:.4f}")
print(f"one_trajectory_return={one_successful_trajectory_return:.4f}")预期输出或运行结果
expected_immediate_reward=3.8000 one_trajectory_return=3.5000
常见错误 · 4 条
- 把策略混进环境五元组,或认为写出 MDP 就已经决定使用 Q-learning。
- 用缺少关键信息的观察替代状态,却没有检查马尔可夫假设是否合理。
- 把某条轨迹的奖励和、一步奖励期望以及长期价值当成同一个量。
- 漏写失败概率、非法动作或终止约定,使训练环境与原问题不一致。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 把策略混进环境五元组,或认为写出 MDP 就已经决定使用 Q-learning。
- 用缺少关键信息的观察替代状态,却没有检查马尔可夫假设是否合理。
- 把某条轨迹的奖励和、一步奖励期望以及长期价值当成同一个量。
- 漏写失败概率、非法动作或终止约定,使训练环境与原问题不一致。
扩展内容说明
未找到可直接映射的本地强化学习文档;中文直觉、数值例子、代码和交互演示属于扩展解释,算法定义与公式以所列教材或原论文为依据。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 探索不足
- 目标漂移
- 函数近似不稳定
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
MDP 与五元组是 on-policy 还是 off-policy?
这是基础或比较概念,具体归属取决于所讨论算法。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
Reinforcement Learning: An Introduction
从多臂赌博机、MDP、动态规划、蒙特卡洛和 TD 方法建立强化学习理论主线。
Richard Sutton / Andrew Barto · MIT Press
资料笔记
David Silver Reinforcement Learning Course
沿 MDP、动态规划、价值函数、TD、策略梯度和函数近似讲解经典强化学习。
David Silver · Google DeepMind / YouTube
资料笔记
UC Berkeley CS188 Introduction to AI
覆盖智能体、搜索、博弈、概率推理、MDP、强化学习和机器学习。
UC Berkeley EECS · UC Berkeley