强化学习核心概念:智能体、环境、状态、动作、奖励、策略、价值函数
好,咱们今天来啃硬骨头。
强化学习这玩意儿,说白了就是让机器自己学会做决定。你想想看,我们教小孩走路,不会给他一本《行走力学》,而是让他自己摔几跤,慢慢就学会了。强化学习也是这个道理。
我个人习惯把强化学习拆成七个核心零件:智能体、环境、状态、动作、奖励、策略、价值函数。这七个东西搞明白了,后面所有的算法都是它们的变种。
1. 智能体与环境:谁在学?跟谁学?
智能体(Agent)就是那个做决策的家伙。在量化交易里,它就是我们的交易程序。
环境(Environment)就是智能体打交道的外部世界。对交易来说,环境就是整个市场——价格、成交量、订单簿,所有你能看到的数据。
我刚开始做交易系统时,犯过一个低级错误:把环境定义得太简单了。只用了价格序列,结果模型在回测里赚得飞起,一上实盘就亏成狗。后来才明白,环境必须包含足够的信息,比如市场微观结构、流动性这些。嗯,这里要注意,环境不是越复杂越好,但也不能太简陋。
核心关系:智能体通过动作影响环境,环境通过状态和奖励反馈给智能体。这是一个闭环。
2. 状态与动作:我看到什么?我能做什么?
状态(State)是智能体在某个时刻对环境的观察。在交易里,状态可以是过去N根K线的数据,加上一些技术指标。
动作(Action)是智能体可以采取的行为。交易中最常见的动作就是:买入、卖出、持有。
我记得有一次做股指期货的策略,状态里只放了价格和成交量。结果模型总是在震荡市里频繁交易,手续费都亏光了。后来我把波动率也加进状态,模型就老实多了。
我的经验:状态设计决定了模型的上限。你给模型看什么,它就学什么。别指望它自己发现隐藏信息。
3. 奖励:什么是对?什么是错?
奖励(Reward)是环境给智能体的反馈信号。做对了给正奖励,做错了给负奖励。
交易里的奖励设计是个坑。很多人直接用盈亏,结果模型学会了「死扛亏损单」,因为只要扛得够久,总有回本的时候。这显然不是我们想要的。
我曾经踩过这个坑。一个日内策略,奖励函数设成「平仓时的盈亏」。结果模型学会了在亏损时不平仓,一直扛到收盘。最后回测曲线漂亮,实盘一天就爆仓了。
避坑指南:奖励函数要反映你的真实目标。如果目标是夏普比率,就别只用总收益。如果目标是控制回撤,就要对亏损单给额外惩罚。
常见的奖励设计方式:
- 每笔交易的盈亏
- 累计收益的对数
- 夏普比率或卡玛比率
- 带惩罚项的目标函数(比如惩罚持仓时间过长)
4. 策略:怎么选动作?
策略(Policy)就是智能体的决策规则。它告诉智能体:在某个状态下,应该采取什么动作。
策略分两种:
- 确定性策略:给定状态,动作是确定的。比如「RSI低于30就买入」。
- 随机性策略:给定状态,动作是一个概率分布。比如「有80%概率买入,20%概率持有」。
我个人更偏爱随机性策略,尤其是在早期训练阶段。为什么呢?因为它会探索。确定性策略容易陷入局部最优,就像一个人永远只走同一条路,永远不知道旁边有条近道。
5. 价值函数:这个状态到底好不好?
价值函数(Value Function)用来评估一个状态(或状态-动作对)的长期价值。它回答的是:「我现在这个位置,未来能赚多少钱?」
有两种价值函数:
| 类型 | 含义 | 交易中的应用 |
|---|---|---|
| 状态价值函数 V(s) | 从状态s开始,按当前策略能获得的期望累计奖励 | 评估当前持仓组合的未来预期收益 |
| 动作价值函数 Q(s,a) | 在状态s下采取动作a,之后按当前策略能获得的期望累计奖励 | 评估「现在买入」和「现在卖出」哪个更好 |
你想想看,有了价值函数,智能体就不只是看眼前的奖励了。它会考虑长远影响。比如现在卖出可能亏一点,但避免了更大的回撤,那这个动作的价值就是正的。
一句话总结:策略决定「怎么做」,价值函数决定「这么做值不值」。
6. 核心逻辑图:它们怎么配合?
下面这张图,我画了很多遍才满意。它展示了七个概念之间的协作关系:
这张图你看懂了吗?智能体拿着策略这把「尺子」,从环境里读到状态,然后做出动作。环境收到动作后,给出新的状态和奖励。同时,价值函数在背后默默评估:这个状态到底值多少钱?策略会根据价值函数的反馈不断调整。
7. 实战中的权衡
搞清楚了这七个概念,你就能看懂几乎所有强化学习论文了。但实战中,有几个点我想特别提醒:
- 状态设计是艺术:不是数据越多越好。我见过有人把100个技术指标全塞进去,结果模型什么都没学到。好的状态设计,要抓住市场的核心特征。
- 奖励要稀疏但明确:每秒钟都给奖励,模型会变得短视。但太久不给奖励,模型又不知道自己在干嘛。我一般用「每笔交易结束时给一次奖励」,中间加一些辅助信号。
- 策略和价值函数可以互相替代:有些算法直接学策略(策略梯度),有些先学价值函数再推导策略(Q学习)。没有绝对的好坏,看你的场景。
一个小技巧:刚开始做交易策略时,先用最简单的状态和动作。比如状态只用过去10根K线的收盘价,动作只有「买」和「卖」。跑通了再慢慢加复杂度。我每次做新策略都这么干,屡试不爽。
好了,这七个核心概念就讲到这里。它们就像乐高积木,后面所有的算法——DQN、PPO、A2C——都是这些积木的不同拼法。你先把它们焊死在脑子里,后面学什么都快。
公众号:蓝海资料掘金营,微信deep3321