第三节:马尔可夫决策过程——强化学习的“游戏规则”

各位同学,今天我们来聊聊强化学习里最核心的一个概念——马尔可夫决策过程,简称MDP。说实话,我刚开始接触强化学习时,觉得MDP就是个数学框架,离实际挺远的。直到后来做机器人控制项目,才真正体会到:不理解MDP,你连强化学习的大门都没摸到。

MDP说白了,就是给智能体制定一套“游戏规则”。它告诉我们:智能体在什么状态下,可以做什么动作,做完动作后会变成什么新状态,能拿到多少奖励。嗯,就这么简单。

3.1 MDP五元组:五个要素,缺一不可

一个完整的MDP由五个元素组成,我习惯叫它“五元组”。你想想看,就像做菜需要食材、调料、火候一样,MDP也需要这五个东西才能运转起来。

  • S(状态空间):智能体可能处于的所有状态。比如机器人关节的角度、速度。
  • A(动作空间):智能体可以执行的所有动作。比如给电机施加多大的力矩。
  • P(状态转移概率):执行动作后,状态会怎么变化。这是随机性的来源。
  • R(奖励函数):每个状态或动作能拿到多少奖励。这是智能体的“动力”。
  • γ(折扣因子):未来奖励的打折系数。0到1之间的一个数。

核心要点:五元组定义了强化学习问题的全部边界。你设计算法时,本质上就是在定义或学习这五个元素。

我在项目中遇到过一个问题:有人把状态空间定义得太大,结果算法怎么都学不出来。后来我建议他把关节角度离散化,问题就解决了。所以,状态空间的设计直接影响学习效率。

3.2 状态转移概率:世界不是确定的

状态转移概率P(s'|s,a)表示:在状态s执行动作a后,到达状态s'的概率。为什么不是确定的?因为现实世界有噪声啊!

举个例子:你让机器人关节转到30度,但电机有误差、摩擦力有波动,实际可能转到29.8度或30.2度。这就是随机性。

我曾经调试一个四足机器人,发现它走路总是歪。排查了半天,原来是状态转移概率没建模好——地面摩擦系数变化导致实际运动与预期不符。后来我加入了随机噪声,模型就稳了。

我的经验:在仿真环境中,状态转移概率通常是确定的(你知道下一步会到哪)。但在真实机器人上,一定要考虑随机性。否则仿真跑得再好,一上真机就翻车。

3.3 回报与折扣因子:短期还是长期?

回报G_t是智能体从当前时刻开始,到未来所有奖励的总和。但这里有个问题:未来的奖励值多少钱?

折扣因子γ就是干这个的。γ=0时,智能体只看眼前奖励;γ=1时,未来奖励和现在一样重要。实际中γ通常取0.9到0.99之间。

为什么要有折扣?我个人觉得有两个原因:

  1. 数学上:保证无限时间步的回报收敛,不会无穷大。
  2. 直觉上:现在的100块比未来的100块更值钱。你想想看,是不是这个道理?

避坑指南:我曾经在训练一个机械臂抓取任务时,把γ设成了0.99。结果智能体学会了“拖延”——它先做一堆无关动作,最后才抓取。因为γ接近1,它觉得“反正未来奖励差不多”。后来我把γ降到0.9,它就开始积极抓取了。

3.4 价值函数与策略:评估与决策

价值函数和策略,是MDP里最核心的两个概念。一个负责“评估”,一个负责“决策”。

3.4.1 价值函数:这个状态值多少钱?

状态价值函数V(s)表示:从状态s开始,按照某个策略行动,能获得的期望回报。说白了,就是“这个状态好不好”。

动作价值函数Q(s,a)表示:在状态s执行动作a后,再按照某个策略行动,能获得的期望回报。它比V(s)多了一个“动作”维度。

我记得刚开始学的时候,总搞不清V和Q的区别。后来做项目时发现:V函数用于评估状态,Q函数用于选择动作。就这么简单。

3.4.2 策略:下一步该怎么做?

策略π(a|s)表示:在状态s下,选择动作a的概率。策略就是智能体的“行为准则”。

策略分两种:

  • 确定性策略:每个状态对应一个确定的动作。比如“关节角度30度时,施加5N·m力矩”。
  • 随机性策略:每个状态对应一个动作概率分布。比如“有80%概率施加5N·m,20%概率施加3N·m”。

为什么要有随机策略?因为探索!如果总是选最优动作,可能永远发现不了更好的路径。我习惯在训练初期用随机策略,后期再逐渐确定化。

3.5 MDP知识体系总览

下面这张图是我自己画的,把MDP的核心逻辑串起来了。你看一遍就能明白:智能体怎么感知状态、怎么决策、怎么获得奖励、怎么更新策略。

马尔可夫决策过程(MDP)核心逻辑 智能体 策略 π(a|s) 环境 状态转移 P(s'|s,a) 状态 s 价值 V(s) / Q(s,a) 动作 a 执行动作 奖励 r 新状态 s' 奖励 r 折扣因子 γ 回报 G_t 反馈 MDP五元组:S, A, P, R, γ 智能体在状态s执行动作a → 环境转移到s'并给出奖励r → 智能体更新策略 目标:最大化期望回报 E[G_t]

3.6 实战中的MDP设计要点

说了这么多理论,来点实际的。我在做机器人关节控制时,MDP设计有几个关键点:

MDP元素 设计要点 我的经验
状态空间S 包含关节角度、角速度、目标位置 不要包含无关信息,否则维度爆炸
动作空间A 电机力矩或目标角度 连续动作用高斯策略,离散用softmax
奖励函数R 接近目标给正奖励,远离给负奖励 奖励要稀疏但不要太空,否则学不动
折扣因子γ 0.9~0.99 任务周期短用0.9,长用0.99

小技巧:如果你不确定奖励函数怎么设计,先试试“到达目标+1,否则0”。简单粗暴,但往往有效。我第一个成功的机器人控制项目就是这么干的。

好了,MDP的核心内容就这些。记住:五元组是骨架,价值函数是评估,策略是决策。把这几个概念吃透了,后面的强化学习算法就是水到渠成的事。

可可精品资料库