原文 Sparks of Weight-Space Programming
作者 Rikiya Takehi, Jayden Teoh, Alex Zhang, Omar Khattab
类型 作者研究博客,发布于 2026 年 11 月 2 日
实验记录、代码与模型 lm_understand-logs
把神经网络的权重交给 LLM,会发生什么?
平时用 LLM 写程序,输入和输出都是代码。假如把一个神经网络的参数直接交给它,再告诉它输入、输出分别代表什么,它能不能判断这个网络在做什么,甚至直接修改参数,让网络完成新的行为?
作者把这种方式叫作 Weight-Space Programming。LLM 可以读权重、分析矩阵,也可以根据任务要求写入新权重。不同实验给出的权限不同,小网络可以直接用文本展示全部参数,大模型则需要 Python 工具读取和编辑。部分实验允许有限次数的前向测试,因此要分别记录工具和测试预算。
先看能不能从权重里读出行为
文章先给 LLM 四个结构相同的游戏策略网络,每个只有 17,253 个参数,并解释输入和动作的含义。没有提供候选游戏名称,也没有让它运行环境,模型仍然识别出了 Breakout、Pong、Pac-Man 和 Freeway。
这个结果挺有意思。网络的架构相同,区分任务的信息需要从连接方式和权重中找出来。例如哪些输入区域连接到哪些隐藏单元,最后又怎样影响不同动作。
但后面的实验也给了一个很重要的边界。对于两个 270M 的 Gemma 3 模型,一个诚实、一个迎合用户,单独看权重的四次尝试都没成功判断。允许观察模型处理少量自拟文本时的 attention pattern 后,才成功区分三组模型。能读懂一些小型网络,距离直接从任意模型的参数里解释复杂行为,还有很大距离。
再看能不能直接改出新行为
一个比较直观的实验是让车越过障碍。原策略一直向前开,无法越过障碍。LLM 看过场景和一条失败轨迹后,修改了约 3.5% 的参数,让车先后退,再加速冲过去。作者报告成功率从 0% 提高到 100%,前后分别测试了 256 和 1,024 个 episode。
这类任务适合观察参数编辑究竟改变了什么,因为“先退后进”能够对应到具体的控制逻辑。作者还尝试从零写出游戏策略,以及在有限测试预算下编写围棋网络。不过,不同游戏上的结果有明显差异,需要逐项看对照和预算。
Qwen 的数学成绩为什么提高这么多?
最醒目的实验是修改 Qwen3.5-0.8B。原模型在作者的 thinking 模式设置下容易陷入重复生成,在 MATH-500 上有 93.0% 的样本耗尽 32,768 token 的预算。
LLM 使用 Python 分析权重,并用 GSM8K、MATH 的训练题做有限次数的测试,找到了与循环生成相关的 MLP 方向。最终编辑涉及第 15 和第 19 层的部分输出列,共 131,072 个权重,约占全模型的 0.016%。
在允许 50 次前向测试的配置下,作者报告了以下结果。一次测试可以包含一个 batch,不能把这个预算理解成只做了 50 道题。
| 指标 | 原模型 | 编辑后 |
|---|---|---|
| MATH-500 | 7.9% | 48.1% |
| GSM8K | 13.8% | 67.1% |
| IFEval | 21.0% | 62.3% |
| MATH-500 耗尽 token 预算 | 93.0% | 33.1% |
关键的对照是 Gemma 3 270M。这个模型没有同样严重的循环问题,类似编辑带来的数学成绩变化很小,基线为 6.8%,各预算下约为 7.0%–7.7%。因此,Qwen 实验中的大幅提升,与解除已有能力的输出障碍密切相关。
我的想法
感觉最值得关注的是把参数编辑变成一种可以描述目标、提出假设、检查行为的调试过程。对于已经知道具体故障的模型,例如循环生成、某个控制动作失效,LLM 也许能帮助定位少数影响行为的方向,再通过小规模修改验证。
但这里的计算成本还需要完整统计。写参数的 LLM 本身已经经过大规模训练,还可能调用工具、批量测试和反复尝试。编辑参数的比例很小,也不直接等于获得这些参数的成本很低。
后续我会更关心跨模型和跨随机种子的复现,以及编辑后其他能力是否受到影响。作者提供了实验记录、代码和模型,至少可以沿着具体实验检查。整篇的形式是研究博客,阅读时也需要把探索性的个例、对照实验和能够推广的结论分开。