一、引言
在参加《量变学院》第五期线下课程后,我首次接触到AlphaGen这一基于强化学习的公式化Alpha因子挖掘框架。其核心思想是通过策略梯度方法(如PPO算法)自动生成具有协同作用的Alpha因子集合,从而提升量化投资策略的性能。为深入理解《Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning》这篇论文,我需要补充强化学习的基础知识,重点学习基础知识和经典算法PPO(Proximal Policy Optimization)及其在AlphaGen中的扩展版本MaskablePPO。
目前,我对强化学习的理解尚不足,阅读论文中关于PPO、LSTM设计及AlphaGen因子生成原理的内容时,感到有些吃力。因此,我计划从强化学习的基础概念入手,构建知识框架。这不仅是为了突破当前的认知瓶颈,也是为了掌握算法核心思路,奠定扎实的基础。
二、强化学习
强化学习(Reinforcement Learning)是行为主义心理学中的一个重要概念。人类或动物为了实现特定目标,会在所处环境中采取特定行为。当这些行为带来的反应或后果对其有利时,行为会受到正向强化,从而在未来重复出现。相反,若行为导致不利结果,则会受到负向强化,行为自然减弱或消失。
以训练小狗为例,小狗是Agent(智能体),训练员和周围环境构成其环境。小狗需要根据训练员的命令或提示观察环境并采取行动以获得奖励。通过持续的训练,小狗的策略逐渐调整,能够正确响应每个提示,从而最大化奖励。最终,小狗能根据其内部策略,准确观察主人并采取适当行动。
动物如此,人类亦然。这也解释了为何在深度学习之后,强化学习日益受到重视的原因。强化学习能够模拟人类和动物的行为,通过与环境的反复交互收集数据并自主学习,无需监督,展现出更高的智能。无论是自动驾驶、AlphaGo的围棋对弈、AlphaStar的游戏控制,还是广受关注的ChatGPT,以及众多机器人控制场景,强化学习技术都得到了广泛应用。
(一)、强化学习的基本概念
强化学习(Reinforcement Learning, RL)是机器学习的重要分支,与监督学习和无监督学习并列。监督学习和无监督学习通常需要预先收集大量数据,其中监督学习还需标注数据,通过正确标签和损失函数不断优化预测。相比之下,强化学习无需静态数据集,而是在动态环境中运行,通过与环境的交互收集经验进行学习。这种方式减少了训练前的数据收集、预处理和标注需求,能够自主学习,无需人类监督,仅需设计合理的激励机制即可。
要理解强化学习,必须先掌握其核心术语和概念。下面我们就快速进入强化学习的基本概念部分。
强化学习系统主要包含环境(environment)、智能体(agent) 及规则三大核心,具体涉及以下关键概念:
- 观测(observation):智能体从环境中获取的信息;
- 状态(state):环境或智能体所处的具体情形;
- 动作/决策(action/decision):智能体在特定状态下采取的行为;
- 奖励(reward):环境对智能体动作的反馈(衡量动作好坏的指标)。
- 状态转移(State Transition):Agent在状态s下采取动作a后转移到状态s’的概率p(s’|s, a),如s1采取a2转移到s2。
- 策略(Policy, π):指导Agent选择动作的概率分布π(a|s),可为确定性(如π(a2|s1)=1)或随机性(如π(a2|s1)=0.5)。
- 轨迹(Trajectory)与回合(Episode):轨迹是状态-动作-奖励序列,回合是有限步轨迹,通常以终止状态结束。
- 返回(Return)与折扣返回(Discounted Return):返回是轨迹中奖励的累加,折扣返回引入折扣率γ(0<γ<1)避免无限轨迹发散,控制Agent的短期或长期视野。
- 马尔可夫决策过程(MDP):强化学习的数学框架,包含状态空间、动作空间、奖励集合、状态转移概率、奖励概率和策略,具备马尔可夫性质(与历史无关)。
智能体通过“试错迭代”寻找最优策略:
- 智能体执行动作,依据环境反馈的奖励判断动作效果;
- 若动作带来最大回报,智能体将重复该动作;若效果不佳,则调整动作继续尝试;
- 上述试错过程持续进行,直至智能体找到能稳定获得最优奖励的策略。
理解了这些基本概念后,我们还需要认识下面这些与之相关的概念。
- 策略函数(Policy Function):智能体的“行动指南”,定义在某个状态下选择不同动作的概率(如“在‘股价上涨5%’的状态下,60%概率卖出、40%概率持仓”)。
- 价值函数(Value Function):智能体的“收益评估工具”,分为两种:
- 状态价值函数(v(s)):评估“处于状态(s)时,未来能获得的期望总奖励”;
- 动作价值函数(q(s,a)):评估“在状态(s)下做动作(a),未来能获得的期望总奖励”。
- 贝尔曼公式:价值函数的“递推关系”——当前状态的价值 = 即时奖励 + 未来状态的折扣价值(如“今天持仓的价值 = 今天的收益 + 明天持仓价值×折扣系数”)。
- 贝尔曼最优公式:寻找“最优价值”的递推关系——当前状态的最优价值 = 选择“能带来最大即时奖励+未来折扣价值”的动作(如“今天最优选择是卖出,因为卖出的即时收益+未来价值比持仓更高”)。
基于贝尔曼公式可衍生出动态规划(Dynamic Programming, DP) 方法,其在强化学习领域的核心应用包括价值迭代与策略迭代两种算法。
动态规划本质是一种算法设计与优化思想,而非具体的编程实现流程。在强化学习中,它不仅是重要的理论基石,更提供了通过价值函数迭代求解最优策略的核心方法论。
需注意的是,传统动态规划方法存在一个关键前提:假设环境模型完全已知,即必须明确状态转移概率(如“做动作(a)后从状态(s)转移到(s’)的概率”)与奖励函数(如“在状态(s)做动作(a)能获得的即时奖励”)。
从发展逻辑来看,强化学习可视为动态规划在不确定环境决策问题中的延伸与突破:二者虽均以贝尔曼方程和价值函数为核心工具,但强化学习的关键创新在于解决“无模型环境”的决策难题——尤其是在无模型强化学习中,智能体无需预先掌握环境的具体模型,仅通过与环境交互产生的经验数据,就能逐步学习并优化策略。
(二)、强化学习的分类
理解强化学习分类之前, 需要理解强化学习的大类分类。首先分为基于模型的分类和无模型分类。然后重点的大类算法有几个种,是动态规划、蒙特卡洛法、时序差分法和策略梯度算法。
强化学习 Reinforcement Learning
├─ 有模型 model-based
│ └─ 动态规划 dynamic programming(策略迭代、价值迭代)
└─ 无模型 model-free
├─ 基于价值 value-based
│ ├─ 同轨策略 on-policy → Sarsa
│ └─ 离轨策略 off-policy → Q-learning、DQN
└─ 基于策略 policy-based
├─ 纯策略梯度(同轨) → REINFORCE
└─ actor-critic(混合架构)
├─ 同轨 on-policy → A3C、PPO
└─ 离轨 off-policy → DDPG、TD3
我们再换一个视角比较不同方法:将它们按“更新的广度”和“更新的深度”放在二维坐标系中。横轴代表广度(越往右广度越大),纵轴代表深度(越往下深度越大):
- 时序差分(temporal difference learning)的搜索范围最小;
- 蒙特卡罗(Monte Carlo)在深度上更深,但广度与时序差分一致(均为单一路径);
- 动态规划在广度上进行了扩展,但深度上均为单步操作;
- 坐标系右下角的穷举搜索(exhaustive search)则既广又深,但效率最低。
动态规划与强化学习在决策优化领域联系紧密却又各有侧重。传统动态规划方法的核心前提是 “环境模型已知”,即必须明确状态转移概率与奖励函数,在此基础上依托贝尔曼方程和价值函数的迭代来求解最优策略。而从发展脉络来看,强化学习可视为动态规划在不确定环境中的延伸 —— 尽管二者共享贝尔曼方程与价值函数这一核心工具,但强化学习的关键目标是突破 “模型已知” 的限制,尤其在无模型强化学习中,智能体无需预先掌握环境的具体模型,仅通过与环境交互产生的数据就能逐步学习最优策略。
无模型强化学习的核心算法可分为基于表格(Tabular)和基于函数逼近两大类。其中,蒙特卡洛方法与时序差分(TD)算法均属于表格表示范畴:蒙特卡洛方法不直接依赖贝尔曼方程,而是通过采样完整回合(episode)的轨迹数据,依据大数定律用样本均值逼近期望价值,不过它需要等待回合结束才能更新,更适用于有终止状态的任务;TD 算法则包含 TD、SARSA、Q-learning 等具体形式,SARSA 属于 on-policy 算法,Q-learning 则开创性地采用 off-policy 思路,二者均通过时序差分误差实现表格中价值的实时更新。
随着问题复杂度提升,表格表示的局限性逐渐显现,函数逼近方法应运而生,Deep Q-learning(DQN)便是典型代表。作为 Q-learning 的扩展,DQN 用神经网络替代表格存储价值,同时引入经验回放(Replay Buffer)和目标网络(Target Network)两大机制,既遵循贝尔曼最优方程,又有效提升了学习的稳定性,标志着强化学习从 “表格时代” 迈向 “深度时代”。
除了基于价值的算法,强化学习中还有直接优化策略的策略梯度法,而 Actor-Critic 算法则实现了二者的融合:Actor 作为策略网络负责动作选择,Critic 作为价值网络评估 Actor 的动作价值,并用自身梯度指导 Actor 更新。这种架构兼具价值方法 “低方差” 和策略方法 “直接优化” 的优势,在效率与稳定性之间取得了更好的平衡,成为复杂决策场景中的重要选择。
算法类型 | 代表方法 | 适用场景 |
---|---|---|
基于值函数 | Q-Learning、DQN | 离散动作空间(如游戏) |
基于策略 | REINFORCE、PPO | 连续动作空间(如机器人控制) |
混合方法 | Actor-Critic | 平衡值函数与策略优化 |
了解了上述基础算法后,我们接下来聚焦 AlphaGen 中实际采用的 PPO 算法。
近端策略优化(Proximal Policy Optimization, PPO)是强化学习中最广泛使用的算法之一。它旨在提升早期策略梯度方法的稳定性和性能。可以将,这就是为什么它被广泛应用于从机器人技术到视频游戏等各个领域。
现在,让我们深入探讨 PPO 架构是如何实现这一目标的。
第一个关键概念:PPO 的核心部分
- 策略函数:策略函数就像智能体的“大脑”。它根据当前状态决定采取什么行动。最终目标是训练这个大脑,以最大化长期累积奖励。
- 优势函数:这个函数帮助我们评估特定行动相对于平均行动的好坏程度。就像在问:“鉴于这种情况,这个行动是不是个好主意?”优势函数指导我们对策略进行的更新。
- 代理目标函数:PPO 并不直接优化实际目标,而是使用一个代理目标(surrogate objective),这是一个更容易处理的近似值。这使我们在同一批数据上高效地进行多次更新。
第二个部分:PPO 的工作原理
PPO 的工作分为两个主要步骤:
- 数据收集:智能体通过使用当前策略与环境交互来收集数据。这会生成一系列经验,像是状态、动作和奖励的日记。
- 策略更新:使用这些数据,PPO 更新策略。然而,它会谨慎进行,确保更新保持在信任区域内以保持稳定性。这就像微调,而不是完全重写策略。
第三个部分:裁剪机制 Clipping Mechanism
PPO 的关键特性之一是其裁剪机制。以下是它为何重要:
- 在更新策略时,我们比较新策略下某个动作的概率与旧策略下的概率。这个比率称为 ,公式如下:
- 如果这个比率超出安全范围,裁剪机制就会介入。它防止更新带来剧烈变化,从而可能破坏训练的稳定性。裁剪后的目标函数如下:
其中, 是优势估计值, 是一个超参数,通常为 0.1 或 0.2。这个机制确保更新保持保守,防止策略出现大幅跳跃。
第四个部分:实现步骤
要实现 PPO,请遵循以下步骤:
- 初始化策略和价值函数的神经网络。
- 使用当前策略(概率函数)从环境中收集轨迹。
- 计算优势估计值,通常使**用广义优势估计(GAE)**等方法。
- 使用小批量随机梯度下降和代理目标函数更新策略和价值网络。
- 重复此过程,直到达到良好的性能水平。
总之,PPO 的设计确保了鲁棒的性能,同时易于适应各种任务和环境。其谨慎的更新策略,结合像裁剪这样的实用特性,使其成为现代强化学习中的首选方法。现在,让我们深入探讨近端策略优化中的裁剪机制,这对于维持策略更新的稳定性和效率至关重要。
(三)、强化学习的发展史
为更系统地把握前文所述强化学习的核心逻辑与技术应用,下面将从历史维度出发,梳理强化学习从理论萌芽到工程落地的关键节点。
早期阶段(1950-1980年)
强化学习(Reinforcement Learning, RL)的早期阶段奠定了其理论基础,主要通过数学和计算方法的形式化研究。这一阶段的核心贡献集中在马尔可夫决策过程(Markov Decision Process, MDP)和动态规划(Dynamic Programming, DP)的建立。
1953年,美国数学家理查德·贝尔曼(Richard Bellman)提出了马尔可夫决策过程的概念,正式定义了状态、动作、奖励和转移概率的框架,为强化学习问题提供了数学表述。同年,贝尔曼提出了贝尔曼方程,这是动态规划的核心,用于递归计算状态价值函数和最优策略。他的专著《Dynamic Programming》(1957年)进一步系统化了价值迭代和策略迭代算法,为解决MDP问题提供了理论工具。这些方法虽然理论完备,但在实际应用中受限于计算复杂度和对环境模型的已知性要求。
这一阶段还见证了早期试错学习系统的探索。例如,1961年,**唐纳德·米基(Donald Michie)**开发了MENACE(Matchbox Educable Noughts and Crosses Engine),一个通过试错学习玩井字棋的系统,使用火柴盒模拟强化学习的基本思想。此外,**亚瑟·塞缪尔(Arthur Samuel)**在1959年开发的跳棋程序通过自我对弈实现了简单的强化学习策略,展示了“通过实践学习”的潜力。
尽管这一阶段的强化学习研究主要停留在理论层面,贝尔曼的MDP和动态规划为后续算法奠定了坚实基础,标志着强化学习的起点。
表格方法阶段(1980-1990年代)
1980年代末至1990年代,强化学习进入表格方法阶段,研究者开始将理论应用于小规模离散状态和动作空间的问题,通过表格形式存储和更新价值函数或策略。这一阶段的算法奠定了现代强化学习的基础。
1988年,**理查德·萨顿(Richard Sutton)**提出了时序差分学习(Temporal Difference Learning, TD),特别是TD(λ)算法,结合了蒙特卡罗方法和动态规划的优点,通过增量式更新估计价值函数,无需完整的环境模型。1989年,**克里斯·沃特金斯(Chris Watkins)**在其博士论文中提出了Q-Learning算法,这是一种无模型的异策略(off-policy)方法,通过迭代更新动作价值函数(Q值)寻找最优策略。同期,SARSA算法作为同策略(on-policy)方法被提出,强调在当前策略下更新Q值。
1992年,**杰拉尔德·特索罗(Gerald Tesauro)**开发的TD-Gammon程序将TD学习与浅层神经网络结合,在双陆棋游戏中达到了接近人类顶尖水平,展示了强化学习在复杂任务中的潜力。此外,**蒙特卡洛方法(Monte Carlo)**被引入强化学习,通过采样完整回合的奖励来估计价值函数,适用于无模型环境。
1998年,萨顿与**安德鲁·巴托(Andrew Barto)**合著的《Reinforcement Learning: An Introduction》出版,系统总结了这一阶段的理论和算法,成为强化学习领域的经典教材。这一阶段的表格方法虽然高效,但受限于离散空间的规模,为后续函数逼近方法铺平了道路。
函数逼近阶段(2000年以后)
进入21世纪,随着问题规模的扩大,表格方法因存储和计算限制无法处理高维或连续状态空间,研究者开始引入函数逼近方法来近似价值函数或策略。这一阶段是强化学习从理论到实际应用的过渡时期。
函数逼近方法使用参数化模型(如线性函数、径向基函数网络或浅层神经网络)来表示价值函数或策略。1992年提出的REINFORCE算法(由罗纳德·J·威廉姆斯(Ronald J. Williams)开发)是策略梯度方法的早期代表,通过直接优化策略参数来最大化期望奖励。1999年,萨顿等人进一步提出了策略梯度定理,为策略梯度方法提供了理论基础,使其在机器人控制等领域得到初步应用,如摆杆起摆和机械臂抓取任务。
这一阶段的其他进展包括基于核的方法和径向基函数(RBF)网络,用于近似复杂环境中的价值函数。强化学习在机器人和自动控制领域的应用逐渐增多,例如四足机器人运动规划和无人机导航。尽管浅层神经网络在TD-Gammon中已显示潜力,但计算能力和数据规模的限制使得函数逼近方法尚未完全发挥威力。
这一阶段为深度强化学习的兴起奠定了基础,函数逼近技术的引入标志着强化学习开始应对更复杂、现实世界的挑战。
深度强化学习阶段(2010年至今)
2010年以后,深度学习技术的突破推动强化学习进入深度强化学习阶段,成功应对高维状态空间和连续动作空间的挑战。这一阶段由DeepMind和OpenAI等机构引领,标志性成果层出不穷。
2013年,DeepMind推出了雅达利学习环境(Atari Learning Environment, ALE),为强化学习提供标准化测试平台。同年,DeepMind的**深度Q网络(DQN)将深度神经网络与Q-Learning结合,在雅达利游戏中实现了超越人类的表现。2015-2016年,Double DQN、Dueling DQN和优先经验回放(Prioritized Experience Replay)**进一步优化了DQN的性能和稳定性。
2015年,**深度确定性策略梯度(DDPG)算法(基于2014年的确定性策略梯度理论)解决了连续动作空间问题,广泛应用于机器人控制。2017年,OpenAI提出的近端策略优化(PPO)**通过限制策略更新幅度提高了训练稳定性,成为现代强化学习的标准算法。此外,**信任域策略优化(TRPO,2015年)**为PPO奠定了基础。
2016年,DeepMind的AlphaGo结合深度强化学习和蒙特卡罗树搜索,击败了围棋世界冠军李世石。2017年,AlphaZero通过自对弈从零开始学习,掌握了国际象棋、将棋和围棋,展示了通用强化学习的潜力。2019年,DeepMind的AlphaStar和OpenAI的Dota 2 AI展示了多智能体强化学习在复杂竞技环境中的应用。
现代强化学习算法进一步融入了广义优势估计(GAE,2016年)等技术,优化了Actor-Critic框架的性能。模仿学习和逆强化学习也开始与深度强化学习结合,加速了复杂任务的学习。这一阶段的进展使强化学习广泛应用于游戏、机器人、自动驾驶和自然语言处理等领域,标志着其从理论研究走向实际应用的成熟。
三、分析AlphaGen
论文《Generating Synergistic Formulaic Alpha Collections via Reinforcement Learning》提出AlphaGen框架,使用强化学习(RL)生成协同公式化alpha集合,用于股票趋势预测。核心创新是直接优化下游组合模型性能作为RL奖励,生成解释性强的alpha集合,避免传统方法(如GP)忽略协同效应的缺点。
- Algorithm 1 (Incremental Combination Model Optimization): 处理新alpha添加后的集合优化,包括计算相关性、梯度下降优化权重、移除低贡献alpha。
- Algorithm 2 (Alpha Mining Pipeline): 整体alpha挖掘流程,使用RL生成新alpha,调用Algorithm 1评估奖励,并更新RL策略。
合并后,Algorithm 1嵌入Algorithm 2的第9行(Update F, w using Algorithm 1)。整体流程从数据输入到输出优化alpha集合F和权重w,循环迭代生成协同alpha。以下是合并后的详细步骤解析,我会逐行解释算法,结合论文上下文举例说明(假设股票数据X包括close, open, volume;Y为未来回报;词汇表包括操作符+,-,/,rank,ts_rank等)。例子假设生成alpha如rank((close - open)/volume)。
合并后的详细步骤解析
整个流程是一个迭代循环:RL生成候选alpha → 优化集合 → 计算奖励 → 更新RL策略。步骤基于Algorithm 2为主线,嵌入Algorithm 1。
步骤0: 输入准备与初始化(Algorithm 2的第1-2行)
- 描述: 输入股票趋势数据集Y = {y_t}(未来回报序列)。初始化空alpha集合F = {}和权重w = {}。初始化RL策略π_θ(参数θ,使用LSTM或Transformer生成序列)和replay buffer D(存储轨迹)。
- 举例: X = [close=100, open=95, volume=1000], Y = +0.05。F = {}, w = {}。θ初始化为随机LSTM,词汇表 = {close, open, volume, -, /, rank, SEP}(SEP为序列结束符)。
步骤1: 开始训练迭代(Algorithm 2的第3行:for each iteration do)
- 描述: 进入主循环,每个迭代生成一个新alpha候选,优化集合,计算奖励,更新策略。迭代直到收敛(如IC > 阈值或固定次数)。
- 举例: 假设迭代1开始,当前F = {}。
步骤2: 生成轨迹(Algorithm 2的第4-8行:for each environment step do)
-
**描述:**使用当前策略π_θ生成公式序列,直到SEP或长度超阈值。
- 第5行: – 从当前状态 采样动作 (使用共享 LSTM + MLP_policy 输出概率分布)。
- 第6行: – 更新状态序列。
- 第7行: if or len(s_{t+1}) ≥ threshold then – 检查结束条件(阈值 e.g., 20)。
- 第8行: f ← parse(s_{t+1}) – 解析序列为alpha公式f。
f ← parse(s_{t+1})
是将生成的 Token 序列转化为可计算的公式化阿尔法因子的关键步骤。parse(·)
函数的解析过程遵循 “逆波兰表示法→中缀表达式→因子函数” 的转换规则语法校验:若
s_{t+1}
无法解析为合法表达式(如缺少操作数的[BEG, Add, SEP]
),则parse(·)
会返回 “无效因子”,后续会给予惩罚(奖励r_t=-1
) -
举例: s_0 = []。LSTM + MLP_policy 输出: a_1 = “close” (s_1 = [“close”], r_1=0)。a_2 = “open” (s_2 = [“close”, “open”], r_2=0)。a_3 = “-” (s_3 = [“close”, “open”, “-”], r_3=0)。a_4 = “volume” (s_4 = [“close”, “open”, “-”, “volume”], r_4=0)。a_5 = “/” (s_5 = [“close”, “open”, “-”, “volume”, “/”], r_5=0)。a_6 = “rank” (s_6 = [“close”, “open”, “-”, “volume”, “/”, “rank”], r_6=0)。a_7 = SEP (结束)。解析 f = rank(((close - open) / volume))。如果长度超阈值(如20),强制结束。
步骤3: 更新集合与权重(Algorithm 2的第9行:Update using Algorithm 1)
-
描述: 调用Algorithm 1,将新f添加到F,优化权重w,并移除低贡献alpha。
-
举例整体: 添加f_new后,优化w=[0.4, 0.3, 0.3],IC提升0.02。
步骤4: 计算奖励(Algorithm 2的第10-13行)
- 描述: 计算新alpha贡献作为奖励r_t。
- 举例: r_t=+0.05,轨迹存储[s=“close open -”, a=“/”, r=0.05, s’ = “close open - /”]。
步骤5: 更新RL策略(Algorithm 2的第15-16行:for each gradient step do)
-
描述: 从 D 采样,使用 PPO 代理损失更新 θ。网络架构:共享 LSTM 处理 输出 ;MLP_policy() 输出 π_θ;MLP_value() 输出 V_ϕ(价值)。
-
举例: 从D采样10轨迹 batch B = 64 元组,计算A_t=0.03,更新θ以增加生成“rank”概率,以生成更好 f。
步骤6: 循环结束与输出(Algorithm 2的第17行:return F, w)
- 描述: 迭代结束后,返回最优F和w。
- 举例: 。用于预测:组合输出 = 0.6f1(X) + 0.4f2(X),与Y比较。
这个合并流程确保生成协同alpha,每步优化下游性能。论文实验显示,在中国股市上,AlphaGen的IC高于基线20%,投资回报提升15%。
四、总结
这段时间围绕论文理解展开的强化学习与 PPO 算法学习,让我对 AlphaGen 的运作框架有了初步把握,但也更清醒地认识到:基础理论的扎实程度、原理的通透度以及对模型参数的掌控力,才是决定能否做好模型优化、生成真正有效 Alpha 的关键。接下来,我将继续深耕学习,同时重点攻坚泛化性提升难题,推动从 “理解” 到 “实战优化” 的切实突破。