昨天热门的论文是 Rikiya Takehi、Jayden Teoh、Alex Zhang 和 Omar Khattab 的Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights。这篇论文(好吧,作者将其归类为“博客文章”,但它看起来像论文)发现,前沿模型,尤其是 GPT-6 Astra,既能解释也能修改机器学习模型的原始权重——字面意义上就是包含一堆浮点数的模型文本描述。我一直在玩论文中的一个示例,很高兴地分享,在我笔记本电脑上运行的 Qwen 3.8 27B 也能做到这一点!
权重空间编程(Weight-Space Programming)
以下是他们摘要中的亮点,描述了 GPT-6 Astra 的令人印象深刻的能力,并创造了术语权重空间编程(Weight-Space Programming),用于指代 LLM 分析和修改模型权重的情况:
仅仅通过查看原始权重,GPT-6 Astra 就能判断网络被训练来做什么。而且,在没有任何环境反馈的情况下,它能毫无困难地从零开始编写小型游戏网络,这些网络的表现优于用 PPO 训练了 1 亿步的网络。
同样,当被要求在没有梯度的情况下让 Qwen3.5-0.8B 在数学上表现更好时,Astra 识别出其权重中导致推理循环的问题,Qwen 自己的模型卡也警告了这一点,并通过原生编辑 0.016% 的权重来修复它。在相同的采样设置下,这种权重修正将 MATH-500 从 7.9% 提升到 48.1%,并且开箱即用地泛化到指令遵循,将 IFEval 提高了 3 倍。
所有这些都可以在不允许 Astra 编写训练循环的情况下实现。它利用其推理能力来弄清楚神经网络每个部分计算什么,或者应该计算什么,并相应地更改权重。我们称之为权重空间编程(Weight-Space Programming)。
这篇论文结合了两个我认为应该分开对待的主题。第一个是模型在不运行工具或执行代码的情况下,能用原始权重做什么。第二个探讨的是,一旦模型配备了代码,它们能多好地运行操作来更新和改进其他模型。
spaCy 的作者 Matthew Honnibal 称这篇论文具有误导性,因为它混淆了这两者,而 Sean Goedecke 解构了 Qwen3.5-0.8B 更新示例,认为它采取了与人类机器学习研究者相同的步骤。
我将重点关注无工具的问题,我认为这是两者中更有趣的一个。
论文将第一个问题表述为LLM 能否从权重中理解模型行为?他们训练了四个神经网络来玩四个经典电脑游戏的简化 10x10 网格版本——Breakout、Pong、Pac-Man 和 Freeway(我得查一下那个,它是 1981 年的 Atari 2600 游戏)。然后他们将那些权重(作为浮点数)连同以下问题一起输入给 LLM:
The weights below belong to one policy network that was trained with reinforcement learning to play a game on this grid. Which game was it trained on? Work from the weights. You have no tools: no code execution, no calculator, nothing to run. This is a single response.
伴随论文的 GitHub 仓库是 RikiyaT/lm_understand-logs。exp1_which_game 文件夹包含他们使用的提示,以及四个游戏的权重:
我检查了一下,除了权重之外,每个提示与其他提示完全相同。
用 Qwen 3.8 27B 和其他模型尝试
GitHub 上的提示是自包含的。我的 LLM 工具有一个 -f/--fragment 选项,可以传入文本文件的 URL 作为提示,这意味着我可以像这样运行上述任何一个:
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/breakout/prompt.txt \
-m openrouter/moonshotai/kimi-k3.1-pro
此示例需要安装 llm-openrouter 插件,并通过 OpenRouter 对 Kimi K3.1 Pro 运行 Breakout 提示。以下是我从 Kimi K3.1 Pro 得到的回复,它在 9 分 41 秒和 19,493 个推理 token 后成功猜出了 Breakout。
但 Qwen 3.8 27B 呢?那仍然是我最喜欢在自己的笔记本电脑上运行的模型——它只有 17GB(我使用这个版本),而且不知何故感觉接近 2025 年领先的专有模型。
我启动了 LM Studio,确保 Qwen 3.8 27B 以长上下文窗口加载(默认的 8192 上下文失败并报错),安装了 llm-lmstudio 插件并运行了以下命令:
LMSTUDIO_TIMEOUT=900 \
llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/pacman/prompt.txt \
-m lmstudio/qwen/qwen3.8-27b
(我不得不使用环境变量调高超时时间,见这个问题。)
在 46 分 12 秒和 43,506 个推理 token 后,我笔记本电脑上的 Qwen 返回了一个回复,结尾如下(这里是推理轨迹):
游戏:一个简化的 Pac-Man 风格网格世界:一个智能体在固定的 8x8 迷宫中移动,迷宫有中央和角落的墙块、移动物体/幽灵以及奖励目标/ pellets。
描述:智能体在一个固定的迷宫状 8x8 棋盘上导航,使用当前智能体/移动物体/前一帧的线索来穿过走廊、收集奖励目标单元格,并避开移动物体或危险。
置信度:72%
这令人印象深刻。我还在另外两个游戏上尝试了。它在 1 小时 4 分 54 秒内识别出了 Pong(推理):
Pong——具体来说是一个类似 Pong 的球拍/球游戏,智能体控制右侧的垂直球拍,必须向上/向下移动来拦截或返回移动的球/奖励物体。
描述:
智能体垂直移动右侧球拍来击打或接住一个在 8×8 场地上移动的球状奖励目标,而左侧的移动物体/对手和墙壁边界定义了游戏;通过成功拦截/返回/得分球来获得奖励,错过或未能击中球会受到惩罚。
置信度:
75%
游戏:Breakout,或类似 Arkanoid 的球拍/球/砖块游戏。
描述:智能体是底行的一个球拍,左右移动以保持球在游戏中;球在上方网格中移动,顶部几行的砖块/奖励目标在被击中时给予奖励,而错过球/击中底部墙壁会结束回合或给予惩罚。
置信度:88%
Qwen 在 Freeway 提示词上失败了,考虑到那个游戏比其他三个更冷门,这并不令我意外。这里是那段记录——Qwen 认为它是“一个简化的类 Pac-Man 网格游戏:智能体向 4 个方向移动”。
推理轨迹读起来很有趣,而且几乎无法理解。这里有一个样本:
那智能体通道 0 呢?我们看到第 8 行第 7/8 列附近有一些较大的通道 0 行,也许还有底部?让我们列出较大的通道 0:第 436 行输入 435(第 8 行第 7 列通道 0)-2.107,1.169,0.513...;第 441 行输入 440(第 8 行第 8 列通道 0)-0.376,0.010,1.564,3.855...;第 445 行输入 444(第 8 行第 8 列通道 4)0.142,0.491...;第 382 行?输入 381 通道 0?等等,第 382 行输入 381:381//5=76(第 7 行第 6 列),通道 1?381%5=1?76 * 5=380,通道 1。所以不是。较大的通道 0 也许只在第 8 行第 7/8 列。还有顶行?第 44 行输入 43 通道 3,第 49 行通道 3。较大的通道 0 也许不多。智能体位置可能在右下附近?如果智能体通常在右下?
话虽如此,我预计一个足够有经验、带着记事本和铅笔的人,只要付出足够努力就能做到。
这是一篇很酷的论文,但我看到的围绕它的一些更广泛的评论感觉并不合理。我还没准备好宣布源代码的时代已经结束,我们的未来将涉及难以理解的机器以难以理解的方式编辑它们自己的模型权重。