GPT-6 Astra改Qwen权重0.016%,MATH-500从7.9%升到48.1%
当「读懂权重」和「改写权重」被同一个模型打通,「AI 改进 AI」就多了一条不经过梯度下降的短路通道,模型维护与模型能力放大之间的边界开始模糊。

MIT CSAIL 这回换了个更直接的路数:请 GPT-6 Astra 去翻 Qwen3.5-0.8B 的内部权重,把出问题的位置找出来,然后动手改参数。

改完一看,Astra 动过的权重只占约 0.016%,Qwen 的 MATH-500 成绩却从 7.9% 升到 48.1%,差不多是原来的 6 倍。
这项研究真正透露的信号,并不在“0.016% 权重换 6 倍成绩”这组数字上。它把机制可解释性的产出,从一份“解释”变成了能照着执行的编辑指令,AI 由此有了改造另一个 AI 的着手处。
同一组实验里还有更耐人寻味的部分:Astra 光看参数,就能认出神经网络学过哪款游戏、哪门语言,甚至能凭空写出一整套网络权重,让网络直接学会打游戏。

研究者给这种能力起了个名字,叫 Weight-Space Programming,也就是权重空间编程。它背后对应一个挺关键的技术变化:神经网络里的参数一旦能被还原成具体的计算过程,LLM 就有机会像改代码那样,直接改写模型内部的功能。
这件事是怎么做到的,得从 Astra 读权重的方式讲起。

01
手里只有一堆数字,
Astra 凭什么判断网络学会了什么?
研究者先安排了一场猜游戏的实验。
他们各自训练了 4 个神经网络,分别学 Breakout、Pong、Pac-Man 和 Freeway。为防止 Astra 靠网络大小猜出答案,4 个模型用的架构完全一样,每个含 17253 个参数,输入都是 10×10 的游戏网格,输出对应 5 种动作。
训练完成后,研究者交给 Astra 的只有权重,既不说游戏名称,也不准运行网络。Astra 照样把 4 款游戏全认了出来。
它靠的是训练留在参数里的痕迹。比如 Breakout 的球拍总在屏幕底部来回移动,网络输入层里负责读取玩家位置的那些权重,就会集中在网格下沿。再对上输出层对左右动作的响应,Astra 就能判断这个网络在控制什么。

不过游戏网络占了个便宜:输入位置本身有明确的物理含义。大型语言模型的隐藏维度没有这种标签,某个参数数值很大,也说明不了它代表什么。
为了看看 Astra 能不能读懂更复杂的结构,研究者训练了 3 个约 720 万参数的字符级 Transformer,分别学 Python、罗马字日语和英语。之后把输入 Embedding 和输出层拿掉,只留中间 4 个 Transformer Block。

这么一来,Astra 既不知道隐藏维度对应哪些字符,也不能运行模型看输出,只能分析内部矩阵之间的关系。它找到的突破口是 Induction Head,即 Transformer 里帮模型复制历史文本的一类 Attention Head。
举个例子,前文出现过 total,后文又冒出 tot,模型能找回之前相同的片段,接着生成 al。这个操作看着简单,内部却要办成两件事:先在历史里定位重复片段,再把片段后面那个字符的信息带到当前位置。

在Transformer里,读取历史中哪个位置由QK电路决定,读到的信息如何写回隐藏状态则由OV电路决定。一次完整的复制动作,通常要靠不同的Attention Head分工配合:前一个Head给出字符之间的位置关系,后一个Head拿这些信息去找匹配的片段。Astra顺着信息传递的路径,对不同Head的矩阵乘积逐个分析,寻找能完成这种配合的结构。最终它在Python模型里找到3个copying head,另外两个模型各找到1个,随后实际运行网络做功能测量,判断也得到了印证。

Python代码里变量名、标识符反复出现,复制能力在这里格外有用;罗马字日语则不一样,隐藏特征的写入方向呈现出另一种分布。Astra正是靠这些差异推断出训练语言的。技术上的关键在于:单独看一个权重很难解释,但多个矩阵沿着计算路径组合起来,就可能表现出明确的功能。

神经网络内部的表示可以经过基变换,单个参数的数值跟着变,网络实际完成的计算却保持不变。所以理解模型不能只盯住某一个神经元,得看信息怎样穿过不同层,形成能够重复执行的计算关系。
当然,这套方法还没能覆盖所有行为。另一项Gemma实验中,Astra仅凭权重判断不出哪套模型更容易迎合错误答案,补进少量Attention激活信息之后才成功。静态参数能提供结构线索,复杂行为有时还得靠实际输入来帮忙定位。
不过前面的实验已经表明,Astra能在某些网络里识别出承担具体功能的计算路径。研究者随后把问题掉了个方向:既然这样的路径找得到,能不能直接设计一条,让神经网络按指定规则工作?


