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

各位同学,欢迎来到第三章。这一章我们聊点硬核的——马尔可夫决策过程,简称 MDP。

说实话,我刚开始接触强化学习时,觉得 MDP 就是个数学框架,离实战很远。后来在做一个资产配置项目时,发现没有 MDP 的思维,策略根本没法收敛。嗯,这玩意儿是地基,必须打牢。

3.1 为什么是 MDP?

你想想看,资产配置本质上是个序列决策问题。今天买什么,明天卖什么,后天要不要调仓……每一步决策都会影响未来的状态。

MDP 就是用来描述这种「当前决策影响未来」的数学工具。它把问题拆成五个要素:状态、动作、奖励、转移概率、折扣因子

我在项目中遇到过不少同学,上来就调算法,结果状态定义得乱七八糟,策略根本学不出来。说白了,MDP 没想清楚,后面全是白费。

核心观点: MDP 是强化学习的「世界观」。它告诉我们:世界是由状态组成的,你可以在状态间做动作,每个动作会带来奖励,并且改变未来状态。

3.2 五要素详解

3.2.1 状态(State)

状态就是环境在某个时刻的快照。在资产配置里,状态可以是:当前持仓比例、市场波动率、宏观经济指标、技术面信号……

我个人习惯把状态设计成向量。比如:

# 一个简单的状态表示
state = [
    0.6,      # 股票仓位 60%
    0.3,      # 债券仓位 30%
    0.1,      # 现金仓位 10%
    0.25,     # 近20日年化波动率
    0.02,     # 近5日收益率
    1.2       # 风险偏好系数
]

注意,状态要包含足够的信息,让智能体能够做出合理决策。但也不是越多越好——维度太高,学习会变慢。

我的经验: 状态设计时,先列 10-20 个候选特征,然后用相关性分析和主成分分析降维。我一般保留 5-8 个核心特征,效果最好。

3.2.2 动作(Action)

动作就是智能体可以做的事情。在资产配置里,动作就是调仓指令。

举个例子:

# 动作空间:调整各资产权重
action = [
    +0.05,    # 股票加仓 5%
    -0.03,    # 债券减仓 3%
    -0.02     # 现金减仓 2%
]

动作空间可以是离散的(比如「加仓」「减仓」「持有」),也可以是连续的(比如具体的调仓比例)。我个人更推荐连续动作空间,因为它更贴近真实交易。

避坑指南: 我曾经把动作空间设得太大,结果智能体在训练初期疯狂试探极端仓位,导致回撤巨大。后来我加了动作约束——每次调仓不超过 10%,训练就稳定多了。

3.2.3 奖励(Reward)

奖励是 MDP 的灵魂。它告诉智能体:你做得好不好。

在资产配置里,奖励函数通常包含:

  • 收益率:赚了多少
  • 风险惩罚:波动率、最大回撤
  • 交易成本:调仓的手续费、滑点

一个经典的奖励函数设计:

def calculate_reward(portfolio_return, portfolio_vol, turnover):
    # 夏普比率风格的奖励
    reward = portfolio_return - 0.5 * portfolio_vol - 0.01 * turnover
    return reward

你可能会问:为什么还要惩罚波动率?因为单纯最大化收益,智能体会去赌高杠杆品种,风险太大。我们想要的是「稳健的收益」。

关键点: 奖励函数决定了智能体的「价值观」。你奖励什么,它就学什么。设计奖励时,一定要想清楚你到底想要什么。

3.2.4 转移概率(Transition Probability)

转移概率描述的是:在状态 s 下执行动作 a,会跳到哪个新状态 s'。

在资产配置里,转移概率就是市场的不确定性。比如你加仓了股票,市场可能涨也可能跌。这个概率分布通常是从历史数据中估计的,或者用模型来模拟。

我记得有一次,团队里有人直接用历史平均转移概率,结果策略在震荡市表现很好,一到趋势市就崩了。为什么?因为转移概率不是固定的——市场会变。

