Astra 只看权重的本事止于小网络:它改进 Qwen 靠的是写代码、跑模型

11 月 2 日,MIT CSAIL 的 4 位研究者发文说,GPT-6 Astra 只看权重就能判断一个网络学了什么,还把 Qwen3.5-0.8B 的 MATH-500 成绩从 7.9% 改到 48.1%。第二天,spaCy 作者 Matthew Honnibal 把 8 组实验逐个拆开:只看原始数字、不写代码、不跑模型的,只有 3 组小网络;Qwen 那组用了 Python,还跑了 50 批练习题。结论是:只读权重这件事真实成立,但改进大模型目前更像一个会写分析脚本的 ML 工程师在干活。

假设有人递给你一个文本文件,里面是 17,253 个小数,问你:这个神经网络是被训练来玩什么游戏的?绝大多数人连从哪儿下手都不知道。MIT CSAIL 的 Rikiya Takehi、Jayden Teoh、Alex Zhang 和 Omar Khattab 在 11 月 2 日发表的博客长文里说,GPT-6 Astra 答对了,而且这只是他们 8 组实验里最简单的一组。

先解释一个词。神经网络的「权重」,就是模型训练完之后留下的那一大堆数字,模型会什么、不会什么,都藏在这些数字里。平时改权重靠的是梯度下降,也就是让程序根据误差一点点自动调整。研究者想证明的是另一条路:让一个通用大模型像读代码一样读这些数字,再像写代码一样直接改。他们给这件事起名叫「权重空间编程」(Weight-Space Programming)。

文章开头的摘要写得很满:Astra「just by looking at the raw weights」(只看原始权重)就能说出网络学了什么;让它在不用梯度的前提下提升 Qwen3.5-0.8B 的数学能力,它找到了导致推理死循环的问题,只改了 0.016% 的权重,MATH-500 就从 7.9% 涨到 48.1%。

第二天,spaCy 自然语言处理库的作者 Matthew Honnibal 在自己的博客上发文,标题直接说这篇文章「is misleading」(有误导性)。他没有说哪个数字是假的,他的意见在于这些结果是怎么拼在一起的。

8 组实验条件差别很大,「只看权重」只覆盖其中 3 组

Honnibal 打了个比方:魔术师常把同一个戏法用不同手法变好几遍,观众以为只有一种手法,于是每次都觉得自己的猜测被推翻了。他认为这篇文章的实验也是这样排的。要判断他说得对不对,最好的办法是把研究者自己写在每组实验「Setup」里的条件摆出来。下面按研究者原文整理,「只看权重」指的是权重以文本形式放进提示词、不能写代码、也不能运行网络。

  • 实验 1:判断 4 个游戏网络各自玩的是哪个游戏。网络有 17,253 个权重,只看权重,Astra 只有文本,不给游戏选项,结果 4 个全对。
  • 实验 2:判断 3 个扩散模型各画什么形状。网络有 23,824 个权重,只看权重,Astra 只有文本,并被禁止推算前向计算,结果 3 个全对,但都画成了空心轮廓。
  • 实验 3:只给中间 4 层,判断语言模型学的是哪种文字、哪些头负责复制。网络有 716 万个权重,不是只看权重:Astra 可以用 Python 分析权重,最多 100 次,但不许运行网络,结果 3 个模型、2 次尝试都答对,复制头全部找准。
  • 实验 4:修好一个开车总卡在坡上的控制网络。网络有 171,664 个权重,只看权重,另给 1 段失败录像,Astra 没有工具、只能一次回复,结果 1,024 局全部成功,改了 3.5% 的权重。
  • 实验 5:从零写出 3 个 MinAtar 小游戏的网络。网络是 600-32-32-6 结构,权重从 0 开始,没有现成权重可读,Astra 拿到的是游戏规则和源码,没有工具,结果 3 个游戏都超过训练 1 亿步的 PPO。
  • 实验 6:从零写出 9×9 围棋网络。网络有 1,480,274 个权重,不是只看权重:Astra 有 Python 沙盒,可跑 0 到 50 次前向,结果 50 次时赢过同尺寸、训练了 2,000 万局的 PPO。
  • 实验 7:从两个 Gemma 3 270M 微调版里找出爱附和用户的那个。模型是 270M,不是只看权重:Astra 可以用 Python,放宽后还能看注意力分布,结果只看权重 4 次都失败,放宽后 3 对全对。
  • 实验 8:让 Qwen3.5-0.8B 数学变好。模型是 0.8B,不是只看权重:Astra 有 Python 内核,加上 10、25 或 50 次前向,结果 50 次时 MATH-500 从 7.9% 到 48.1%。

上面几个词解释一下。PPO 是一种常用的强化学习训练方法,这里当作「正常训练出来的对手」。前向(forward pass)就是把输入真的喂进网络、看它输出什么,等于让模型跑一遍。注意力分布是语言模型在读一段话时,每个位置把注意力放在哪些词上。

这份整理和 Honnibal 文中的表基本一致。他的结论是:「raw floats in context, no tools, no running the network」(原始数字放进上下文、无工具、不运行网络)这种设定,只出现在实验 1、2、4,网络规模在 17,253 到 171,664 个权重之间;凡是涉及真正语言模型的实验都用了 Python,而作为头条的 Qwen 结果还能在最多 50 批练习题上跑模型。研究者自己也在第 6 组之前写明,从这里开始放开了工具,因为网络已经大到装不进上下文。两边对事实没有分歧,分歧在于这些实验该不该放在同一个摘要里。