02
让LLM直接写权重
接下来,研究者交给Astra一套全零的网络权重,要它按游戏规则直接生成策略。整个过程没有训练数据,没有Loss,没有Gradient,也不能提前跑游戏看效果。
Astra的做法有点像编译程序:先想明白任务需要哪些计算,再把这些计算分派到不同的网络层。

拿Breakout来说,要接住小球,得知道球在哪、往哪走,估算它落到球拍高度时的位置,再控制球拍左右移动。写成普通程序,这些操作用坐标计算加条件判断就能实现;搬进神经网络,就得靠矩阵乘法组合坐标,用非线性激活做近似判断。
于是Astra把算落点的任务交给靠前的网络层,后面的层再根据落点与球拍的位置差生成动作。它直接给出具体权重,让网络在前向传播时执行这套策略。

结果,生成的Breakout网络平均得分达到517.4,作为对比,PPO训练1亿步和5亿步后的成绩分别是15.8和25.3。
这里有个重要前提:Astra已经拿到了游戏规则,可以直接用已有知识设计策略,PPO则要靠环境交互一步步学。所以这个实验主要说明的是,当任务能写成明确的算法时,算法可以被直接转换成网络参数。
但Breakout只需要处理相对简单的位置关系,如果任务要求信息跨越多个位置传递,又该怎么办?

研究者把任务换成了9×9围棋,网络规模增加到约148万参数。参数太多,Astra没法在上下文里逐个处理,便借助Python构造权重矩阵。
围棋策略被拆成若干个前后衔接的计算环节:棋盘上的黑白棋子与空点,先由前几层认出来;随后中间层顺着相连棋子的走向传递信息,据此判断棋块有没有气;到了最后,再综合提子、救援、自陷风险以及位置偏好来定落点。
说白了,这相当于在神经网络内部跑一个简化的图算法。节点是棋盘上的位置,节点之间由相邻关系连起来,信息传播的任务则分摊到每一层网络上。

