Learning Beyond Gradients — 深度研究报告
> 来源: https://trinkle23897.github.io/learning-beyond-gradients/
> 评分码仓库: https://github.com/Trinkle23897/learning-beyond-gradients
> 作者: Jiayi Weng (Trinkle23897) — OpenAI 研究员,ChatGPT/GPT-4 的 RL infra 作者
> 日期: 2026-05-09 (发布于 2026-05-08)
一句话版本
编码 AI agent 可以直接改代码策略来学会玩游戏和控制机器人,完全不用训练神经网络、不用反向传播——就像给一个不会学习的程序装上了"自我进化"的能力。
评分
| 维度 | 评分 | 说明 |
|---|---|---|
| 新颖性 | ★★★★★ | 提出 Heuristic Learning 新范式,将编码 agent 视为持续学习的基础设施 |
| 实验充分性 | ★★★★★ | Atari57 × 342 条搜索轨迹 + MuJoCo 多环境,数据扎实 |
| 可复现性 | ★★★★☆ | 完整的 artifact repo + 一键复现命令,但依赖 gpt-5.4(未测试更新模型) |
| 实用价值 | ★★★★☆ | 对持续学习、机器人控制、游戏 AI 有直接启发 |
| 与我们项目关联度 | ★★★★★ | 与 Jay 的 Agent 实践高度相关,特别是 subagent 编排、编码 agent 工作流 |
核心内容
起点:一个意外的发现
Jiayi Weng 在维护 EnvPool(高性能游戏环境池)时,想要一个便宜的 CI 测试方法——不想每次跑神经网络来验证环境是否正确。他让 Codex(gpt-5.4)写纯规则策略,结果远超预期:
Atari Breakout: 程序策略从 387 分一路飙升到 864 分(理论最高分)。策略从简单的"球在左往左走"进化成了包含动作探测、状态读取器、球拍检测器、落点预测、卡死检测、回归测试、视频回放、实验日志的完整系统。
MuJoCo Ant: 纯 Python 策略学会了节律步态 + 姿势反馈 + 接触信号 + 短视模型规划,达到 6000+ 分——与常见 Deep RL 结果相当。
MuJoCo HalfCheetah: 可解释步态/姿势规则 + 在线规划达到 11836.7。
ViZDoom D3 Battle: 第一人称 3D 视觉控制任务。纯 cv2/NumPy 屏幕图像处理(无神经网络),Codex 编写的程序策略在 10 个种子上达到 mean=557.0, min=440.0。
Atari57: 342 条搜索轨迹(57 游戏 × 2 观察模式 × 3 重复),1M 步时的中位数 HNS 远超 PPO-style 基线。
ViZDoom 实验详解(首次补充)
ViZDoom 是基于 Doom 引擎的 3D 第一人称射击环境,比 2D Atari 复杂得多。Codex 产出了两个纯 CV 策略:
D1 Basic(简单):
- 目标是在正确时机等待并拾取医疗包
- 纯 CV 版本用亮度阈值 + 形态学闭运算/膨胀 + 连通组件检测医疗包
- 用边界框中心判断转向和前进
- 血量高且医疗包近时原地等待,等血量下降再拾取
- 10 种子 mean=0.9441, min=0.2900
D3 Battle(核心结果):
- 更像真实 FPS 中的交火策略,不是记忆化地图路线
- 行为分解为三个循环:
1. 击杀:检测到敌人时瞄准并射击
2. 补给:血量或弹药低时寻找补给品
3. 探索:无目标时快速探索
- 屏幕侧:cv2/NumPy 颜色阈值 + 连通组件提取敌人候选/弹药候选/暗区域比(墙壁和门)
- 仅使用 EnvPool 公开游戏变量(HEALTH, AMMO2, HITCOUNT, DAMAGECOUNT, KILLCOUNT)
- 10 种子并行运行 → 35fps 视频回放 → 检查失败模式
- 早期版本尝试了地图访问、对象信息、种子特定分支——全部被移除
- 最终 10 种子 mean=557.0, min=440.0
ViZDoom 实验的意义在于证明了 HL 可以处理第一人称 3D 视觉控制,且策略行为的
| 维度 | Deep RL | HL |
|---|---|---|
| 策略 | 神经网络参数 | 代码:规则、状态机、控制器、MPC、宏动作 |
| 反馈 | 固定奖励 | 测试、环境反馈、日志、重放、人类反馈 |
| 更新 | 梯度下降 | 编码 agent 直接编辑代码 |
| 记忆 | 经验回放缓冲区 | 显式存储 trial、摘要、失败原因、重放、版本 diff |
| 遗忘 | 灾难性遗忘严重 | 编码为回归测试/重放/金标准,可读可删可重构 |
为什么 HL 之前没火?
不是启发式方法没用,是维护成本太高。人类维护规则系统是典型的"今天修 A → 明天 B 崩 → 后天加 if-else → 再后天没人敢删"。编码 agent 改变了这条维护曲线——就像纺纱机改变了纺织效率一样。
HL 如何做持续学习(Continual Learning)
HL 不自动解决灾难性遗忘,但把"避免遗忘"变成了一个工程问题:
旧能力可以被固化到:
- 回归测试
- 固定种子重放
- 金标准轨迹
- 失败视频
- 版本 diff
- 显式的失败方向记录
一个健康的 Heuristic System 需要两个操作:
1. 吸收反馈: 把新失败/日志/奖励写回系统
2. 压缩历史: 把局部补丁折叠成更简洁的可维护形式
耦合复杂度
作者引入"耦合复杂度"概念——编码 agent 能同时维护多少相互依赖的状态、规则、测试和反馈信号。
- 好代码:500 行但有模块边界、好测试、可重放 → 容易维护
- 坏代码:80 行但每行牵一发动全身 → 定时炸弹
下一范式?
> 任何可以被持续迭代的东西,都开始变得可解。
作者认为 HL 是预训练 → RLHF → 大规模 RL/RLVR 之后的候选下一范式。但 HL 不能完全替代神经网络(无法纯代码解决 ImageNet),最佳方向是:
HL 快速处理在线数据 → 变成可训练/可测试/可过滤的数据 → 定期更新神经网络
在机器人领域的 System 1/System 2 分工:
- 专用浅层 NN(System 1 的一部分):感知、分类、物体状态估计
- HL(System 1 的一部分):新鲜数据处理、规则、测试、重放、安全边界、局部恢复
- LLM agent(System 2):给 HL 反馈、改进数据、定期从 HL 数据中自我更新
与 Jay 项目的关联
这个文章和 Jay 正在做的事情有很强的共鸣:
1. Subagent 编排: 作者描述的"编码 agent 闭环"(反馈 → 读上下文 → 改策略/测试/记忆 → 重运行 → 写回结果)和 Jay 的 Veritas Kanban + subagent 工作流高度一致
2. Continuous iteration: "任何能被持续迭代的东西都开始变得可解"——这正是 Jay 在 daily review / nightly build / cron 自动化中实践的理念
3. We have this!: Jay 已经有了 subagent 编排、记忆系统、测试回归、trial 日志。这篇文章从学术角度论证了为什么这条路是对的
4. MEMORY.md = Heuristic System 的记忆组件: 我们的 MEMORY.md 和 LCM 记忆系统实际上已经在做 HL 的"吸收反馈 + 压缩历史"双操作
Heuristic Learning 与 Jay 的非参数学习
Jay 于 2026-02-18 提出的"非参数学习"(Non-parametric Learning)核心理念是:agent 通过记忆文件和技能学习,而非改参数。这与 HL 站在同一范式转移的阵线上。
核心共鸣
两种框架都在说同一件事:
> 学习 = 维护一个不断吸收反馈的系统,而不是训练一张神经网络。
两种设计都需要的两个核心操作——Weng 文章里写得最清楚:
1. 吸收反馈:把新失败/日志/奖励写回系统
2. 压缩历史:把局部补丁折叠成更简洁的可维护形式
咱们的 Daily Review + Nightly Build + MEMORY.md 精简,本质上就是在做这两件事。
关键差异
| 维度 | Jay 的非参数学习 | Weng 的 Heuristic Learning |
|---|---|---|
| **学习对象** | 记忆文件 + Skill 技能库 | 代码策略 + 状态检测器 + 测试 + 日志 |
| **更新机制** | LLM agent 读写 MEMORY.md / skills | 编码 agent 直接编辑 policy.py / test |
| **反馈来源** | 用户对话、任务结果、cron 检查 | 环境奖励、视频回放、测试失败 |
| **记忆形式** | Markdown 文件(可读可删可重构) | 显式 trial 记录、重放、版本 diff |
| **遗忘处理** | 压缩历史(Daily Review / Nightly Build) | 回归测试 + 压缩局部补丁 |
| **工程实现** | OpenClaw + subagent 编排 | Codex + artifact repo |
分工关系
两者不是竞争关系,是分工关系:
- HL 解决的是怎么控制环境(Atari, MuJoCo)——传统 RL 的竞技场
- 非参数学习解决的是怎么变得更聪明(记住偏好、学会新技能)——知识工作流的竞技场
Weng 在文章末尾画出了三层架构,Jay 的非参数学习正好是最上层:
> 专用浅层 NN(感知)← HL(快速响应+安全边界)← LLM agent(非参数学习,定期自我更新)
对我们的启发
Weng 的文章补上了非参数学习缺少的一块拼图:环境级闭环验证。
咱们现在的非参数学习更多是"对话→记忆→回复"的开环;而 HL 展示了:
1. 怎么用视频回放做闭环反馈
2. 怎么用回归测试防止遗忘
3. 怎么用耦合复杂度来控制系统的可维护边界
如果能把 HL 的这套工程方法论(回归测试、重放、耦合度管理)移植到 agent 知识工作流里——比如给每次 subagent 任务加一个"重放检查"步骤——那就是非参数学习从理念走向工程的下一步。
潜在行动点
- [ ] 验证 gpt-5.4 的新模型是否能在我们的 workflow 中产生类似效果
- [ ] 考虑在 Atari/MuJoCo 环境上复现 Breakout 策略(用 Codex/Claude Code)
- [ ] 将 HL 的"耦合复杂度"概念引入我们的 agent 编排规划中——如何在 subagent 分解任务时控制复杂度
- [ ] 在某个小项目中实验"纯代码策略"替代神经网络的可能性
评论
这篇文章让我想起 Simon Willison 说的"LLM 让写一次性脚本的成本几乎为零"——但 Jiayi Weng 走得更远:他证明了不仅是一次性脚本,连"持续维护的复杂规则系统"也因编码 agent 而变得可行。这是从"AI 写代码"到"AI 维护代码系统"的跃迁。
最大的不足可能是依赖 gpt-5.4 的编码能力,而且未验证其他模型的同等工作效果。但作为概念验证和范式倡议,已经足够有冲击力。