2、马尔可夫决策过程:MDP四元组定义、状态与动作空间、奖励函数设计原则、折扣因子与回报、策略与价值函数

好,咱们正式开始聊强化学习的核心——马尔可夫决策过程,简称MDP。

说实话,我刚开始接触强化学习那会儿,看了不少论文,满屏的公式和符号,头都大了。后来我发现,MDP其实就是一套描述“智能体怎么跟环境打交道”的数学框架。你把它想明白了,后面所有算法都顺了。

2.1 MDP四元组:到底在说啥?

MDP用四个要素来描述一个决策问题,也就是所谓的四元组:(S, A, P, R)

  • S:状态空间。就是智能体能看到的所有可能情况。
  • A:动作空间。智能体可以做的所有操作。
  • P:状态转移概率。你做了某个动作后,环境会变成什么样。
  • R:奖励函数。你这一步做得好不好,环境给你一个分数。

举个例子,我做过一个四足机器人行走的项目。状态S就是机器人各个关节的角度、机身姿态、地面接触力;动作A就是每个关节电机的目标扭矩;P就是动力学方程,你给一个扭矩,机器人下一步的姿态就变了;R呢,就是往前走一步给正奖励,摔倒给负奖励。

嗯,这里要注意一点:MDP假设状态是完全可观测的。什么意思?就是智能体能拿到环境的全部信息。如果只能看到一部分,那就变成POMDP了,那是另一个话题。

核心要点:MDP四元组是强化学习的“世界观”。你设计的每个算法,本质上都是在利用这四样东西做优化。

2.2 状态与动作空间:怎么定义才合理?

我个人习惯,设计状态空间时先问自己三个问题:

  1. 这个状态对决策有用吗?比如机器人控制,关节角度肯定有用,但环境温度一般没用。
  2. 状态是不是太多了?状态维度太高,学习会非常慢。我见过有人把摄像头原始像素直接当状态,结果训练了三天都没收敛。
  3. 状态是不是太少了?少了就丢失信息,智能体根本学不会。

动作空间分两种:

  • 离散动作空间:比如上下左右四个方向。适合游戏、简单控制。
  • 连续动作空间:比如电机输出0.5牛米、-1.2牛米。适合机器人、自动驾驶。

我曾经踩过一个坑:做机械臂抓取时,把动作空间定义成“每个关节的目标角度”,结果训练出来的策略抖得厉害。后来改成“关节角速度”,平滑多了。你想想看,动作空间的定义直接影响策略的平滑性和安全性。

小技巧:如果动作空间是连续的,尽量归一化到[-1, 1]或[0, 1]区间。这样神经网络好训练,收敛也快。

2.3 奖励函数设计原则:这才是真正的艺术

奖励函数设计,说白了就是告诉智能体“什么是对的”。但这里门道很多。

原则一:稀疏 vs 密集

稀疏奖励:只有到达终点才给+1,其他都是0。好处是简单,坏处是学习极慢。我做过一个迷宫导航,用稀疏奖励,跑了100万步都没找到出口。

密集奖励:每一步都给一个小奖励,比如离目标近了给+0.1,远了给-0.1。学习快,但容易让智能体钻空子。

原则二:避免“奖励黑客”

你设计的奖励,智能体可能会找到你没想到的“捷径”。我记得有个经典案例:让智能体学习清理桌面,奖励是“清理掉的垃圾数量”。结果智能体学会了把垃圾推到地上——桌面干净了,但地上全是垃圾。这就是奖励函数没设计好。

原则三:奖励要可比较

不同任务的奖励量级最好差不多。如果一个任务奖励是0到1,另一个是-1000到1000,那训练时会出问题。

避坑指南:我曾经设计过一个机器人行走的奖励函数,把“前进速度”和“能耗”放在一起加权求和。结果权重没调好,机器人学会了原地抖动——速度是0,但能耗很低,奖励反而高。后来我改成“速度必须大于阈值才给奖励”,才解决了问题。

2.4 折扣因子与回报:未来的钱不值钱

折扣因子γ,取值范围[0, 1]。它决定了智能体有多“短视”。

  • γ=0:只看眼前这一步的奖励。
  • γ=1:未来的奖励和现在一样重要。
  • γ=0.9~0.99:常用范围,兼顾短期和长期。

回报G_t,就是从当前时刻开始,所有未来奖励的折扣和:

G_t = R_t + γ * R_{t+1} + γ² * R_{t+2} + ...

为什么要有折扣因子?两个原因:

  1. 数学上保证收敛:无限时间步的奖励和可能发散,折扣后就能收敛。
  2. 实际意义:未来的不确定性大,早点拿到奖励更靠谱。你想想看,让你选“今天拿100块”还是“一年后拿100块”,正常人都会选今天。

我个人的经验:机器人控制任务,γ一般取0.95到0.99。取太小,机器人只顾眼前,不会规划路径;取太大,训练不稳定,因为未来奖励的方差太大。

2.5 策略与价值函数:智能体的“大脑”

策略π:就是智能体的行为准则。给定一个状态s,策略告诉你该做什么动作a。

  • 确定性策略:π(s) = a,每个状态对应唯一动作。
  • 随机性策略:π(a|s) = 概率,每个动作都有一定概率被选中。

价值函数:用来评估“当前状态有多好”或者“当前动作有多好”。

  • 状态价值函数V(s):从状态s开始,按照策略π行动,能获得的期望回报。
  • 动作价值函数Q(s, a):在状态s执行动作a,之后按照策略π行动,能获得的期望回报。

这两者的关系很简单:V(s) = max_a Q(s, a)(对于最优策略而言)。

我记得刚开始学的时候,总搞不清V和Q的区别。后来做项目时想明白了:V是“这个位置好不好”,Q是“在这个位置做这个动作好不好”。比如下棋,V告诉你当前局面是优势还是劣势,Q告诉你走这一步棋好不好。

一句话总结:策略决定行为,价值函数评估行为的好坏。强化学习的目标,就是找到最优策略,让价值函数最大化。

2.6 知识体系总览

下面这张图,把MDP的核心逻辑串起来了。我建议你多看几遍,把每个概念之间的关系理清楚。

马尔可夫决策过程(MDP)知识体系 MDP四元组 (S, A, P, R) 状态空间 · 动作空间 · 状态转移概率 · 奖励函数 状态与动作空间 离散 vs 连续 维度设计 · 归一化 奖励函数设计 稀疏 vs 密集 避免奖励黑客 折扣因子 γ 与回报 G_t γ ∈ [0, 1] G_t = R_t + γR_{t+1} + γ²R_{t+2} + ... 策略 π 与价值函数 策略:π(s) 或 π(a|s) 价值:V(s) 和 Q(s, a) 最终目标:找到最优策略 π* 最大化期望累积回报

这张图把MDP的核心要素串成了一条线:从四元组出发,定义好状态和动作,设计好奖励函数,用折扣因子计算回报,最后通过策略和价值函数找到最优解。每一步都环环相扣。

好了,MDP的基础概念就聊到这儿。说白了,它就是强化学习的“世界观”——你理解了它,后面所有算法都只是在这个框架上做文章。


公众号:蓝海资料掘金营,微信deep3321