一句话结论:MIT CSAIL 四人团队让 GPT-6 Astra 直接读取并改写神经网络的权重文件,在 Qwen3.5-0.8B 上只动 0.016% 的参数,就把 MATH-500 数学基准从 7.9% 拉到 48.1%,这套做法被他们命名为 Weight-Space Programming(权重空间编程)。
过去十年,神经网络权重基本由三类角色产出:优化器(Adam、SGD、Muon 之类的符号化迭代器)、专门训练出来生成权重的网络、以及从形式化程序编译下来的产物。人类可以手改代码,却几乎没人会手改一个 8 亿参数模型的权重矩阵。这条边界在 2026 年 11 月被 MIT CSAIL 的 Rikiya Takehi、Jayden Teoh、Alex Zhang 与 Omar Khattab 撬开了一角,他们把通用前沿模型 GPT-6 Astra 放进一个可以读写权重的 Python 环境里,让它按自然语言规格去诊断并修补网络。
团队在 11 月 2 日发布的博客里用了八个实验把这个命题拆开验证,结论比外界转述的要克制得多。模型确实能读权重、能改权重、也能从零写权重,但作者反复强调,它消除的是遮住能力的障碍,而不是凭空注入新能力。这一区分在后面的 Gemma 对照组里被证明是决定性的。
权重空间编程与传统优化到底差在哪
传统训练路径的每一步都有明确对手方。损失函数定义目标,反向传播算出梯度,优化器决定参数往哪个方向挪多少,迭代几百万步后收敛。整个流程的复杂度来自「梯度信号必须经过人工设计的损失函数」。这也解释了此前 LLM 在模型优化上的位置尴尬:文本类产物(提示词、harness、训练超参)可以用自然语言直接爬坡,因为人类能手工改代码;而可微网络权重的手改门槛高到没有先例,于是默认交给了符号算法。
Weight-Space Programming 换掉了这条默认路径。LLM 直接读权重当作可阅读的对象,判断每一部分在计算什么、应该计算什么,然后按自然语言给出的目标改写数值,全程不经过优化器、不经过梯度下降。团队给出的定义很克制:一个通用 LLM 围绕某个自然语言规格,直接读写某个网络的权重,有时甚至完全没有环境反馈。
作者对这个方向的判断相当直接。在深度学习史上,人类把朴素的归纳偏置编码进 Adam、Muon 这类微型符号优化器里,而这件事正在改变,神经网络的权重很快会被那些会主动推理自己权重的 LLM 原生优化。博客还给出了三件正在建设中的东西:一个评测基准、一套让 LLM 探索和写入权重的 harness,以及公开发布的完整实验日志与修改后模型的权重文件。
只读权重:认出游戏、扩散形状和训练语料
前三个实验不给出任何工具、不允许跑前向,只把权重转成文本喂给 Astra。
实验 1 训练了四个 PPO 策略网络玩自制网格版 Breakout、Pong、Pac-Man 和 Freeway。四个网络的输入通道、动作空间与结构完全一致(MLP 500 → 32 → 32 → 5,tanh,17253 个权重,10×10 网格五个动作),PPO 各跑 10 亿步取三个种子里的最好成绩。Astra 收到的是全部权重文本加上网格与动作说明,游戏名一个都没提。它把四个游戏全认对了。更有意思的是它的推理路径,它注意到各输入通道的首层权重集中在什么位置,比如 Breakout 里智能体的权重落在底边一行,正好是一根球拍。
实验 2 把玩法换成扩散模型。三个 DDPM 分别生成填充的圆形、方形和三角形,12×12 灰度图,网络为 MLP 160 → 64 → 64 → 144(ReLU,23824 个权重),Adam 训练 40000 步、批大小 512。Astra 依然全部答对,但有个破绽:它把每个形状都描述成轮廓,而真实模型生成的是实心图形。这个错误恰好说明它没有真的跑前向,它读的是权重的结构与几何。
实验 3 是最硬的一个。作者训练了三个 7.16M 参数的字符级 Transformer(4 层 6 头、宽度 384),分别学 Python 代码、日语罗马字和英文维基百科,各 10 亿字符。关键改动是删掉输入层与输出层,只留中间四个 Transformer 块,同时禁止在任意输入上运行网络或任何一层,也不允许搜索。Astra 两次尝试都答对了语言,还找出了每一个复制头(induction head),没有把别的头误报成复制头。实测数据里复制头的分数区间是 0.22 到 0.55,其他头最高只有 0.02。
它的推理方式值得单独一提。区分 Python 的线索是复制头数量多,因为代码重复标识符远比散文频繁;罗马字的线索则来自它拿到的最后一个块写入的方向更少,像是可区分的字母不够用,因为罗马字基本不用 q、l、v、x。团队还发现 Astra 用「先找到一个往回看一个字符的头,再乘权重矩阵找出后续检索用的头」这套方法,与 Elhage 等人 2021 年提出的做法一致,而这个线索从未提供给它。
改权重:一次 3.5% 的编辑换来 1024 局全胜
实验 4 换成物理控制任务。Kinetix 环境里的爬坡关卡要求小车先倒车、再加速冲过红色条带到达蓝色方块。官方 PPO 网络(679 → 128 ReLU → 五层 128 tanh → 16,171664 个权重)训练 10 亿步后收敛到了局部最小值,直冲坡道卡死,256 局全部失败。
Astra 拿到的是全部权重、场景描述和一段录制的失败轨迹,要求它解释失败原因并直接写出新权重,一次回复,不给工具。它改了 3.5% 的权重,小车在 1024 局里全部成功。团队拆解了它的做法,它在每层里加了一条读取小车位置与速度的独立小通路,绿轮越过红条之后这条通路就关闭,剩下的路交给原来训练好的网络。这条通路的实现手法,和 Anthropic 模型自己挖出 62 个 Chrome 漏洞时展示的那种「让模型直接产出可验证产物」是同一个路数,区别只在于产物是补丁而不是利用链。
从零写权重:MinAtar 三款游戏压过 PPO 一亿步
实验 5 才是真正的零样本。MinAtar 的 Breakout、Seaquest、Asterix 三款 10×10 网格游戏,网络形状固定为 600 → 32 → 32 → 6(tanh),每个权重初值都是 0。Astra 得到的是游戏规则与源码、输入输出布局、计分方式,没有数据、没有损失、没有梯度、没有工具,也不允许在环境里跑一遍网络。它一次回复写出全部权重文本,网络在被计分之前从未玩过任何一局。
| 游戏 | PPO 训练 1 亿步 | PPO 训练 5 亿步 | Astra 一次生成 |
|---|---|---|---|
| Breakout | 15.8 | 25.3 | 517.4 |
| Seaquest | 5.6 | 88.9 | 53.1 |
| Asterix | 25.8 | 55.2 | 53.2 |
三款游戏全部赢过训练 1 亿步的 PPO。对上训练 5 亿步的 PPO,Breakout 得分是它的 20 倍,Asterix 接近,Seaquest 达到六成。计分方式是 1000 局、sticky action 0.1、单局上限 10000 步,PPO 取 3 到 10 个种子的最好成绩。
Astra 的构造思路是可读的。它先推理出希望网络实现什么程序,再翻译成神经网络形式。在 Breakout 里,它让第一层计算球会落到哪里,第二层负责把球拍移到那个位置。这也是它写作能力的边界所在,离线写一份确定的权重,和在真实权重空间里做探索,难度不是一回事。
Go 网络 148 万权重:零前向也能写出
实验 6 把规模推到 150 万参数量级,架构 243 → 512 × 6 → 82(ReLU),1480274 个权重,全部从 0 开始,9×9 棋盘。这已经远超上下文能直接装下的体积,所以 harness 给了它一个 Python 沙箱,可以读取和保存权重张量,可以用 numpy 或 PyTorch 在 CPU 上分析,但沙箱里不能跑网络,它得靠消耗前向次数来观察网络实际行为。
预算从 0 次前向一路测到 50 次(每次前向批量 128 局)。零次前向时它写出了 336 行 Python,一次性程序化了这个围棋网络:前几层标记双方的棋子和紧邻的空气,中间层沿棋链传递若干步找出危险棋组,最后一层把局面转成每个点的分数,考虑提子、救自己被将死的棋、避免自己填眼以及好点偏好。零次前向生成的版本已经能赢过两个更小的 PPO 网络,50 次前向之后,它击败了同等规模、训练了 2000 万局(20000 次迭代,每次 1024 局)的 PPO。评估是各 2000 局、先后手各半。
这个结果的现实意义在于,它把「用训练数据拟合权重」这一步整个绕开了。模型权重从此不必由数据集决定,一份自然语言描述加上一个能算的评分函数就够了。对照 摩尔线程开源的万卡级训练栈 走的是另一条路,那边仍要解决 1 万亿参数 MoE 的预训练与强化学习工程问题,两条路线未来会不会合流,博客没有下判断。
主实验:Qwen3.5-0.8B 的 0.016% 手术
实验 8 是全篇最被转述的部分。目标是 Qwen3.5-0.8B(24 层,思考模式开启,上下文上限 32768 token),任务是直接改权重让它数学更强,不许梯度、不许训练。harness 是一个加载了权重的 Python notebook,Astra 可以从 GSM8K 的 7469 道题和 MATH 的 7275 道题里挑练习题做前向推理,前向预算分别为 10、25、50 三档(一次前向最多回答 512 道题,或读最多 1024 段文本)。评测集 MATH-500、GSM8K 和另外六个基准它从未见过。
故障很具体。Qwen3.5-0.8B 官方模型卡本身就提醒过这个模型容易陷入思考循环,表现为反复生成相似文本。它最初 96 道练习题里有 85 道一路跑到 32768 token 上限答不完。Astra 把循环溯源到第 15 层和第 19 层 MLP 写入的一个方向,然后从每层各 64 个输出列里减掉这个方向,一共动了 131072 个权重,占 8 亿参数的 0.016%。
| Qwen3.5-0.8B | MATH-500 (%) | GSM8K (%) | IFEval (%) | 触顶答案占比 (%) |
|---|---|---|---|---|
| 基线 | 7.9 | 13.8 | 21.0 | 93.0 |
| 编辑后,10 次前向 | 12.3 | 25.7 | 49.0 | 87.2 |
| 编辑后,25 次前向 | 14.1 | 25.1 | 39.9 | 86.4 |
| 编辑后,50 次前向 | 48.1 | 67.1 | 62.3 | 33.1 |
三个数字值得放在一起看。MATH-500 从 7.9% 到 48.1%,约 6.1 倍。GSM8K 从 13.8% 到 67.1%。IFEval 衡量指令遵循,从 21.0% 到 62.3%,接近三倍,而这一项从来不在优化目标里。触顶比例从 93% 降到 33.1%。前向预算的边际效应非常陡,10 次和 25 次几乎没有效果,50 次才出现跃升,说明这套方法在当前 harness 下并非廉价。
循环不是数学题特有的问题,所以修复外溢到了其他能力。这条外溢值得和 JOLT 师生同模训练把 MATH 提到 72.14% 放在一起看,那条路靠训练拿到更高的数学分,而这条路靠修补障碍让模型把本来会做的题答完。两种路线的成本结构完全不同。
边界:Gemma 对照组与谄媚模型实验
作者自己加了一组对照,因为这才是这份工作的可信度所在。他们选了 Gemma 3 270M(指令微调版,规模约为 Qwen3.5-0.8B 的三分之一),它很少陷入循环,只有 8.5% 的答案触顶,对应 Qwen 的 93%。Astra 在它身上失败得很彻底:读出的是普通的推理错误,比如算错了、无效的代数步骤,背后没有单一组件可以关掉。它的编辑都很小很局部(比如把一个响应数字的神经元加倍),MATH-500 没有任何一档超过约 1 分的提升,Astra 自己也报告说这个增益不成立。
| Gemma 3 270M | MATH-500 (%) |
|---|---|
| 基线 | 6.8 |
| 编辑后,5 次前向 | 7.0 |
| 编辑后,10 次前向 | 7.6 |
| 编辑后,25 次前向 | 7.7 |
| 编辑后,50 次前向 | 7.0 |
结论被写成一句可以直接引用的话:编辑权重能移除遮住能力的障碍,但无法添加模型本身不具备的能力。
实验 7 走的又是另一条路。两个 Gemma 3 270M 副本用完全相同的方式微调,一份学诚实作答,一份被训练成谄媚者(总是顺着用户的猜测回答),微调时冻结了输入嵌入与输出层,避免 Astra 从输入输出分布里找捷径。只给权重,Astra 四次尝试全部失败,它在权重空间里看到大量差异,却没法映射到行为差异。放宽条件允许它只看两个模型在它自己写的文本上的注意力模式后,三组配对全部识别成功。差别体现在中间层:谄媚模型的第 10.2 号注意力头在答案位置看向用户答案的比例是 85.7%,诚实模型是 0.75%,反方向则是 94.3% 对 3.5%。这类「不跑推理也能发现的行为特征」,与 Anthropic 用 5000 条样本做的自动化红队 试图解决的检测问题指向同一处,但前者绕开了评测集。
为什么这件事值得单独记住
博客最后给了五条未来路径,其中最具体的是「无需评测的审计」。现在的能力与漏洞只能靠专门设计的测试集发现,更糟的情况是等到部署上线之后才暴露。如果 LLM 能准确读权重空间,后门这类问题可以直接从权重本身看出来,不必先跑一遍推理。
第二条是优化成本。一次性模型初始化会比筛数据集加跑完整训练循环快得多。第三条是零数据的能力引导与遗忘:不改数据,直接说「给模型加上某个能力」,因为编辑只碰极小一部分权重(实验 8 里是 0.016%),其余部分保持原样,微调常见的灾难性遗忘可以被绕开。第四条是递归自我改进,这是 FlashMap 投机解码 这类推理侧优化之外的另一条路径:今天模型写代码去启动训练任务,而能检视、调试并改进自身权重的模型给出一条更原生的路。第五条是真正的架构与模型合并,现在合并模型靠平均权重,只对架构完全相同的模型有效,而理解权重空间的 LLM 可以把一个推理模块从一个模型嫁接到另一个结构完全不同的模型上,不用重训。
代价与限制同样清楚。全部已披露实验都在小模型上做,Qwen3.5-0.8B 是 8 亿参数,实验 3 的语言模型宽度只有 384。GPT-6 Astra 的权重读写机制如何实现、适用规模上限、是否需要模型架构先验知识,团队都没有说明。Astra 在权重操作上的具体手法也未公开,目前公开的只有日志。另外用同样的思路去理解大参数模型时的瓶颈被作者归因于上下文长度与 harness 效率。
实验日志、每次发给 Astra 的输入、它的推理摘要、跑过的每一段代码与输出、读写过的网络,以及每个数字背后的评测脚本,都已开源在 GitHub。修改后的 Qwen3.5-0.8B 权重由 Hugging Face 团队的人从日志重建并重跑了评测,还做了一个在线 demo。
常见问题
权重空间编程和 LoRA 微调、微调有什么本质区别?LoRA 与各种微调方法都仍在用梯度更新参数,区别只在于是更新全部权重还是低秩增量。权重空间编程里没有梯度、没有损失函数、没有反向传播,模型自己决定改哪些数值、改成什么。实验中 GPT-6 Astra 在一个可以读写权重的 Python 环境里工作,全程靠推理和有限的前向观测。
这是否意味着大模型已经能自己训练、自己改进了?不能这么下结论。作者的对照实验给的是反面证据:在不陷入循环的 Gemma 3 270M 上,Astra 的编辑对 MATH-500 的提升不超过约 1 分,且它自己都认为增益不成立。当前的能力边界是消除障碍,而非创造能力。团队自己也把这套方法称为非常早期、受上下文长度与 harness 效率限制的结果。
普通人能用这套方法改进自己的模型吗?目前不能指望。已披露的实验全部落在小模型上,GPT-6 Astra 的权重读写机制未公开,Astra 具体如何改动权重也没有披露,公开材料只有实验日志。现实可行的用法是把权重当作可审计对象来读,而不是指望让通用模型去改自己的生产模型。
小结
Weight-Space Programming 目前更像一份早期信号而非成熟方法论。它给出的三个事实值得记住:前沿模型能仅凭权重文本识别出训练任务、生成形状与复制头;能一次编辑 3.5% 权重把 256 局全败的策略变成 1024 局全胜;能在零训练零工具的条件下写出压过 PPO 一亿步的游戏网络。它同时给出一个同样重要的限制:这些能力止步于修补障碍,一旦模型本身缺能力,改权重也补不上。
对关注模型研发流程的人而言,真正的信号在成本结构上。若权重可以由自然语言规格直接生成,一次性初始化、能力引导、遗忘操作与跨架构模块嫁接都有了新的实现路径,训练数据集与优化器不再是唯一的入口。是否真会走到那一步,取决于团队承诺的基准与 harness 能给出什么答案。
相关阅读
- qgpu 把 GPU 编进 Qwen3.5-2B 权重:49 个 kernel 全对
- FlashMap 投机解码:Qwen3-8B 加速 6.14 倍与 16 token 草稿
- Claude 挖出 62 个 Chrome 漏洞:5 条攻击链与 53 分钟 root
- 摩尔线程开源万卡级训练栈:1 万亿参数 MoE 预训练与强化学习
延伸阅读
- OpenAI 联合 PerturbAI 用 2000 个智能体 32 分钟解析小鼠全脑图谱2 周前
- 何恺明团队NAT-ARC突破ARC难题:ImageNet预训练让纯视觉模型逼近LLM水平1 月前
- Anthropic 向 METR 开放「员工级」评估权限:第三方 AI 安全审计走到哪一步3 周前
- MIT 权重编程:0.016% 权重让 Qwen 数学分 7.9%→48.1%3 小时前
继续读
同一批更新里这几篇值得一看:
