有限马尔可夫决策过程(MDP)实战解析:从理论到价值函数计算

张开发
2026/4/18 23:17:33 15 分钟阅读

分享文章

有限马尔可夫决策过程(MDP)实战解析:从理论到价值函数计算
1. 有限马尔可夫决策过程MDP基础概念想象你正在玩一个迷宫游戏。每走一步都会消耗体力找到出口能获得奖励。这个场景就是典型的**有限马尔可夫决策过程MDP**的体现。MDP是强化学习的数学框架由五个核心要素构成状态S迷宫中的每个位置就是一个状态动作A上下左右移动的选择转移概率P执行动作后到达新状态的概率奖励R到达特定状态获得的即时反馈折扣因子γ未来奖励的衰减系数我曾在机器人路径规划项目中用MDP建模环境时踩过一个坑误将非马尔可夫状态当作状态变量。比如同时记录过去3个位置作为状态导致状态空间爆炸。后来发现只要当前坐标周围障碍物信息就满足马尔可夫性——下一状态只依赖当前状态与动作这正是MDP的核心特征。2. 价值函数衡量状态好坏的标准2.1 状态价值函数v(s)在迷宫游戏中某些位置虽然暂时没有奖励但靠近出口更有潜力。这种长期价值用**状态价值函数v(s)**表示def state_value(s, policy, gamma0.9): 计算给定策略下状态s的价值 total 0 for a in possible_actions(s): prob policy(a|s) # 策略给出的动作概率 next_s, reward env.transition(s,a) total prob * (reward gamma * state_value(next_s)) return total实际项目中我发现当状态空间较大时这种递归计算会非常低效。后来改用动态规划先计算终端状态价值再反向传播效率提升显著。2.2 动作价值函数q(s,a)在开发游戏AI时我们不仅需要知道某个位置的价值还要知道执行特定动作的价值。这就是动作价值函数q(s,a)状态左移右移上移下移(1,1)-0.20.50.1-0.5(1,2)0.31.00.20.4表格中(1,2)位置右移价值最高这与人工测试结果一致。但有趣的是当折扣因子γ从0.9调整为0.5时最优动作会变化——说明长期规划会影响即时决策。3. 贝尔曼方程价值计算的核心3.1 贝尔曼期望方程贝尔曼方程揭示了当前价值与后续价值的递归关系。在智能仓储机器人项目中我们用矩阵形式表示V R γPV其中P是状态转移矩阵。解这个方程时我最初直接求逆矩阵后来发现迭代法更稳定def value_iteration(states, rewards, gamma, threshold1e-6): V np.zeros(len(states)) while True: delta 0 for s in states: v V[s] V[s] max([rewards[s,a] gamma*sum(p*V[s_] for p,s_ in transitions[s,a]) for a in actions]) delta max(delta, abs(v - V[s])) if delta threshold: break return V3.2 贝尔曼最优方程当我们需要找到全局最优策略时贝尔曼最优方程就派上用场了。它用max操作替代期望V*(s) max_a [ R(s,a) γΣP(s|s,a)V*(s) ]在无人机路径规划中这个方程对应的值迭代算法表现出色。但要注意当状态空间超过1万个时需要结合函数逼近方法。4. 实战网格世界中的MDP建模让我们构建一个3x3网格世界S7 S8 S9 S4 S5 S6 S1 S2 S3目标从任意位置移动到S9奖励1移动规则80%概率按指令移动20%概率随机方向边界撞墙保持原位折扣因子γ0.94.1 策略评估固定策略随机选择四个方向各25%概率。通过迭代计算得到各状态价值0.66 0.75 1.00 0.50 0.60 0.00 0.40 0.45 0.50可以看到靠近目标的状态价值更高而S6由于被设定为陷阱奖励-1价值最低。4.2 策略优化采用策略迭代算法经过3轮迭代后得到最优策略→ → 终点 ↑ → 陷阱 ↑ → ↑这个结果验证了我们的设计从任何位置都能找到最优路径避开陷阱。5. 工程实践中的挑战与解决方案在实际应用MDP时我遇到过几个典型问题维度灾难状态空间随变量指数增长解决方案使用特征工程降维案例在电商推荐系统中将用户历史行为聚合为统计特征稀疏奖励大部分状态奖励为0解决方案设计基于目标的奖励函数案例在机器人抓取任务中设置接近目标的中间奖励部分可观测传感器信息不完整解决方案扩展为POMDP模型案例在自动驾驶中用LSTM记忆历史状态特别提醒价值函数计算时要注意数值稳定性。我曾因γ值过大如0.999导致迭代发散最终通过设置1e-6的收敛阈值解决。

更多文章