强化学习基础回顾:马尔可夫决策过程(MDP)

好,咱们正式开始。在动手写轨迹跟踪代码之前,我强烈建议先把地基打牢。你想想看,强化学习那么多花里胡哨的算法,本质上都是在解决同一个问题——马尔可夫决策过程,简称 MDP。

我个人习惯把 MDP 比作一个「游戏规则说明书」。你只要搞懂了这份说明书,后面看 DQN、PPO、SAC 这些算法,就像看不同玩家怎么玩同一个游戏一样,思路会清晰很多。

核心一句话:MDP 是描述智能体与环境交互的数学框架。轨迹跟踪里的每一个决策步骤,都能用 MDP 来建模。

状态(State)—— 你看到了什么?

状态就是智能体在某个时刻观察到的环境信息。说白了,就是「你现在知道些啥」。

在轨迹跟踪任务里,状态通常包括:

  • 当前的位置坐标 (x, y)
  • 当前的速度 v 和方向角 θ
  • 目标轨迹的参考点位置
  • 与参考轨迹的横向偏差、航向偏差

我在做无人机轨迹跟踪项目时,一开始只用了位置和速度作为状态。结果发现无人机老是震荡,后来加上了过去两步的偏差量作为状态,效果立马就稳了。嗯,这里要注意:状态不是越多越好,关键是要包含能帮助决策的信息。

小技巧:如果你不确定该用哪些状态,可以先从「位置 + 速度 + 偏差」开始,然后逐步增加维度,观察训练曲线是否改善。

动作(Action)—— 你能做什么?

动作就是智能体可以执行的操作。在轨迹跟踪里,动作空间通常有两种:

  • 离散动作:比如左转 10°、右转 10°、加速、减速
  • 连续动作:比如方向盘转角 -30° 到 30°,油门开度 0 到 1

我个人更推荐从连续动作开始。为什么?因为真实的物理系统(比如机器人、自动驾驶汽车)本身就是连续的。你想想看,谁会每次只转 10 度?

避坑指南:我曾经在仿真里用离散动作跑得好好的,一上真车就抖得不行。后来发现是动作粒度太粗,导致控制不平滑。如果你最终要部署到实物上,建议一开始就设计连续动作空间。

奖励(Reward)—— 你干得怎么样?

奖励函数是 MDP 里最玄学、也最关键的部分。它告诉智能体:「你这一步做得好不好」。

轨迹跟踪的奖励设计,我总结了一个通用公式:

reward = - (w1 * 横向偏差² + w2 * 航向偏差² + w3 * 动作变化量²)

这里每个项的含义:

  • 横向偏差:离目标轨迹有多远,越小越好
  • 航向偏差:车头方向对不对,越小越好
  • 动作变化量:控制动作是否平滑,避免剧烈抖动

w1、w2、w3 是权重系数。我习惯先设成 1:1:0.1,然后根据训练效果微调。

重要提醒:奖励函数不要设计得太复杂。我见过有人加了七八个惩罚项,结果智能体直接摆烂——因为怎么动都是负奖励。记住:简单、明确、可区分,这六个字是奖励设计的黄金法则。

策略(Policy)—— 你怎么做决定?

策略就是智能体的「大脑」。它根据当前状态,决定下一步该执行什么动作。

策略有两种表示方式:

类型 含义 轨迹跟踪中的应用
确定性策略 给定状态,直接输出动作 适合已知环境、固定轨迹
随机性策略 给定状态,输出动作的概率分布 适合有噪声、需要探索的场景

我个人在轨迹跟踪里更常用确定性策略。因为跟踪任务要求稳定、可重复,随机策略容易导致抖动。但如果你在做路径规划的前期探索阶段,随机策略会更合适。

价值函数(Value Function)—— 这条路能走多远?

价值函数是策略的「评估师」。它回答一个问题:「如果我从当前状态出发,按照当前策略走下去,未来能拿到多少总奖励?」

价值函数分两种:

  • 状态价值函数 V(s):从状态 s 出发,未来奖励的期望
  • 动作价值函数 Q(s, a):在状态 s 执行动作 a 后,未来奖励的期望

你可能会问:「这俩有啥区别?」

简单说:V 函数只看状态好不好,Q 函数还看动作好不好。在轨迹跟踪里,Q 函数更实用——因为它能直接告诉你「当前这个方向盘角度对不对」。

我的经验:刚开始学的时候,别纠结 V 和 Q 的数学推导。你只需要记住:价值函数就是给状态(或状态-动作对)打分。分数越高,说明这个状态越有前途。

知识体系总览

下面这张图,是我自己梳理的 MDP 核心逻辑。你看一遍,应该就能把上面这些概念串起来了。

马尔可夫决策过程(MDP)核心结构 智能体 (Agent) 策略 π(a|s) 环境 (Environment) 状态转移 + 奖励 动作 a_t 状态 s_t 奖励 r_t 核心循环:s₀ → a₀ → r₁, s₁ → a₁ → r₂, s₂ → ... 目标:最大化累计奖励 G = Σ γᵗ · rₜ 状态 S 位置、速度、偏差 动作 A 转角、油门 奖励 R 偏差惩罚 策略 π 决策网络 价值函数 V(s) / Q(s, a) —— 评估未来收益

这张图把 MDP 的闭环讲清楚了:智能体看到状态 s,做出动作 a,环境反馈新的状态 s' 和奖励 r。如此循环往复,直到任务结束。价值函数则站在更高维度,评估这个循环到底值不值得继续。

写在最后

MDP 是强化学习的基石。你可能会觉得这些概念太基础,但说实话,我见过不少人在写轨迹跟踪代码时,连状态空间都没定义清楚就开始调网络,结果折腾两周还不如一个简单的 PID 控制器。

所以我的建议是:花 30 分钟,拿张纸,把你当前任务的 MDP 五要素(状态、动作、奖励、策略、价值函数)写下来。写清楚了再动手写代码,你会发现自己少走很多弯路。

下一节,我们会把这些概念落地到具体的轨迹跟踪算法里。到时候你会发现,原来 MDP 不是纸上谈兵,而是真能跑起来的。


可可精品资料库