3. 强化学习基础:马尔可夫决策过程(MDP)
各位同学,欢迎来到第三章。这一章我们聊点硬核的——马尔可夫决策过程,简称 MDP。
说实话,我刚开始接触强化学习时,觉得 MDP 就是个数学框架,离实战很远。后来在做一个资产配置项目时,发现没有 MDP 的思维,策略根本没法收敛。嗯,这玩意儿是地基,必须打牢。
3.1 为什么是 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 # 风险偏好系数
]
注意,状态要包含足够的信息,让智能体能够做出合理决策。但也不是越多越好——维度太高,学习会变慢。
3.2.2 动作(Action)
动作就是智能体可以做的事情。在资产配置里,动作就是调仓指令。
举个例子:
# 动作空间:调整各资产权重
action = [
+0.05, # 股票加仓 5%
-0.03, # 债券减仓 3%
-0.02 # 现金减仓 2%
]
动作空间可以是离散的(比如「加仓」「减仓」「持有」),也可以是连续的(比如具体的调仓比例)。我个人更推荐连续动作空间,因为它更贴近真实交易。
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',然后重复这个过程。
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 |
智能体的目标就是:找到一个策略 π,使得从任意状态出发,累计折扣奖励的期望最大。
3.5 从 MDP 到强化学习算法
有了 MDP 框架,强化学习算法要解决的核心问题就是:如何找到最优策略?
常见的方法有:
- 动态规划:已知转移概率,直接计算最优价值函数。但现实中转移概率往往未知。
- 蒙特卡洛方法:通过采样完整轨迹来估计价值。适合回合制问题。
- 时序差分学习:结合动态规划和蒙特卡洛,每一步都更新估计。这是目前最主流的方法。
我个人最常用的是时序差分方法,尤其是 Q-learning 和它的深度版本 DQN。为什么?因为它不需要完整的轨迹,可以在线学习,适合资产配置这种持续运行的环境。
3.6 本章小结
好了,这一章我们聊了 MDP 的五个要素:状态、动作、奖励、转移概率、折扣因子。也看了它们在资产配置里的具体应用。
记住一句话:MDP 是强化学习的语言。你用它来描述问题,算法才能理解问题。
下一章我们会深入策略和价值函数,看看它们到底怎么算、怎么用。嗯,到时候见。
公众号:蓝海资料掘金营,微信 deep3321