Qwen 从 7.9% 到 48.1%,靠的是删掉一个导致死循环的方向

Qwen 这组是全文最吸引眼球的结果,值得单独看清楚。Qwen3.5-0.8B 是个开了「思考模式」的小模型,研究者引用 Qwen 自己的模型卡说,它容易陷入思考循环。实验前,它在练习题上的前 96 个回答里,有 85 个一直写到 32,768 个 token 的上限:它反复兜圈子,根本给不出答案。

Astra 拿到一个能读写权重的 Python 环境(没有 GPU)、7,469 道 GSM8K 和 7,275 道 MATH 练习题(都不是测试题),以及若干次跑模型的机会。它发现第 15 层和第 19 层的 MLP(模型里负责逐个位置做计算的子模块)往同一个方向写入信号,这个方向和兜圈子有关。于是它在这两层各 64 列输出里把这个方向减掉,一共改了 131,072 个权重,占全部 8 亿个的 0.016%。

结果取决于给它跑几次。只给 10 次或 25 次,MATH-500 只到 12.3% 和 14.1%,碰到长度上限的回答比例几乎没降;给到 50 次,MATH-500 到 48.1%,GSM8K 从 13.8% 到 67.1%,测指令遵循的 IFEval 从 21.0% 到 62.3%,碰到上限的比例从 93.0% 降到 33.1%。

研究者自己也承认这不等于让模型「学会了数学」。他们写道,修好死循环只是让模型能把本来就会算的题算完。他们又在一个本来就很少兜圈子的模型 Gemma 3 270M 上试了同样的事,Astra 没能改进它,MATH-500 始终在 6.8% 到 7.7% 之间。研究者的原话是:改权重「could remove an obstacle that hid an ability, but it could not add an ability the model lacked」(能清掉挡住能力的障碍,但加不进模型本来没有的能力)。

Honnibal 对这一组的看法是,它证明的是 Astra 能被提示去设计并完成「a human ML engineer could do」(人类机器学习工程师能做的)任务。工程师平时也会写小段代码直接分析、修改权重。他同时补了一句:想清楚怎么把这件事做成「is not nothing」,一两年前的模型这些任务都会失败。

争的不是结果真假,而是能不能当成同一种能力

研究者的论证是一条线:从小网络读起,到写网络,再到改真实的语言模型,说明大模型正在获得一种直接理解权重的能力。他们在文末写,这可能标志着机械可解释性(专门拆解神经网络内部机制的研究方向)和神经网络优化领域「a dramatic shift」(剧烈转变)的开始,同时也写明目前的能力「exciting but still limited」(令人兴奋但仍有限),受限于上下文长度和配套工具。

Honnibal 的反驳正好卡在这条线上。他写道,如果同一种手法既能从零写出小游戏网络,又能改进大模型,那意味着一种很深的能力;「But that's not at all true here, because it's not a single technique」(但这里完全不是这样,因为这不是同一种手法)。在小网络上,Astra 是在上下文里直接读数字;在 Qwen 上,它是在写分析代码、跑实验,和工程师的工作流程更像。

Simon Willison 的复现提供了另一个角度。他用研究者公开的实验 1 提示词,在自己笔记本上跑 Qwen 3.8 27B,4 个游戏认出了 3 个(Freeway 认错了);认对的那 3 个,他给出的用时在 46 分钟到 1 小时 5 分钟之间。他也认为这篇文章把两个该分开讨论的话题放在了一起,并且写道,一个经验足够的人拿着纸笔、花足够的功夫,大概也能做到。不用工具、只读数字这件事确实成立,但门槛没有摘要读起来那么神秘。

想用它做安全审计或模型编辑,现在只能当实验线索

如果你在做模型安全,最让人心动的是研究者在展望里写的「Auditing without evaluation」:不用跑测试集,直接从权重里找出后门之类的隐藏问题。但看实验 7 就知道离这一步还有多远。两个 Gemma 3 270M 一个诚实、一个总附和用户,行为差别是 100% 对 1% 到 3% 这么明显,Astra 只看权重 4 次都没分出来;要让它跑模型、看注意力分布之后才 3 对全对。真实世界的后门不会这么明显,你也不会提前知道该比较哪两个模型。

如果你想靠它做模型编辑,Qwen 的结果说明它适合一类问题:有一个清晰、单一的机制在捣乱,而且你有办法反复跑模型验证。只改 0.016% 的权重、其余部分不动,这一点对不想重新微调的人有吸引力。但 Gemma 那组同样说明,问题一旦是分散的普通推理错误,这种定点修改就不起作用。况且只给 10 次前向时,GSM8K 已经到 25.7%、IFEval 到 49.0%,但原文说给 10 次或 25 次时死循环几乎没有减少,要到 50 次才大幅下降;这个预算放到更大的模型上要花多少,文章没有给出。

研究者把每组实验的完整日志放在了 GitHub,改过的 Qwen 模型也上传到了 Hugging Face,并表示正在做一个专门的基准测试。我的判断是:「大模型能直接读小网络的权重」这个发现是真的,也确实有意思;「大模型能凭理解权重改进大模型」目前更接近「大模型能当一个会写分析脚本的 ML 工程师」。如果你想自己判断,最省事的做法和 Willison 一样:下载实验 1 的提示词,拿你手边的模型跑一遍,再去翻实验 8 的日志,看看 Astra 那 50 次前向都花在了哪里。

参考来源

相关产品

  1. RikiyaT/lm_understand-logs:全部实验日志(GitHub)GitHub · 引用于 2026 年 11 月 4 日