---
title: "概念-AlphaGPT-REINFORCE训练闭环"
date: 2026-07-21
tags: [AlphaGPT, 择时, 强化学习, 策略梯度, 概念]
source: "AlphaGPT择时框架"
---

## 一句话

回测给的分数(reward)反过来更新模型:用 **REINFORCE 策略梯度**,让模型"多写高分公式、
少写低分公式"。这是把"打分"变成"学习信号"的最后一环。

对应代码:`run_timing.py` 的训练主循环;`model_core/engine.py` 是选股版对应实现。

---

## 完整闭环

```
   ┌──────────────────────────────────────────┐
   │ a. Transformer 采样 batch 条公式           │  ← 生成器(接龙+裁判)
   │ b. VM 执行每条公式 → 因子值                 │  ← 栈式虚拟机
   │ c. 回测: 因子→仓位→扣成本→夏普 = 分数        │  ← reward 来源
   │ d. reward = 各OOS窗夏普均值 - 复杂度惩罚      │
   │ e. REINFORCE 策略梯度更新 Transformer 参数   │  ← 本篇重点
   └──────────────────────────────────────────┘
```

前四步分别见 [[概念-AlphaGPT-公式生成器与合法性掩码]]、
[[概念-AlphaGPT-后缀表达式与栈式虚拟机]]、[[概念-AlphaGPT-回测评分与仓位映射]]、
[[概念-AlphaGPT-walk-forward样本外验证]]。

---

## REINFORCE:核心思想

强化学习最朴素的算法。直觉:**如果一条公式得了高分,就调整模型参数,让它下次更可能
写出这条公式(以及类似的);低分则相反。**

数学上,梯度 = `-log_prob × advantage`:
- `log_prob`:采样时记下的"这条公式被写出来的概率对数"(见生成器笔记)
- `advantage`:这条公式比"平均水平"好多少

高分公式(advantage>0)→ 增大它的概率;低分(advantage<0)→ 减小。 ^reinforce核心

---

## advantage 的标准化(关键技巧)

代码:`adv = (rewards - rewards.mean()) / (rewards.std() + 1e-5)`

不用绝对分数,而用 **batch 内的相对好坏**(z-score)。为什么?
- 绝对分数尺度不稳(有时全是负分,有时全是正分),直接用会让梯度忽大忽小
- 标准化后,advantage 永远是"相对这批公式的排名",训练稳定 ^advantage标准化

`loss = sum_t(-log_prob_t × adv).mean()`,对所有时间步(12个token)求和再取 batch 均值,
`AdamW` 反向传播更新 `FormulaPolicy`。

---

## 一个诚实的实现注记(讲课加分点)

这是**纯 REINFORCE,没有 baseline critic**——用 batch 内均值当基线,而非训练一个
value 网络。虽然 model_core 的 `AlphaGPT` 定义了 `head_critic`(价值头),但训练循环
里没用它算 advantage。这是"定义了但没生效"的组件之一。

对熟悉 RL 的听众,主动点出这点反而加分:说明你清楚它是简化版,没有假装用了 A2C/PPO。 ^无baseline

---

## New King 机制

每当一条公式的 OOS 分数打破历史最高,打印一条 "New King",带 `OOS / IS / gap`。
`gap = IS - OOS` 是过拟合监控——gap 越大说明越依赖样本内、样本外越差。
见 [[概念-AlphaGPT-walk-forward样本外验证#^gap意义]]。

同时维护**因子池**:按公式字符串去重,保留每条的最高 OOS,最后取 Top-N 输出。

---

## 相关笔记
- [[MOC-AlphaGPT择时框架]] — 架构入口
- [[概念-AlphaGPT-公式生成器与合法性掩码]] — log_prob 的来历
- [[概念-AlphaGPT-回测评分与仓位映射]] — reward 的来历
- [[概念-AlphaGPT-walk-forward样本外验证]] — 为什么用 OOS 当 reward

