4. 强化学习核心概念:智能体、环境、状态、动作、奖励、策略、价值函数、马尔可夫决策过程(MDP)
好,咱们今天来啃一块硬骨头——强化学习的核心概念。说实话,我当年刚接触这些术语时,脑袋也是嗡嗡的。什么智能体、环境、状态、动作……感觉像在看哲学书。但别急,这些东西说白了,就是一套让机器学会「自己拿主意」的框架。
我习惯用一个比喻来理解:想象你在教一只小狗学新把戏。小狗是智能体,你家客厅是环境,它当前蹲着还是趴着是状态,它摇尾巴或转圈是动作,你给它零食就是奖励。嗯,就这么简单。下面咱们一个个拆开讲。
智能体(Agent)与环境(Environment)
智能体就是做决策的那个家伙。在交易系统里,它就是我们的策略模型。它观察市场,然后决定买、卖还是持有。环境则是它交互的外部世界——股票行情、订单簿、成交量,一切它无法控制但必须适应的东西。
我在项目中遇到过一个问题:很多人把环境和智能体混在一起写代码,结果改一个参数,整个系统崩了。记住,智能体和环境必须严格解耦。智能体只负责「决策」,环境只负责「反馈」。这是铁律。
状态(State)与动作(Action)
状态是环境在某个时刻的快照。比如当前股价、持仓量、账户余额。我习惯把状态想象成一张「体检报告」,智能体根据这份报告做判断。
动作就是智能体能做的操作。在交易里,动作空间可以是离散的(买、卖、持有),也可以是连续的(买入多少股、以什么价格)。
这里有个坑,我曾经踩过:状态设计太粗糙。比如只把当前价格当状态,那智能体永远学不会趋势。你想想看,它连昨天涨了还是跌了都不知道,怎么决策?所以状态必须包含足够的历史信息,比如过去N步的价格序列。
奖励(Reward)—— 交易系统的灵魂
奖励是强化学习的「指挥棒」。智能体所有行为的最终目的,就是最大化累计奖励。在交易里,奖励通常就是盈亏。但直接拿盈亏当奖励,问题很大。
举个例子:你赚了100块,但中间回撤了50%。智能体可能觉得「反正最后赚了就行」,中间怎么折腾无所谓。这显然不是我们想要的。所以我个人习惯在奖励函数里加入惩罚项:比如夏普比率、最大回撤、交易成本。
# 一个简单的奖励函数示例
def calculate_reward(current_portfolio_value, previous_portfolio_value, trade_cost):
pnl = current_portfolio_value - previous_portfolio_value
# 扣除交易成本
net_pnl = pnl - trade_cost
# 如果回撤过大,额外惩罚
if pnl < 0 and abs(pnl) > 0.05 * previous_portfolio_value:
net_pnl *= 1.5 # 放大亏损惩罚
return net_pnl
策略(Policy)—— 智能体的决策手册
策略就是智能体在给定状态下选择动作的规则。它可以是确定性策略(状态S下永远选动作A),也可以是随机性策略(状态S下有80%概率选A,20%选B)。
随机性策略在交易里特别有用。为什么?因为市场有噪声。如果策略是确定性的,遇到没见过的行情,它可能直接「懵了」。随机性策略给了它探索的空间。
我记得有一次做回测,确定性策略在历史数据上表现完美,但实盘一跑就崩。换成随机性策略后,虽然单次收益低一些,但稳定性好得多。这就是探索与利用的平衡。
价值函数(Value Function)—— 评估「好」与「坏」
价值函数回答一个问题:「当前这个状态,到底有多好?」它不关心你下一步做什么,而是评估长期来看,这个状态能带来多少累计奖励。
有两种常见价值函数:
- 状态价值函数 V(s): 从状态s开始,按照当前策略行动,能获得的期望累计奖励。
- 动作价值函数 Q(s, a): 在状态s下执行动作a,之后按照策略行动,能获得的期望累计奖励。
Q函数在交易里更常用。因为它直接告诉你:「当前持仓状态下,买入这个动作值不值?」
马尔可夫决策过程(MDP)—— 一切的基础
MDP是强化学习的数学框架。它假设:未来的状态只取决于当前状态和当前动作,与过去无关。这就是马尔可夫性质。
你可能会问:「交易市场有记忆啊,昨天的价格影响今天,这怎么符合马尔可夫性质?」
嗯,这里有个技巧:我们可以把历史信息编码到状态里。比如状态不是「当前价格」,而是「过去20天的价格序列」。这样状态本身就包含了历史,未来就只依赖于当前状态了。说白了,就是通过状态设计来「伪造」马尔可夫性质。
一个完整的MDP由五元组定义:
| 符号 | 含义 | 交易中的例子 |
|---|---|---|
| S | 状态空间 | 所有可能的持仓+行情组合 |
| A | 动作空间 | 买入、卖出、持有 |
| P | 状态转移概率 | 买入后股价上涨的概率 |
| R | 奖励函数 | 盈亏 + 惩罚项 |
| γ | 折扣因子 | 0.99,表示更看重近期收益 |
折扣因子γ是个有意思的东西。它决定了智能体是「短视」还是「远视」。γ接近0,智能体只看眼前利益;γ接近1,它愿意为了长期收益忍受短期亏损。在交易里,我一般设0.95到0.99之间,太低了容易追涨杀跌,太高了可能死扛亏损单。
知识体系总览
下面这张图是我自己画的,把今天讲的所有概念串起来了。你可以把它当作一张「地图」,以后遇到具体算法时,回来看看它在图中的位置。
从这张图你能看到:智能体观察状态,依据策略输出动作;动作作用于环境,环境反馈新状态和奖励;奖励回到智能体,用于更新策略和价值函数。整个循环由MDP框架支撑。说白了,这就是一个「观察-决策-行动-反馈」的闭环。
好了,今天的内容就到这里。这些概念是强化学习的基石,后面所有算法——DQN、PPO、A2C——都是在这个框架上搭积木。你只要把今天这张图刻在脑子里,后面学什么都轻松。