Partial Observability 与 POMDP
观察不足以确定真实状态时,用历史、belief 或记忆决策。
学习目标
- 在信息不完整时维护对隐藏状态的信念,区分估计状态与选择动作。
- 独立复核“用带噪声观察更新门开启的概率”的输入、计算和解释。
- 后验结合先验与似然,不能只使用检测准确率。
为什么重要
在信息不完整时维护对隐藏状态的信念,区分估计状态与选择动作。
学习前需要掌握
背景与问题
机器人隔着噪声传感器判断门是否开启,读数为“开”并不保证门真的开。若按一次读数立即冲过去,策略可能忽略传感器可靠性和先前观察;部分可观测模型让这种不确定性进入决策。
概念定义
POMDP 在状态、动作、转移与奖励之外加入观测及观测模型。智能体只能通过历史动作和观察推断隐藏状态。belief 是各隐藏状态的条件概率分布;在已知模型下,更新后的 belief 可以作为决策所需的信息状态。
直观理解
医生收到阳性检测,要结合先验患病率与检测误报率更新判断。检测结果是观察,真实是否患病是隐藏状态;重复检查还可能是为了获得信息而采取的动作。
核心原理
belief 更新先用动作转移模型预测下一隐藏状态分布,再乘以新观察在各状态下的似然,最后归一化。忘记转移预测或归一化,都会把不完整证据误当确定状态。
控制动作可能同时改变物理状态与未来信息,例如绕到另一个角度看障碍。只将最可能状态代入完全可观测控制器会丢掉不确定性,可能选择需要更多确信才安全的动作。
精确 belief 的维度随状态空间增长,已知观测模型也常不现实。粒子滤波、循环策略或有限历史是近似方法;它们的估计质量与训练分布、记忆长度和模型误差有关。
数学表达
静态隐藏状态的 Bayes 更新
本式为没有状态变化的特例;一般 POMDP 需先按动作预测隐藏状态。
变量含义
b(s)观察前的状态信念p(o∣s)隐藏状态 s 下观察 o 的似然
计算步骤
- 1“开且报告开”的质量是 0.3×0.8=0.24。
- 2报告开的总质量为 0.24+0.7×0.2=0.38。
- 3后验开门概率为 0.24/0.38≈0.631579。
代码对应位置
示例 1用带噪声观察更新门开启的概率:看到“开”后,belief 从 0.3 升至约 0.6316,而不是变成 1。
变量解释
| 变量 | 含义 |
|---|---|
b(s) | 观察前的状态信念 |
p(o∣s) | 隐藏状态 s 下观察 o 的似然 |
完整数值示例
用带噪声观察更新门开启的概率
已知条件
- 门开启先验概率 0.3。
- 开门时报告“开”的概率 0.8,关门时误报概率 0.2。
计算步骤
- “开且报告开”的质量是 0.3×0.8=0.24。
- 报告开的总质量为 0.24+0.7×0.2=0.38。
- 后验开门概率为 0.24/0.38≈0.631579。
计算结果
看到“开”后,belief 从 0.3 升至约 0.6316,而不是变成 1。
处理前后对比
- 后验结合先验与似然,不能只使用检测准确率。
- 本例无状态变化;有动作转移时要先做预测步骤。
计算与实现步骤
- 收集观察历史
- 更新 belief
- 按 belief 决策
代码实现
示例 1
用带噪声观察更新门开启的概率
example_01.py用途:看到“开”后,belief 从 0.3 升至约 0.6316,而不是变成 1。
prior_open = 0.3
open_mass = prior_open * 0.8
closed_mass = (1 - prior_open) * 0.2
posterior_open = open_mass / (open_mass + closed_mass)
print(f"posterior_open={posterior_open:.6f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
看到“开”后,belief 从 0.3 升至约 0.6316,而不是变成 1。
Step 1 · 1–5 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
prior_open = 0.3
open_mass = prior_open * 0.8
closed_mass = (1 - prior_open) * 0.2
posterior_open = open_mass / (open_mass + closed_mass)
print(f"posterior_open={posterior_open:.6f}")预期输出或运行结果
posterior_open=0.631579
常见错误 · 3 条
- 把最近一次观察直接当作隐藏状态。
- 贝叶斯更新后没有归一化。
- 忽略获取信息的动作也可能有长期价值。
实际应用
- 序贯决策
- 控制与资源分配
常见错误
- 把最近一次观察直接当作隐藏状态。
- 贝叶斯更新后没有归一化。
- 忽略获取信息的动作也可能有长期价值。
扩展内容说明
本页数值均为解释机制的构造案例,不能解读为真实训练或基准性能。定义和适用条件参见 Sutton 与 Barto《Reinforcement Learning: An Introduction》(第 17 章的部分可观测讨论)。
算法属性与数据边界
失败模式、风险与性能
失败模式
- 把最近一次观察直接当作隐藏状态。
- 贝叶斯更新后没有归一化。
- 忽略获取信息的动作也可能有长期价值。
风险
- 奖励函数与真实目标不一致会诱发奖励黑客。
- 部署策略的行动权限必须由环境和应用层约束。
性能考虑
- 样本效率、墙钟时间和显存占用需要分别报告。
- 应使用多个随机种子、置信区间和固定评测策略。
常见问题
belief 是真实状态吗?
它是对真实状态的概率估计。正确模型下它概括观测历史,但仍保留不确定性,不能当作已经观察到的真值。
网页是否会训练模型?
不会。所有图表使用固定种子或解析公式在浏览器本地计算,不执行页面中的示例代码。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。