我的建议: 不要假设转移概率是静态的。可以用滚动窗口估计,或者用贝叶斯方法动态更新。这样策略才能适应市场变化。

3.2.5 折扣因子(Discount Factor)

折扣因子 γ 决定了智能体有多「短视」。γ 越接近 1,智能体越看重长期收益;γ 越接近 0,它越关注眼前利益。

在资产配置里,我一般设 γ = 0.95 到 0.99。为什么?因为投资是长期游戏,今天的决策会影响未来很久。

# 折扣因子的影响
gamma = 0.99  # 看重长期
# 或者
gamma = 0.5   # 只看短期(不推荐)

3.3 MDP 的核心逻辑:策略与价值

有了 MDP 的五要素,我们就可以定义两个核心概念:

  • 策略 π(a|s):在状态 s 下,选择动作 a 的概率。策略就是智能体的「大脑」。
  • 价值函数 V(s):从状态 s 开始,按照策略 π 行动,能获得的累计折扣奖励的期望。

说白了,策略告诉你怎么做,价值函数告诉你这么做有多好。

下面这张图展示了 MDP 的完整流程:

马尔可夫决策过程(MDP)流程图 状态 S 动作 A 奖励 R 新状态 S' 策略 π(a|s) 价值 V(s) 策略选择 环境反馈 转移概率 P(s'|s,a) 时间步 t → t+1 图例: 状态 动作 奖励 策略 价值

从图中可以看到,MDP 是一个循环过程:智能体观察状态 S,根据策略 π 选择动作 A,环境给出奖励 R 并转移到新状态 S',然后重复这个过程。

3.4 资产配置中的 MDP 实例

咱们来一个具体的例子。假设你管理一个投资组合,只有两种资产:股票和债券。

要素 定义 示例
状态 S 当前持仓比例 + 市场指标 [股票60%, 债券40%, 波动率25%, 趋势强度0.8]
动作 A 调仓比例(连续值) [股票+5%, 债券-5%]
奖励 R 调整后的组合收益 - 风险惩罚 - 交易成本 0.02 - 0.5*0.15 - 0.01*0.05 = -0.0555
转移 P 市场从当前状态到下一状态的概率 由历史数据估计或模型生成
折扣 γ 长期 vs 短期偏好 0.97

智能体的目标就是:找到一个策略 π,使得从任意状态出发,累计折扣奖励的期望最大。

一句话总结: MDP 把资产配置问题变成了一个「在不确定性中做最优决策」的数学问题。状态是现状,动作是选择,奖励是反馈,转移是市场,折扣是眼光。

3.5 从 MDP 到强化学习算法

有了 MDP 框架,强化学习算法要解决的核心问题就是:如何找到最优策略?

常见的方法有:

  • 动态规划:已知转移概率,直接计算最优价值函数。但现实中转移概率往往未知。
  • 蒙特卡洛方法:通过采样完整轨迹来估计价值。适合回合制问题。
  • 时序差分学习:结合动态规划和蒙特卡洛,每一步都更新估计。这是目前最主流的方法。

我个人最常用的是时序差分方法,尤其是 Q-learning 和它的深度版本 DQN。为什么?因为它不需要完整的轨迹,可以在线学习,适合资产配置这种持续运行的环境。

一个小技巧: 刚开始学 MDP 时,别急着上深度强化学习。先用表格法(比如 Q-table)在小规模问题上跑通流程。我当年就是这么过来的——先理解原理,再上复杂度。

3.6 本章小结

好了,这一章我们聊了 MDP 的五个要素:状态、动作、奖励、转移概率、折扣因子。也看了它们在资产配置里的具体应用。

记住一句话:MDP 是强化学习的语言。你用它来描述问题,算法才能理解问题。

下一章我们会深入策略和价值函数,看看它们到底怎么算、怎么用。嗯,到时候见。


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