3、强化学习核心概念回顾:马尔可夫决策过程(MDP)、状态、动作、奖励、策略、价值函数与Q函数、探索与利用的权衡
好,咱们直接进入正题。强化学习这东西,说白了就是让智能体自己学会做决策。你给它一个环境,它自己摸索,碰壁了扣分,做对了加分。听起来像训狗?嗯,本质确实差不多。但要让机器真正学会,我们需要一套严谨的数学框架。这套框架,就是马尔可夫决策过程,也就是MDP。
核心一句话:MDP 是强化学习的“宪法”。所有算法、所有策略,最终都要回到这个框架里来。
3.1 马尔可夫决策过程(MDP)—— 游戏规则说明书
我刚开始接触强化学习时,觉得MDP这名字挺唬人。后来发现,它其实就是一套描述“智能体与环境如何交互”的规则。你想想看,任何决策问题,无非就是:我现在在哪?我能做什么?做了之后会怎样?能得到多少好处?
MDP 用五个要素把这几个问题回答清楚了:
- 状态(State, S): 智能体当前所处的“位置”。可以是股票价格、机器人关节角度、游戏画面像素。
- 动作(Action, A): 智能体可以做的“操作”。比如买入、卖出、左转、跳跃。
- 转移概率(Transition Probability, P): 执行某个动作后,环境会变成什么新状态。注意,这里有个随机性。
- 奖励(Reward, R): 环境给智能体的“反馈信号”。做对了给正数,做错了给负数。
- 折扣因子(Discount Factor, γ): 未来的奖励值多少钱。γ=0 表示只看眼前,γ=1 表示未来和现在一样重要。
这里有个关键点——马尔可夫性质。什么意思?就是“未来只取决于现在,与过去无关”。我在做量化交易系统时,经常要检查状态设计是否满足这个性质。比如,只用当前价格做状态就不行,因为趋势信息丢了。但如果你把过去N根K线都塞进去,那当前状态就包含了所有历史信息,未来只依赖这个状态——这就满足了。
我的经验: 设计MDP时,状态空间别太大也别太小。太大,训练慢得像蜗牛;太小,智能体学不到东西。我一般从10-20个维度开始试,慢慢调整。
3.2 策略(Policy)—— 智能体的“行为手册”
策略,就是告诉智能体“在某个状态下,该做什么”。它有两种形式:
- 确定性策略(Deterministic Policy): 给定状态,直接输出一个动作。比如“股价涨了5%,就卖出”。
- 随机性策略(Stochastic Policy): 给定状态,输出每个动作的概率。比如“有70%概率买入,30%概率持有”。
我个人习惯在交易系统中用随机性策略。为什么?因为市场本身就有随机性。确定性策略容易过拟合,换个行情就崩了。随机性策略给智能体留了点“探索空间”,反而更稳健。
策略通常记作 π(a|s),意思是“在状态s下选择动作a的概率”。
3.3 价值函数与Q函数 —— 给每个状态和动作“打分”
策略决定了行为,但我们需要知道“这个策略好不好”。这就引出了价值函数。
状态价值函数 V(s): 从状态s开始,按照策略π行动,能获得的累计折扣奖励的期望值。说白了,就是“站在这个位置,未来能赚多少钱”。
动作价值函数 Q(s, a): 在状态s下,先执行动作a,然后按照策略π行动,能获得的累计折扣奖励的期望值。说白了,就是“在这个位置,做这个动作,未来能赚多少钱”。
两者关系很简单:V(s) 就是在状态s下,对所有可能的动作a,取Q(s,a)的加权平均(权重就是策略π(a|s))。
避坑指南: 我曾经在项目中把V函数和Q函数搞混了,结果训练出来的智能体像个无头苍蝇。记住:V函数评价状态,Q函数评价“状态-动作”对。你要做决策,看Q函数;你要评估当前处境,看V函数。
下面这张图,是我自己总结的MDP核心逻辑,你看一眼就能明白整个流程:
3.4 探索与利用的权衡 —— 吃老本还是闯新路?
这是强化学习里最经典的两难问题。你想想看:
- 利用(Exploitation): 按照当前已知的最优策略行动,最大化眼前收益。
- 探索(Exploration): 尝试未知的动作,收集新信息,可能发现更好的策略。
只利用不探索,你会陷入局部最优。比如交易策略只会在牛市赚钱,熊市一来就崩。只探索不利用,那你永远在试错,赚不到钱。
常见的平衡方法有几种:
| 方法 | 核心思想 | 适用场景 |
|---|---|---|
| ε-贪婪 | 以概率ε随机探索,以概率1-ε选择最优动作 | 简单、通用,适合初学者 |
| UCB(上置信界) | 选择“潜力最大”的动作,考虑不确定性 | 动作空间小,需要高效探索 |
| 汤普森采样 | 根据后验概率分布采样,随机选择动作 | 有先验知识,贝叶斯框架 |
| 熵正则化 | 在奖励函数中加入策略熵,鼓励随机性 | 连续动作空间,深度强化学习 |
注意: 探索不是乱试。我见过有人把ε设成0.5,结果智能体一半时间在随机操作,根本学不到东西。我的建议是:训练初期ε设大一点(0.3-0.5),让智能体多探索;随着训练进行,逐渐衰减到0.01-0.05。这叫“退火策略”,效果比固定值好得多。
3.5 把这些概念串起来 —— 一个交易场景的例子
光讲理论太干,咱们来点实际的。假设我们要做一个简单的股票交易智能体:
- 状态: 过去10天的收盘价、成交量、RSI指标(共12维)
- 动作: 买入、卖出、持有(3个离散动作)
- 奖励: 每日盈亏金额(正数赚钱,负数亏钱)
- 策略: 一个神经网络,输入状态,输出每个动作的概率
- Q函数: 另一个神经网络,输入状态+动作,输出预期累计收益
- 探索策略: ε-贪婪,ε从0.5开始,每1000步衰减到0.01
训练过程是这样的:智能体每天看当前状态,根据策略选动作,执行后得到新状态和奖励。这些经验存到记忆池里。每隔一段时间,从记忆池里抽一批数据,更新策略和Q函数。如此循环,直到策略收敛。
我的经验: 奖励设计是门艺术。我刚开始做时,直接用每日收益率做奖励,结果智能体学会了“频繁交易赚小钱”,手续费都亏光了。后来改成“扣除手续费后的累计收益率”,效果才好起来。记住:奖励函数决定了智能体“学什么”,一定要仔细设计。
好了,MDP的核心概念就这些。你可能会觉得有点抽象,没关系,后面几章我们会一步步把这些概念落地成代码。到时候你会发现,这些理论就像盖房子的图纸——看着复杂,但照着做,房子就能立起来。