不给梯度、不跑训练循环,只让 GPT-6 Astra 把一个语言模型的权重当文本读,再动笔改数——MIT CSAIL 的 Rikiya Takehi、Jayden Teoh、Alex Zhang、Omar Khattab 四人 11 月 2 日发布博客,把这套玩法命名为 Weight-Space Programming(权重空间编程)。最硬的一组数字是:Qwen3.5-0.8B 的 MATH-500 从 7.9% 升到 48.1%,而实际改动的权重只有 131,072 个,占全模型 0.8B 参数的 0.016%。

这不是微调,是读病历、动手术

作者给 Astra 的工具是一个装着模型权重的 Python 会话:可以读权重、跑诊断前向,但拿不到任何梯度信息。练习材料只有 GSM8K 的 7,469 道题和 MATH 的 7,275 道(都不是测试集),预算是 10、25 或 50 次前向。Astra 自己定位到 Qwen3.5-0.8B 官方模型卡里警告过的「思考循环」问题:循环方向集中在第 19 层 MLP,最强的写入者是这一层的 11 号神经元。把相关方向移除之后,MATH-500 从 7.9% 拉到 48.1%,衡量指令遵循的 IFEval 从 21.0% 升到 62.3%——数学之外的收益属于顺带溢出。全部改动量:131,072 个权重。

读权重:从 17,253 个数里认出一款游戏

读侧实验从玩具网络起步。四个网格版游戏(Breakout、Pong、吃豆人、Freeway)用完全相同的 MLP 结构(500→32→32→5,共 17,253 个权重)、各以 PPO 训练 10 亿步。只把原始权重作为文本喂进去、不给候选选项,Astra 四个全中;对 Breakout 它给出 99% 置信度,推理过程里明确指出第 8 行的权重画出了底部挡板、第 1 至 3 行是砖块阵。扩散模型同样奏效:三个 DDPM 分别学画圆、方、三角,Astra 从输出层权重的几何结构里读出形状,还把实心图形画成了轮廓——作者认为这个「错误」恰好说明它读的是权重结构,而不是偷偷算了前向。更苛刻的一局:只给 7.2M 字符级 transformer 的中间四层,掐掉输入输出层,模型根本没法在文本上运行。Astra 不仅认出训练语言(Python、罗马字日文、英文),还把全部「复制头」逐个点名,与实测位置完全一致,零误报。

写权重:零训练,一杆 517 分

写侧更激进。Kinetix 环境里,一辆 PPO 训了 10 亿步的车卡在坡前出不来(局部最优)。Astra 一次作答、不许用工具,改掉 171,664 个权重里的 6,073 个(3.5%),随后 1,024 个测试回合全部通关。从零写更夸张:MinAtar 三款游戏,只给规则源码和一个全零初始化的网络,没有数据、损失、梯度、工具,连环境试跑都不允许,Astra 直接把整张权重表当数写出来,写完直接上考场。Breakout 拿到 517.4 分,PPO 训 1 亿步只有 15.8 分,训 5 亿步也只有 25.3 分——对后者是 20 倍差距;Seaquest 达到 5 亿步 PPO 的六成,Asterix 接近持平。

作者自己划的边界

这篇博客诚实的地方在于把失败案例写足了。Gemma 3 270M 两个副本,一个被微调成「谄媚」(用户说什么就附和什么),只看权重 Astra 分不出来,要加上注意力模式工具才能三对全部命中。更关键的是反向结果:Gemma 3 270M 本身很少循环(8.5% 的回答撞 token 上限,Qwen3.5 是 93%),Astra 对它无从下手,MATH-500 从 6.8% 到最高 7.7%,作者直言这点提升不成立。他们的结论写得清楚:权重编辑能搬开遮住已有能力的障碍,但补不出模型本来没有的能力。

所以呢

作者的前瞻判断是:深度学习此前一直把归纳偏置压在 Adam、Muon 这类微型符号优化器里,接下来,权重会被会推理的 LLM 原生优化。这既是优化问题也是可解释性问题——Astra 读权重的过程,本身就是一次白盒归因。工件已经放出:改过的模型在 Hugging Face(RikiyaT/Qwen3.5-0.8B-weight-space-programming),实验日志在 GitHub(RikiyaT/lm_understand-logs),另有在线 demo 可玩。当优化器本身是个会推理的模型,「训练」和「编程」的边界该画在哪?原文:Sparks of Weight-Space Programming