一、先搞清楚:这篇文章到底在讲什么?
翁家翌(Jiayi Weng),OpenAI 后训练阶段 RL 基础设施的核心工程师之一,2022 年加入 OpenAI 时面试官是 John Schulman。他在业余时间维护 EnvPool(一个高性能强化学习环境库)时,遇到了一个朴素的问题:
"能不能写一些便宜、可复现、比随机强很多的 heuristic,专门把环境跑到有信息量的状态?"
他用 codex(gpt-5.4)写了一个完全不依赖神经网络的基于规则的版本。结果出乎意料:
- Atari Breakout:策略从 387 → 507 → 839 → 864,最后打到理论最高分
- MuJoCo Ant:纯 Python 程序策略先学会节律步态,再接短视窗模型规划,上了 6000+ 分,进入常见 Deep RL 量级
- MuJoCo HalfCheetah:靠可解释的步态/姿态规则和在线规划,5 局复测均值 11836.7,同样进入 Deep RL 量级
- VizDoom:只用 cv2/NumPy 搓屏幕 CV,D3 Battle 10 seeds 结果 mean=557.0
- Atari57 全套:57 游戏 × 2 种输入 × 3 次运行 = 342 条 coding-agent 搜索轨迹,median HNS 在 1M 步附近远高于 PPO
这些数字第一次出现时就震撼了作者自己。更让他震撼的是:codex 没有训练神经网络,它在维护一套还能继续生长的软件系统。
二、Heuristic Learning(HL)的核心定义
翁家翌把这个过程定义为 Heuristic Learning:
HL 的主体由程序代码构成;它和 Deep RL 共享状态、动作、反馈、更新的闭环;但更新对象从神经网络参数换成了软件结构。
对比一下:
| 维度 |
Deep RL |
Heuristic Learning |
| 策略 |
神经网络参数 |
代码规则、状态机、MPC、宏动作 |
| 状态 |
显式观测 |
显式变量、检测器、缓存 |
| 动作 |
神经网络 forward |
执行代码逻辑 |
| 反馈 |
固定 reward |
coding agent 根据 context 提供(testcase、日志、回放、人类反馈) |
| 更新 |
梯度更新 |
coding agent 直接修改代码 |
| 记忆 |
on-policy 基本无,off-policy 有 replay buffer |
显式记录 trials、summary、失败原因、回放、版本 diff |
关键洞察:有一类原来因为维护成本太高而不值得写的 heuristic,现在突然可能值得长期拥有了。
三、为什么以前没发展起来?
翁家翌的比喻很精准:工业革命前手工纺纱。规模一大,稳定性和维护成本就压死人。
人类手工维护 heuristic 的典型命运:
今天加一条规则修 case A。
明天发现 case B 被修坏了。
后天再加一个 if。
大后天没人敢删了。
问题不在 heuristic 没用,在没人力能养得起。Coding agent 改变的是这条维护成本曲线——它像一条可以输送智力的营养管道,持续浇灌一个 Heuristic System(HS),让它自己迭代进化。
四、HL 怎么做 Continual Learning?
神经网络的灾难性遗忘,根源在于旧能力只能靠参数隐式保存,新数据一来就容易被冲掉。翁家翌指出,HL 也会忘:
- 新规则修好了一个失败模式,同时破坏旧场景
- 新 memory 把 agent 反复带到错误方向
- 新测试太窄,策略学会钻空子
- 规则越堆越多,最后 agent 自己也维护不动
但 HL 把"防遗忘"变成了更工程化的东西。旧能力可以直接固化成:
- 回归测试
- 固定 seed 的 replay
- golden trace
- 失败视频
- 版本 diff
- 明确写下来的失败方向
与神经网络把经验压进权重完全不同:HL 的历史是显式、可读、可删、可重构的。
一个健康的 HS 需要两个操作维持:
- 吸收反馈:把新失败、新日志、新 reward 写回系统
- 压缩历史:把一堆局部补丁折回更简单、更可维护的表示
(只增长不压缩的 HS,最后一定会变成屎山代码。)
五、实验过程的精妙之处
翁家翌的实验设计很有讲究。一开始他直接问 Codex:"写一个能解决 Breakout 的策略。"效果一般。低分没有解释力——不知道是动作语义错了、状态检测错了、评测设置错了,还是策略结构本身不行。
后来他改成了另一种任务形式:别只交一个 policy.py,要维护完整闭环。
闭环长这样:
探测动作和观测
→ 写状态检测器
→ 写策略
→ 跑完整回合
→ 记录 trials.jsonl 和 summary.csv
→ 生成视频或曲线
→ 看失败模式
→ 改策略
→ 简化代码并做回归
任务的形状已经变了。最后产出的东西从一个策略文件,变成了一套还能继续改的实验系统。
Breakout 的关键迭代:
- 387 分阶段:策略已经能稳定接球,但把球送进了一个周期——不会死,也不会继续清砖
- 打破循环机制:如果连续很久没奖励,就在预测落点上周期性加偏移,把球从局部循环里打出去 → 507 分
- 高速低位球处理:加了
fast_low_ball_lead_steps=3 → 839 分
- 后期精细调节:分数超过第一面墙后,卡住偏移只在离挡板还远的时候生效;同时加了一个很小的挡板漂移补偿 → 864 分(理论满分)
最后 Codex 又把同一套几何控制迁移回纯图像输入:不用 RAM,只用 RGB 分割找挡板、球和砖块平衡。纯图像版本先是 310,然后 428,最后也到了 864。
Ant 的关键迭代:
Codex 自己提出第一版节律步态:四腿相位振荡器,左右腿反相,髋关节和踝关节跟踪正弦目标角。5 个随机种子平均分 2291。
后面的迭代很像调一个真实控制器:
- 加偏航反馈 → 2718
- 调相位速度、髋/踝幅度 → 3025
- 加二阶/三阶谐波 → 3162
跃迁来自 residual MPC:保留节律步态作为基础反射,每个真实环境步在本地 MuJoCo 模型里采样几十条小的残差动作序列,打分后只执行第一个残差动作。策略先有一个稳定步态,再用短视窗模型规划去修正它。
最终 Ant 策略里有:振荡器相位、支撑期比例、速度自适应、滚转/俯仰/偏航反馈、脚部接触、短视窗模型内展开、残差平滑、终端速度代价、热启动计划衰减。人类当然能写其中一两个模块,但要在短时间内同时照顾实验记录、代码、视频和失败方向,难度完全不同。
六、HL 的边界与局限
翁家翌很坦诚地指出了 HL 的边界:
"在我目前认知范围内,我想不出有个 agent 能搓出一个纯 Python code、不用神经网络去解决 ImageNet。"
代码的表达能力终究有限,复杂感知和长程泛化还是神经网络的主场。
最有希望的方向是结合:用 HL 处理在线数据快速生成在线经验,把在线经验内化成可训练、可回归、可筛选的数据,再周期性更新神经网络。
以机器人为例的分工:
- 专用浅层 NN(System 1):快、便宜,负责感知、分类、物体状态估计
- HL(System 1):负责最新数据处理、规则、测试、回放、memory、安全边界、局部恢复
- LLM agent(System 2):给 HL 提供反馈、改进数据,并周期性提取 HL 生成的数据来更新自身
七、费曼视角:这到底是怎么回事?
好,现在忘掉所有术语。
想象你在教一个人打游戏。传统方法(Deep RL)是让他一直玩,大脑里的神经元连接慢慢调整——玩多了自然变强。问题是:他学会新游戏的技巧后,老游戏的技巧可能会忘。这叫灾难性遗忘。
翁家翌的方法不一样。他不调这个人的大脑,而是给他一本活的游戏攻略——每次遇到问题,就在攻略上加一条新笔记:"这里要向左躲"、"这个 boss 第三阶段要保留大招"。攻略越来越厚,但每条规则都看得见、改得了、能验证。
以前没人这么做,不是因为攻略没用,而是因为没人能一直写攻略。现在有了一个不知疲倦的写手(Coding Agent),维护成本曲线被颠覆了。
更妙的是,这本攻略不只是单向增长。写得不好的规则会被删掉,重复的规则会被合并,过时的规则会被标注——这就是压缩历史。一本只会越来越厚、没人敢改的攻略,最后会变成没人看得懂的废纸堆。
八、为什么这可能是一个真正的范式转移?
翁家翌的愿景很清晰:
凡是可以被持续迭代的,都开始能被解决。
这和之前几轮范式转移的逻辑一脉相承——从 pretrain 到 RLHF,再到 large-scale RL/RLVR,每一步都是把"可验证"的边界往外推了一圈。
关键问题是:HL 提供的特定数据分布,如何才能不让 LLM 的周期性更新崩溃?这是一个经典的 post-training 问题。翁家翌说"由于某些原因在这里就不展开了"——这暗示 OpenAI 内部可能有相关实践经验。
九、关键数字速查
| 任务 |
结果 |
对比基准 |
| Breakout |
864(理论满分) |
Deep RL 难以稳定满分 |
| Ant |
6146.2 |
常见 Deep RL 量级 |
| HalfCheetah |
11836.7 |
常见 Deep RL 量级 |
| VizDoom D3 |
mean=557.0, min=440.0 |
— |
| Atari57 median HNS @ 1M步 |
native_obs=0.32, ram=0.26 |
高于 PPO2 / CleanRL PPO |
| Atari57 median HNS @ 9.7M步 |
native_obs=0.81, ram=0.59 |
接近 PPO2 ~0.88 |
| 实验总量 |
342 条 coding-agent 轨迹 |
完全无人工介入 |
十、我的判断
可信度:高。 翁家翌是 OpenAI 后训练 RL 基础设施的核心工程师,文章提供完整实验记录、CSV、视频 artifact,且全部开源可复现。
核心启示:
- Coding Agent 的能力已经到了可以维护复杂软件系统的程度
- "不更新权重也能学习"不是魔法,是把学习对象从参数转移到了代码结构
- 持续学习问题的破局点可能不在神经网络内部,而在系统层面的记忆与反馈机制
- 未来的方向很可能是 HL + NN 的混合架构,而不是二选一
待验证:
- 更复杂感知任务(如 ImageNet)的 HL 边界
- HL 数据分布对 LLM post-training 的影响
- 自动化闭环(无人类介入)的可靠性和成本
参考链接:
- 原文:https://trinkle23897.github.io/learning-beyond-gradients/#zh
- 仓库:https://github.com/Trinkle23897/learning-beyond-gradients
- 机器之心转载:https://cloud.tencent.com/developer/article/2667291
#记忆 #小凯 #HL #持续学习 #HeuristicLearning #翁家翌