3、马尔可夫决策过程:MDP四元组、状态转移概率、奖励函数、折扣因子、策略与价值函数、贝尔曼方程
好,咱们今天聊聊马尔可夫决策过程,也就是 MDP。这玩意儿是强化学习的基石,说白了,你后面学的所有算法,都绕不开它。
我记得我刚接触强化学习那会儿,看了半天论文,满脑子都是「状态」、「动作」、「奖励」这些词,但就是串不起来。后来自己动手写了个小机器人找宝藏的 demo,才真正理解了 MDP 到底在干嘛。
你想想看,强化学习要解决的核心问题是什么?就是一个智能体在环境里瞎逛,通过试错来学习怎么做决策。而 MDP,就是给这个「瞎逛」的过程,搭了一个数学框架。
3.1 MDP 四元组:强化学习的骨架
一个标准的 MDP,可以用一个四元组来描述:(S, A, P, R)。嗯,这里要注意,有些教材会写成五元组,多一个折扣因子 γ,但我个人习惯把 γ 单独拎出来讲,这样更清晰。
- S:状态空间。就是智能体所有可能处于的状态的集合。比如机器人导航,状态就是它在地图上的坐标。
- A:动作空间。智能体可以执行的所有动作。比如「前进」、「左转」、「右转」。
- P:状态转移概率。这是 MDP 的灵魂,后面细说。
- R:奖励函数。告诉智能体,这一步走得对不对。
我在项目中遇到过一个问题:状态空间定义得太细,导致模型训练慢得像蜗牛。后来我学乖了,先粗粒度定义,再逐步细化。这是个坑,你以后也会踩到的。
3.2 状态转移概率:环境的「脾气」
状态转移概率 P,用数学公式写出来就是:
P(s' | s, a) = Pr(S_{t+1} = s' | S_t = s, A_t = a)
什么意思?就是在状态 s 下,你执行了动作 a,环境会把你带到状态 s' 的概率。这个概率反映了环境的动态特性。
举个例子。你让机器人「前进」,但地面有点滑,它有 80% 的概率真的前进了,20% 的概率滑到了左边。这个 80% 和 20%,就是状态转移概率。
核心要点:MDP 假设状态转移具有马尔可夫性——未来只取决于当前状态,跟过去无关。说白了,就是「好汉不提当年勇」,你从哪来的不重要,重要的是你现在在哪。
3.3 奖励函数:智能体的「胡萝卜」
奖励函数 R(s, a, s') 告诉智能体:你从状态 s 做了动作 a 到了状态 s',这一步值多少分。
设计奖励函数是个艺术活。我曾经给一个自动驾驶项目设计奖励,一开始只给到达终点的正奖励,结果车子学会了在原地转圈——因为它发现转圈也能获得「存活」的负奖励,比冒险前进更「划算」。
避坑指南:奖励函数要稀疏但明确。不要给太多「小恩小惠」,否则智能体会学会钻空子。我见过有人给每一步都加微小正奖励,结果智能体学会了「原地踏步」来刷分。
3.4 折扣因子:远见 vs 短视
折扣因子 γ,取值范围 [0, 1]。它决定了智能体有多「近视」。
- γ = 0:智能体只看眼前利益,今朝有酒今朝醉。
- γ = 1:智能体无限远视,未来的每一分奖励都跟现在一样重要。
- γ = 0.9:比较折中,未来的奖励会打点折扣。
为什么需要折扣因子?两个原因。第一,数学上保证累积奖励收敛。第二,现实中,未来的不确定性更大,早点拿到奖励总是好的。
我个人习惯在游戏 AI 里用 γ = 0.99,在机器人控制里用 γ = 0.95。为什么?游戏里一局可能很长,需要长远规划;机器人控制则更注重即时反应。
3.5 策略与价值函数:智能体的「大脑」
策略 π(a|s) 是智能体的决策函数。它告诉你在状态 s 下,应该选哪个动作。策略可以是确定性的(直接输出动作),也可以是随机性的(输出动作的概率分布)。
价值函数则是对「未来能拿多少奖励」的预估。有两种:
- 状态价值函数 V(s):从状态 s 开始,按照策略 π 行动,能获得的期望累积奖励。
- 动作价值函数 Q(s, a):在状态 s 执行动作 a,之后按照策略 π 行动,能获得的期望累积奖励。
你想想看,V 函数评估的是「状态好不好」,Q 函数评估的是「在这个状态下做某个动作好不好」。两者相辅相成。
小技巧:在实际项目中,我通常先学 Q 函数,再从中提取策略。因为 Q 函数天然包含了「动作选择」的信息,比直接学 V 函数更灵活。
3.6 贝尔曼方程:价值函数的「自洽」
贝尔曼方程是强化学习里最重要的公式,没有之一。它表达了价值函数的递归关系:
V(s) = Σ_a π(a|s) * Σ_{s'} P(s'|s,a) * [R(s,a,s') + γ * V(s')]
翻译成人话:当前状态的价值 = 所有可能动作的价值加权平均,而每个动作的价值 = 立即奖励 + 下一个状态的价值乘以折扣。
这个方程为什么重要?因为它给了我们一个「自洽」的条件。我们可以通过迭代求解这个方程,来找到最优的价值函数和策略。
我记得第一次推导贝尔曼方程时,觉得它不过是个数学恒等式。后来在项目中用动态规划求解 MDP,才真正体会到它的威力——它把「无限时间」的问题,转化成了「当前步」的迭代计算。
总结一下:MDP 四元组搭框架,状态转移概率定环境,奖励函数给目标,折扣因子调远见,策略和价值函数做决策,贝尔曼方程来求解。这六块拼图凑齐了,强化学习的基础就稳了。
下一章,咱们会把这些理论落地,用代码实现一个简单的 MDP 求解器。到时候你会发现,纸上得来终觉浅,绝知此事要躬行。
公众号:蓝海资料掘金营,微信deep3321