它也暴露了参数编程的限制。固定深度只能把信息传播有限的距离,复杂的长程棋块关系仍然难以处理。即便如此,Astra用336行Python生成的网络,在没有前向测试时已经能够击败两个较小的PPO对手,允许50次前向测试后,又超过了训练2000万局的同规模PPO网络。
Breakout 到围棋这一步,Astra 做的是把已知规则搬进神经网络内部的计算里。可现实中的模型经过训练,早已长出大量功能,多数时候缺的只是那一小段计算,补上就行。
在Kinetix车辆控制实验中,一个PPO网络只会直接向前冲坡,始终越不过障碍。Astra发现车辆需要先倒车,获得足够的加速距离,于是在原网络里增加了一条小型计算路径。
车辆的位置和速度由这条路径读取,满足特定条件时它接管倒车,之后便收手,让原来的策略接着开。权重只改了 3.5%,1024 次测试里车辆次次成功;改之前那 256 次测试,一次都没成。
放到程序里看,这次改动像是多插了一个条件分支。原网络本来就会开车,缺的只是冲坡之前那一步准备,Astra 用少量神经元把这段动作补上。
语言模型这边没有车辆位置那样明确的坐标可抓。Qwen 的毛病是推理反复绕圈,计算上的原因埋在隐藏状态里。Astra 要动这场权重手术,先得弄清是哪一部分参数在把模型往循环里推。
03
Qwen 的 0.016% 权重手术
Astra 在检查 Qwen3.5-0.8B 的输出时注意到,它老是把差不多的推理步骤反复生成。最初那 96 条练习回答里,85 条把 32768 Token 的预算用光了。
这样一来,数学成绩偏低就有了另一种解释:模型也许本来就能解出部分题目,只是推理停不下来,答案没法正常写完。
顺着这条线索,Astra 读取模型权重,从 GSM8K 和 MATH 的训练题里抽样本做有限次数的前向测试。做法是对比正常生成与重复生成时的内部状态,找出可能一直在强化循环的参数方向。
实际下刀的位置落在第 15 层和第 19 层 MLP,两层各 64 个输出列,每列减掉一个与循环相关的方向,合计牵动 131072 个参数。
只改这么点权重,为什么能影响几万 Token 的生成?这得从 Transformer 的残差流说起。它像一条贯穿各层的信息通道:Attention 从上下文读信息,MLP 把处理后的特征写回通道,后面的层接着用。
MLP 输出矩阵的每一列,对应某个中间神经元能写进残差流的向量。神经元一旦被激活,就按这个向量的方向和激活强度去改当前的隐藏状态。
如果一批神经元长期朝同一个方向写信息,这个方向代表的特征就会持续干扰后面的计算。自回归模型更是如此,刚生成的内容又会进到下一轮上下文里。
假设某个内部特征一直在把模型推回先前的推理内容,这条生成路径就会自己强化自己,模型也就始终收不了尾。
Astra 做的事,是让相关神经元往这个方向写入的强度变弱。整层 MLP 没有删,相关神经元也没有全关,动的只是选定输出列里的一部分参数贡献。
从矩阵上看,这是一次方向明确的局部编辑。改动的参数不多,可残差流会把变化一路带给后面的 Attention 和 MLP,生成过程因此有机会被整体影响。
实验结果也显示,这种带方向的编辑和循环减少之间关系明显。前向测试预算只给 10 次和 25 次时,MATH-500 分别从 7.9% 升到 12.3% 和 14.1%,不过仍有大量回答撞上长度上限。
预算加到 50 次,MATH-500 一下跳到 48.1%,触及上限的比例也从 93.0% 降到 33.1%。
同一时间,GSM8K 从 13.8% 提高到 67.1%,IFEval 从 21.0% 提高到 62.3%。IFEval 考的是指令遵循,说明循环故障波及的不只是数学任务。
分数涨了这么多,数学能力本身是不是也跟着变了?研究者把修改前后的回答逐条比对:579 条回答由错变对,反向退化的只有 5 条。这 576 条里,原本都是顶到 Token 上限被截断的。
改完之后,696 条正确回答全都正常结束了思考,推理长度的中位数仍有 9172 Token。模型不是靠提前收手换来高分,长推理照样能走完。
这些证据把解释指向更具体的一层:Astra 修掉的是妨碍 Qwen 正常把推理做完的内部故障,原本就能做的题,现在答得出来了。
研究者还拿 Gemma 3 270M 做了测试。这个模型很少出现类似循环,数学错误主要出在算术和代数步骤上。对它做局部权重编辑后,MATH-500 只从 6.8% 变为约 7.0%—7.7%,没有 Qwen 那种大幅跃升。
这组对照说明,局部参数手术更适用于能定位到特定计算结构的故障。模型没学会的知识或算法,靠改几个神经元补不上来。
研究者另外做了修改强度、单层干预和随机方向几组对照,编辑的针对性因此多了几分支持。但要说某个隐藏方向完整控制着推理循环,目前还下不了这个结论。
大型 Transformer 的计算靠跨层协作,同一个方向也可能牵扯多种行为。更广泛的因果验证和能力测试,仍然要做。
Weight-Space Programming 给模型开发开了条新路:网络出异常时,先试着定位相关的计算回路,再直接改承担对应功能的参数。
眼下它还没法取代训练。大量学习过程仍是复杂知识和推理能力的来源,权重空间里的不少行为也难以直接讲清楚。不过Qwen这轮实验说明了一件事:有些看起来非重新训练不可的问题,或许就压在少量参数构成的同一条计算路径上。
未来若能稳定地把这些路径认出来,并对每次改动的效果逐一验证,模型就有望像软件那样打局部补丁。能力靠训练获得,参数编程则给了这些能力一条更直接的修复和调整通道。
04
比「打补丁」更关键的信号
只把这项研究当成"模型维护的新接口",就看轻它了。
MIT团队自己在讨论里把Weight-Space Programming和递归自我改进挂上了钩。道理不绕:LLM若能读取另一个网络的权重、找到功能回路、把改好的参数直接写出来,"AI改进AI"就多出一条不走梯度下降的路。差别在哪?梯度训练慢,还要数据和算力;权重编辑是直接的,在推理上下文里就能完成。
技术社区对这项研究反应分裂,原因也在这里。有人叫它"神经网络的基因编辑"——精准、可定位、改动极小;也有人公开表示不安:一个读得懂、也改得动权重空间的模型,离"自己给自己动手术"还差几步?
可把问题摆出来,不等于答案就在手边。讨论的焦点恰好落在研究的局限上:探测策略还得人类研究者来设计,前向预算要人提供,样本要人筛选。这些环节远没标准化,跟成熟的微调流水线比,可比性有限。
也就是说,现有能力离"自主RSI"还远,方向却被指了出来。真正该盯的不是"0.016%换6倍"这个被反复引用的数字,而是另一件事:当"解释模型"的输出从一段人读得懂的分析,变成一条机器能执行的编辑指令,可解释性研究的产物性质就变了。它不再只给人看,它能直接作用到模型身上。
能力由训练赋予,权重空间编程头一回让这些能力有了被"直接修复和调整"的可能。这份可能的工程价值是清楚的;而一个能读写权重的模型,在模型生态里到底扮演什么角色,才是这条新闻真正值得细谈的地方。
参考链接:https://rikiyat.github.io/blog/weight-space-programming/