Skip to main content
Submitted by admin on
当「读懂权重」和「改写权重」被同一个模型打通,「AI 改进 AI」就多了一条不经过梯度下降的短路通道,模型维护与模型能力放大之间的边界开始模糊。

    作者丨郑佳美

    编辑丨岑   峰

                                                                                                       

一个模型做数学题,写了 3 万多个 Token,仍然在重复相似的推理过程,最后连答案也交不出来。碰到这种情况,通常会调整训练数据、优化推理策略,或者重新微调模型。

但 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。为了避免通过网络大小猜答案,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 的训练题中选择样本进行有限次数的前向测试。它通过比较正常生成和重复生成时的内部状态,寻找可能持续强化循环的参数方向。

最后,Astra 将修改位置放在第 15 层和第 19 层 MLP,从两层各 64 个输出列中减去一个与循环相关的方向,总共涉及 131072 个参数。

为什么修改这么少的权重,就能影响几万 Token 的生成过程?这里需要理解 Transformer 的残差流。可以把它看成贯穿不同网络层的一条信息通道,Attention 从上下文读取信息,MLP 则把处理后的特征写回这条通道,供后面的层继续使用。

MLP 输出矩阵中的每一列,对应一个中间神经元能够写入残差流的向量。某个神经元被激活后,它就会按照对应向量的方向和激活强度,改变当前隐藏状态。

如果多个神经元持续沿同一个方向写入信息,这个方向代表的特征便可能不断影响后续计算。对于自回归语言模型,这种影响还会延续到后面的 Token,因为模型刚生成的内容又会进入下一轮上下文。

假设某种内部特征不断推动模型重复之前的推理内容,那么这条生成路径就可能反复强化自身,让模型始终无法结束。

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。这个模型很少出现类似循环,数学错误主要来自算术和代数步骤。Astra 对它进行局部权重编辑后,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/

上车,带你看遍全球 AI 顶会精华

可独家畅览:

专家演讲PPT

大会报告全文

热门论文解读

学术新星访谈

扫描上方二维码

或点击「阅读原文」关注专区。

Aggregate 核验溯源
Domain Tag
robot
Source Name
雷锋网