马尔可夫决策过程:MDP五元组、状态转移概率、回报与折扣因子

聊到强化学习,绕不开的一个核心概念就是马尔可夫决策过程,简称MDP。我个人觉得,MDP就是强化学习的“世界观”——它定义了我们怎么看待一个决策问题。说白了,就是把现实世界抽象成一个数学框架,让算法能在这个框架里做推理。

我记得刚入行那会儿,看论文里满篇的MDP符号,头都大了。后来自己动手写策略时才发现,不理解MDP,你连状态怎么定义、奖励怎么设计都搞不清楚。今天我们就把它掰开揉碎了讲清楚。

MDP五元组:强化学习的骨架

一个标准的MDP,由五个元素组成,我们叫它五元组。你可以把它想象成一张“决策地图”的说明书。

符号 含义 在择时中的例子
S 状态空间 当前股价、成交量、MACD指标
A 动作空间 买入、卖出、持有
P 状态转移概率 从“上涨”状态到“下跌”状态的概率
R 回报函数 买入后赚了多少钱
γ 折扣因子 未来的1块钱,现在值多少

这五个东西缺一不可。我在项目中遇到过最坑的情况,就是有人把状态空间定义得太细,结果模型根本学不动。你想想看,如果状态有10万个,那转移概率矩阵得有多大?

状态转移概率:未来的不确定性

状态转移概率P(s'|s, a),描述的是:在状态s下执行动作a后,环境会跳到状态s'的概率。这玩意儿是MDP里最“随机”的部分。

为什么重要?因为市场不是确定性的。你今天买入,明天可能涨也可能跌。转移概率就是用来量化这种不确定性的。我习惯把转移概率想象成“环境的脾气”——它决定了你的动作会带来什么后果。

核心要点:在动态择时中,转移概率通常是从历史数据中估计出来的。但要注意,历史不会简单重复。我曾经用过去5年的数据算转移概率,结果模型在实盘里完全失效——因为市场结构变了。

举个例子。假设状态只有两种:上涨(U)和下跌(D)。动作也只有两种:买入(B)和卖出(S)。那么转移概率可以写成:

# 状态转移概率矩阵示例
# 行:当前状态,列:下一状态
# 假设当前是上涨,买入后:
P_U_B = {
    'U': 0.7,  # 70%概率继续涨
    'D': 0.3   # 30%概率转跌
}

# 当前是下跌,卖出后:
P_D_S = {
    'U': 0.4,  # 40%概率反弹
    'D': 0.6   # 60%概率继续跌
}

嗯,这里要注意。转移概率矩阵的行和必须等于1。我见过有人写代码时忘了归一化,结果模型训练出来全是NaN,排查了半天才发现是概率没归一。

回报函数:你的目标是什么

回报函数R(s, a, s'),简单说就是你在某个状态下做了某个动作,环境给你的即时反馈。在择时里,回报通常就是收益率。

但这里有个坑:回报函数的设计直接影响策略的行为。我刚开始做的时候,直接把收益率当回报,结果模型学会了频繁交易——因为每次交易都有正收益的概率。后来我加了交易成本惩罚,模型才老实下来。

个人经验:设计回报函数时,一定要考虑“延迟满足”。比如,你可以把回报设计成:R = 收益率 - 0.001 * 交易次数。这样模型就会权衡:是现在赚点小钱,还是等大机会?

回报函数还有一个关键点:它必须是可计算的。你不能用“未来10天的收益”作为当前动作的回报,因为未来还没发生。回报必须是基于当前状态和动作就能确定的。

折扣因子:未来的价值

折扣因子γ,取值范围[0, 1]。它决定了智能体有多“短视”。γ=0时,智能体只看眼前利益;γ=1时,它把未来收益看得和现在一样重要。

在择时里,我一般把γ设在0.9到0.99之间。为什么?因为市场有不确定性,未来的钱不如现在的钱“值钱”。你想想看,如果γ=1,模型可能会为了一个遥远的、不确定的大收益,放弃眼前确定的小收益——这在实际交易中很危险。

避坑指南:我曾经把γ设成0.99,结果模型学会了“死扛”——它认为只要一直持有,总有一天会涨回来。但实盘里,资金是有时间成本的。后来我把γ降到0.95,模型才开始主动止损。

折扣因子还有一个数学上的作用:保证累积回报收敛。如果γ<1,无限时间步的累积回报是有限的。这在理论上很重要,否则你没法定义“最优策略”。

MDP的核心逻辑:一张图说清楚

下面我用一张SVG图,把MDP的决策循环画出来。你看完就明白了。

状态 s 动作 a 回报 R 下一状态 s' 策略 π 环境反馈 时间步 t → t+1 MDP决策循环:s → a → R → s' → 重复

这张图展示了MDP的核心循环。智能体在状态s下,根据策略选择动作a。环境根据转移概率P,给出回报R,并跳转到下一状态s'。然后循环继续。说白了,这就是一个“观察-决策-反馈-再观察”的闭环。

总结一下

MDP五元组是强化学习的基石。状态空间决定了你看到什么,动作空间决定了你能做什么,转移概率描述了环境的不确定性,回报函数定义了你的目标,折扣因子平衡了眼前和长远。

我个人觉得,理解MDP的关键不在于记住公式,而在于想清楚:你的问题能不能用这五个元素来描述?如果能,那强化学习就能派上用场。如果不能,那可能需要换个框架。

嗯,今天就到这里。记住,MDP不是万能的,但它是一个很好的起点。下次你设计策略时,不妨先画个MDP五元组,看看自己有没有遗漏什么。

一句话总结:MDP就是给决策问题画了个框,框里是状态、动作、概率、回报和折扣。框画好了,剩下的就是找最优策略。

专注资料整理