强化学习核心概念:智能体、环境、状态、动作、奖励、策略、价值函数

好,咱们今天来啃硬骨头。

强化学习这玩意儿,说白了就是让机器自己学会做决定。你想想看,我们教小孩走路,不会给他一本《行走力学》,而是让他自己摔几跤,慢慢就学会了。强化学习也是这个道理。

我个人习惯把强化学习拆成七个核心零件:智能体、环境、状态、动作、奖励、策略、价值函数。这七个东西搞明白了,后面所有的算法都是它们的变种。

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