部分可观测马尔可夫决策过程
部分可观测马尔可夫决策过程(partially observable Markov decision process,POMDP)描述状态不能直接看见、行动会影响后续状态、观测只提供部分信息的序贯决策问题。它不把一次测量直接当成真实状态,而是维护各个可能状态的条件概率,称为信念状态。
状态、行动与观测
有限模型包含状态集合 、行动集合 、观测集合 、转移概率 、观测概率 和阶段成本 。这里约定先选行动、再转移状态、最后获得观测。信念 是给定已有行动和观测历史后,当前状态为 的概率。
选行动 后先预测 ,观察 后用贝叶斯公式修正: 分母是当前行动下出现该观测的概率;若为零,该观测在所给模型中不可能,不能硬把零除零归一化。[1]
检测与维修的可复算例子
构造两状态设备:健康 与故障 ,当前健康概率 。本次检测不改变状态。检测呈阳性时,健康设备产生该信号的概率为 ,故障设备为 ;这里“阳性”只是信号名称。于是 阴性信号概率为 ,健康后验为 。
随后可付成本三维修,或不维修但在故障时承受成本九。给定健康概率 ,两种期望成本分别为三和 ,所以当 时不维修更便宜。无检测时最小成本为三;阳性后不维修,成本 ;阴性后维修,成本三。检测免费时总期望成本为 。信息让行动随信号改变,而不是神奇地消除了状态不确定性。
信念状态与后续决策
给定 ,下一次观测的概率和后验都由上述两步确定,因此完整历史对未来的影响可压缩到 ;这是转移与观测条件独立结构的结果。若剩余 步,成本的Bellman递推为 其中 为终端成本,,零概率观测项不需要定义后验。即便原状态数有限,信念仍在概率单纯形上连续变化,计算量可能很大。这个递推不是把未知状态先猜成一个最可能值再按完全可观测模型行动;后者可能丢掉对信息收集有用的不确定性。
后验更新的Python实现
下例只计算本例的恒等状态转移后的单次观测修正,不求解一般POMDP。输入是等长的非空先验和似然,不改写输入,返回归一化后验;时间和额外空间均为 。
import math
def belief_update(prior, likelihood):
p, z = tuple(prior), tuple(likelihood)
if not p or len(p) != len(z):
raise ValueError("matching nonempty vectors required")
if not all(math.isfinite(v) and 0 <= v <= 1 for v in p + z):
raise ValueError("probabilities must lie in [0, 1]")
if not math.isclose(sum(p), 1.0, rel_tol=0, abs_tol=1e-12):
raise ValueError("prior must sum to one")
weights = [a * b for a, b in zip(p, z)]
evidence = sum(weights)
if evidence == 0:
raise ValueError("observation has zero model probability")
return tuple(w / evidence for w in weights)
print(belief_update((0.6, 0.4), (0.8, 0.2)))
print(belief_update((0.6, 0.4), (0.2, 0.8)))
输出分别约为 和 。变式。 若检测费为 ,检测后的总成本为 ,高于直接维修的三,应放弃检测。信息可以改善后续选择,但获取信息的成本也属于决策问题。
参考资料
- ↑ Leslie P. Kaelbling、Michael L. Littman、Anthony R. Cassandra,Planning and Acting in Partially Observable Stochastic Domains (1998),§3.1—3.4,POMDP时序、信念更新和信念MDP;Artificial Intelligence 101:99–134。