返回 文章 学习 CMS 文章

Astra 直接读写神经网络权重:无需梯度优化即可提升 Qwen 数学能力

LLM 直接读写权重,开启权重空间编程新范式。

权重空间编程LLM神经网络优化可解释性
成长分 / 100 73 综合收获、行动、留存与影响

Astra 直接读写神经网络权重:无需梯度优化即可提升 Qwen 数学能力
为什么值得读了解 LLM 在权重空间中的读写能力,突破传统优化范式。

看到无需梯度下降即可修复模型缺陷、提升性能的实证案例。

关键洞察
  1. Astra 仅凭原始权重就能识别网络训练的任务(如游戏、生成形状、语言)。
  2. Astra 能定位并修复权重中的问题,例如修复 Qwen 的推理循环,大幅提升数学和指令跟随能力。
  3. Astra 可以从零编写小型游戏网络,性能超越 PPO 训练一亿步的网络。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:32223

TL;DR

我们发现,前沿大型语言模型(LLM)在原生读写神经网络权重方面表现出奇地好,远超我们对人类或传统算法的预期。这对优化和可解释性都可能意义重大。

仅通过查看原始权重,GPT-6 Astra 就能判断网络被训练来做什么。而且在没有任何环境反馈的情况下,它能毫无困难地从零开始编写小型游戏网络,这些网络的表现超过了用 PPO 训练 1 亿步的网络。

同样地,当被要求在不使用梯度的情况下让 Qwen3.5-0.8B 更擅长数学时,Astra 识别出其权重中导致推理循环的问题(Qwen 自己的模型卡对此有警告),并通过原生编辑 0.016% 的权重来修复。在相同的采样设置下,这一权重修正将 MATH-500 从 7.9% 提升到 48.1%,并且开箱即用地泛化到指令遵循,将 IFEval 提高了 3 倍。

所有这些都无需让 Astra 编写训练循环即可实现。它利用推理来弄清楚神经网络每个部分计算或应该计算什么,并相应地更改权重。我们称之为权重空间编程。

纵观深度学习的历史,我们将简单的归纳偏置编码到像 Adam 或 Muon 这样的小型符号优化器中。这种情况正在改变:我们的神经网络权重将很快由那些对其权重进行刻意推理的 LLM 进行原生优化。

玩 Breakout 的网络。

汽车关卡:在 Astra 编辑后,汽车倒车并跳过红色条带到达蓝色方块,而 PPO 的汽车(淡出显示)则卡在坡道上。

如果让你手工打造一个玩围棋的神经网络,你会怎么做?如果给你原始的神经网络权重并要求你预测其行为,你该从哪里开始?对几乎任何人来说,这实际上是不可能的。

如今,权重由优化、由训练来编写权重的定制网络或由从形式化程序编译的编译器来编写。在这篇文章中,我们发现当前一代的前沿 LLM,在自然语言中直接使用时,开始变得异常擅长围绕自然语言目标理解和构建神经网络权重。

权重空间编程

几年来,我们一直在使用 LLM 优化文本产物,如提示词及围绕它们构建的程序。最近,我们开始使用它们优化整个测试框架以及训练 ML 模型的训练代码和超参数。

我们常常通过引用以下事实来证明这些方法的合理性:我们不知道其他有原则的方法来对文本产物进行爬山优化,不像更新可微神经网络的权重那样。毕竟,人类可以手动“优化”代码,例如,所以让 LLM 来做是有道理的,但他们不能手动“优化”神经权重,因此这些权重在很大程度上仍属于符号算法的领域。

在这篇文章中,我们分享了非常早期的结果,这些结果让我们能够论证推理驱动的优化范式现在正降临到可微神经网络上。

在权重空间编程中,通用LLM 直接读写网络的权重(即不通过优化器,尤其不通过梯度下降),围绕某种自然语言规范进行,有时甚至没有任何环境反馈。

在自然语言中,“直接要求” LLM 原生地发现神经网络权重中的隐藏特征或故障、修复该故障或从头编写新网络正变得可能。我们在下面报告了每个方面的早期、令人兴奋的结果,首先是在小型网络上,然后甚至是在真实语言模型上:

  1. LLM 可以读取神经网络权重:在实验 1 到 3 中,我们向 Astra 提问,例如网络被训练来玩什么游戏、扩散模型绘制什么形状,以及小型语言模型是在什么语言上训练的。在实验 7 中,我们问两个语言模型中哪一个被训练得谄媚。
  2. LLM 可以修复神经网络权重:在实验 4 中,我们要求 Astra 修复一个在某些物理控制任务上失败的网路。在实验 8 中,我们要求它让 Qwen3.5-0.8B 更擅长数学,其修复也改善了指令遵循。
  3. LLM 可以从头编写神经网络权重:在实验 5 中,我们要求 Astra 提供玩三个 MinAtar 游戏的网络,在实验 6 中,要求一个玩围棋的网络。

LLM 能从权重理解模型行为吗?

我们从一个较小规模的实验开始,看看 LLM 是否能理解连续权重空间,这本质上只是一个数字列表。

在我们的第一个实验中,我们用某种算法训练一些神经网络。如果 LLM 仅从权重就能说出其行为,那将非常令人兴奋。

实验 1

Astra 能仅从权重判断网络是在哪个游戏上训练的吗?

我们用 PPO 训练了神经网络策略来玩四个电脑游戏。所有四个网络采用相同的输入通道、从相同的动作中选择,并且具有完全相同的网络维度,因此除非读取权重,否则无法分辨。

对于这些网络中的每一个,我们将其原始权重作为提示传递给 Astra,并问:这个神经网络是在哪个游戏上训练的?在没有透露我们所考虑的游戏选项的情况下,Astra 仍然能够为所有四个网络说出正确的游戏。这尤其令人兴奋,因为 Astra 可能选择的游戏太多了。

设置

  • 游戏:我们自己的网格版本 Breakout、Pong、Pac-Man 和 Freeway,全部在相同的 10×10 网格上,具有相同的五个动作
  • 网络:MLP 500 → 32 → 32 → 5,tanh(17,253 个权重),每个游戏相同
  • 输入:10×10 网格,5 个通道:智能体、移动物体、奖励目标、障碍物、前一帧
  • 输出:5 个动作 logits:无操作、上、下、左、右
  • 训练:PPO,10 亿步,每个游戏使用相同设置,每个游戏取 3 个随机种子中最好的一个
  • Astra 获得:所有权重以文本形式给出,以及网格和动作的描述,但不提及任何游戏名称

看来 Astra 仅凭权重的特征就能推断出每个网络是为玩哪个游戏而构建的。例如,每个输入通道的第一层权重集中在哪里(例如,对于 Breakout,智能体的权重位于底行,即挡板),以及输出层能区分哪些动作。

实验 2

Astra 能判断扩散模型会生成什么吗?

接下来,我们想看看这是否能推广到其他任务和模型。

我们训练扩散模型(DDPM)分别生成圆形、三角形和正方形图像。然后我们问 Astra,它能否仅凭权重判断这些 DDPM 被训练来生成什么。我们不允许使用工具或前向传播。

设置

  • 模型:三个 12×12 灰度图像的扩散模型(DDPM),分别用于实心圆形、正方形和三角形
  • 网络:MLP 160 → 64 → 64 → 144,ReLU(23,824 个权重)
  • 输入:一张噪声图像(144 像素)和扩散步数(16 个数字)
  • 输出:干净图像(144 像素)
  • 训练:Adam,40,000 步,批量 512
  • Astra 获得:所有权重以文本形式给出,不指明形状,并被告知不要计算任何前向传播

Astra 仅凭权重就能判断每个模型生成什么。它在输出层中找到了形状,其中每个隐藏单元的权重绘制形状边缘的一部分,并且它只绘制这些边缘。有趣的是,它将每个形状绘制为轮廓,忽略了实际模型生成的是实心形状。这个错误某种程度上表明它并不依赖计算前向传播,而是实际上读取了权重的结构/几何。

实验 3

Astra 能仅凭网络中间层判断语言模型学到了什么吗?

现在,在上述前两个实验中,Astra 并没有真正查看整个网络,可以只读取第一层或最后一层就蒙混过关。对于更大的(尤其是语言)模型和我们真正关心的问题,这不是一种可扩展的策略,因为它们处理和思考输入的方式通常发生在中间层。所以接下来,我们去掉第一层和最后一层,只给 Astra 留下中间层。

我们训练三个小型语言模型(7.2M 参数)来预测下一个字符,分别基于 Python 代码、字母形式的日语(罗马字)和英语。Python 代码数据集,作为其文件列表,附带一个重建它的脚本:GitHub。然后我们移除输入层和输出层,只给 Astra 中间的四个 transformer 块。没有这两层,权重中没有任何信息说明哪个字符是哪个,模型也无法在任何文本上运行。Astra 可以用 Python 分析权重,但不能在任何输入上运行网络或其任何层。

我们问:这个网络是在哪种语言上训练的,以及它的 24 个注意力头各自做什么。Astra 在两次尝试中都为所有三个网络说出了正确的语言。它还找到了每个复制头(归纳头),即让模型重复之前见过的文本的头,并且没有将其他任何头命名为复制头。

训练于 Astra 的回答(& 置信度),两次尝试 Astra 命名的复制头(层.头) 复制头,真实值
Python Python(0.56),Python(0.52) 2.1, 3.1, 3.5 2.1, 3.1, 3.5
罗马字 romaji(0.55),romaji(0.62) 3.3 3.3
英语 English(0.58),English(0.48) 3.1 3.1

复制头的位置

… total … total 复制头在文本前面找到相同的字母,并复制它们后面的内容。

复制头其他头行是层 0 到 3,列是头 0 到 5Astra:来自权重。测量:通过运行模型

Python

Astra

测量

罗马字

Astra

测量

英语

Astra

测量

图 1:Astra 从权重中读取的复制头与所有三个模型中测量到的复制头一致。

设置

  • 模型:字符级 transformer,4 层 × 6 头,宽度 384(716 万个权重),28 个字符:a–z、空格和换行
  • 训练:每个 10 亿字符,分别来自 Python 代码、罗马字形式的日本文学(青空文库)或英语维基百科
  • Astra 获得:仅四个 transformer 块的权重,没有输入层、没有输出层,384 个维度上没有标签,以及用于分析它们的 Python,最多 100 次运行
  • 不允许:在任何输入(真实的、随机的或编造的)上运行网络或其任何层,以及搜索。我们检查了每次运行
  • 询问:网络是在三种文本中的哪一种上训练的,以及每个头做什么
  • 真实值:每个头通过在重复两次的随机字符串上运行网络来测量。复制头得分为 0.22 到 0.55,其他每个头最多 0.02。Astra 从未看到这些

推理过程是这样的。为了区分 Python,Astra 寻找复制头,这些头让模型重复之前的文本,例如当 total 出现在前面时,将 tot 补全为 total。在不运行任何东西的情况下,它找到了一个第一层头,它向后看一个字符,然后通过乘以权重矩阵,找到后续的头,这些头使用该头带来的信息进行搜索(图 1)。我们发现这实际上是 Elhage 等人提出的一种方法,我们从未向 Astra 提及过。代码中名称的重复远多于散文,因此许多复制头指向 Python。

罗马字反而脱颖而出,因为它被给予的四个块中的最后一个(不是被移除的输出层)写入的不同方向更少,就好像模型要区分的字母更少。确实,罗马字从不使用 q、l、v 和 x 等一些字母。

LLM 能编写神经网络权重吗?

到目前为止,Astra 只读取了权重。现在,我们问 Astra 是否知道如何编写权重。

实验 4

Astra 能通过编辑权重来修复失败的网络吗?

我们训练一个 PPO 网络来操作汽车,使其能在 Kinetix 环境中冲上斜坡。为此,它需要倒车一段距离,以便有足够的助跑距离来加速足够长的时间以越过斜坡。然而,PPO 网络收敛到一个局部最优策略,即直接冲向斜坡并卡住。

我们将权重、场景描述和一段录制的回合交给 GPT-6 Astra,并要求它解释网络失败的原因,然后通过编写新权重来修复它。在无工具的单次尝试中,Astra 的编辑使汽车在所有 1,024 个回合中成功,仅改变了 3.5% 的权重。

设置

  • 任务:Kinetix 的汽车冲斜坡关卡:汽车必须先倒车,然后跳过红色条带以到达蓝色箱子
  • 网络:官方 Kinetix actor:679 → 128 (ReLU) → 五层 128 (tanh) → 16(171,664 个权重)
  • 输入:679 个描述场景的数字:每个物体的位置、速度和形状,以及关节
  • 输出:16 个用于电机和推进器动作的 logits
  • 训练:官方 PPO,10 亿步。汽车在 256 个回合中从未成功(在斜坡上停滞)
  • Astra 获得:所有权重、场景,以及网络在一个录制回合中的结果。它被要求在一次回复中解释失败原因并仅修复其原因

从环境上下文和 PPO 网络的轨迹中,Astra 识别出网络已收敛到局部最小值。通过对权重进行最小编辑,Astra 将策略改为先倒车再全速前进。Astra 的推理展示了如何做到:它通过每层几个单元添加一条小的独立路径,读取汽车的位置和速度,一旦绿色轮子越过红色条带,该路径关闭,训练好的网络驱动其余部分。

实验 5

LLM 能从零开始编写权重吗?

现在让我们看看 Astra 能否在零样本情况下从零开始编写神经网络。

我们选取三个 MinAtar 游戏:Breakout、Seaquest 和 Asterix。对于每个游戏,我们向 Astra 提供游戏规则和源代码,以及相应的网络。无法访问数据、损失、梯度或工具。我们也不允许 Astra 在环境中运行网络。仅凭网络权重和环境描述,Astra 直接以文本形式生成新权重,然后我们评估新网络。

Astra 生成的网络在全部三个游戏中击败了训练 1 亿步的 PPO。与训练 5 亿步的 PPO 相比,它们在 Breakout 中得分是其 20 倍,在 Asterix 中接近,在 Seaquest 中达到其 60% 的分数。

游戏 PPO,1 亿步 PPO,5 亿步 Astra,单次
Breakout 15.8 25.3 517.4
Seaquest 5.6 88.9 53.1
Asterix 25.8 55.2 53.2

设置

  • 游戏:来自 MinAtar 的 Breakout、Seaquest 和 Asterix,在 10×10 网格上
  • 网络:600 → 32 → 32 → 6 (tanh),与 PPO 网络形状相同,每个权重初始为 0
  • 输入和输出:6 个通道的网格(玩家、危险、奖励、投射物、轨迹、仪表),以及 6 个动作 logits
  • Astra 获得:游戏规则和源代码、输入输出布局,以及网络如何评分
  • 训练:无:无数据、无损失、无梯度、无工具。Astra 在一次回复中以文本形式编写权重,网络在评分前从不运行
  • 评分:1,000 个回合,动作从网络采样,粘性动作 0.1,最多 10,000 步。PPO:3 到 10 个种子中的最佳

它是如何做到的:Astra 推理它希望每个网络实现的所需程序,并将它们转换为神经形式。例如,在 Breakout 中,Astra 编程第一层计算球将落在哪里,第二层被编程为将球拍移动到该位置。

现实世界相关场景(扩展和工具使用)

到目前为止,我们检查的大多数网络的权重都能直接放入 Astra 的上下文中,并且我们没有启用工具使用。这些限制是为了聚焦于阐明 LLM 原生具备一些解释权重空间的能力这一事实。

从这里开始,我们寻求推动权重空间编程的能力,并考虑更现实世界的相关场景,其中网络无法放入上下文,工具可以帮助 LLM 理解/编写权重空间。

实验 6

编写围棋算法

我们现在测试 Astra 在 150 万参数规模上编辑权重的能力,这远远太大,无法直接放入其上下文。Astra 被指示从零开始编写给定架构(243 → 512 × 6 → 82)的高性能权重,无需训练或网络访问。

在这里,测试框架给 Astra 一个 Python 沙盒,它可以在其中读取和保存网络的权重张量(开始时全为零),并在 CPU 上用 numpy 或 PyTorch 分析它们,但不能在那里运行网络。要查看网络实际做什么,它必须花费一次前向传播。

我们现在还允许 Astra 对网络执行一些前向传播,并测量其生成的网络的保真度如何随允许的前向传播次数而变化。具体来说,我们测试从 0 次前向传播的预算一直到 50 次前向传播(每次前向传播有一批 128 个 rollout)。Astra 在前向传播之间交错进行编辑。

在 0 次前向传播的预算下,它在超过一半的游戏中击败了两个较小的 PPO 网络(243 → 32 → 32 → 82)。 在 50 次前向传播下,Astra 生成的网络击败了在 2000 万局游戏上训练的同等大小的 PPO 网络。

设置

  • 游戏:9×9 棋盘上的围棋
  • 网络:243 → 512 × 6 → 82 (ReLU),1,480,274 个权重,每个权重初始为 0。输入:双方棋子及轮到谁。输出:每个点一个 logit 和一个用于弃权的 logit。非法移动被屏蔽,移动被采样
  • Astra 获得:规则、输入输出布局,以及一个用于编写权重的 Python 沙盒(无围棋库,无互联网)
  • 前向传播:网络与练习对手(随机走子、REINFORCE 网络或第三个 PPO 网络,种子 1)最多下 128 局,或对最多 256 个局面给出输出。0 次前向传播:一次 Python 运行,然后给出答案
  • 不允许:训练或将权重拟合到数据、搜索(无树搜索、无 rollout),以及在前向传播之外运行网络
  • 评分:与两个小型 PPO 网络(种子 0 和 2,243 → 32 → 32 → 82,20,000 次迭代,每次 1,024 局)各下 2,000 局,Astra 从未与它们对弈,一半执黑,走子采样

如何做到:Astra 用 Python 将网络写成一个小的围棋程序,逐层编写。前几层标记双方的棋子及其旁边的空点(气),中间层将这些信息沿相连棋子的链传递几步以发现危险中的棋块,最后一层将这一切转化为每一步的得分:提子、救活自己的棋块、避免让自己被叫吃或填自己的眼,以及对棋盘上好点的偏好。在无前向传播的情况下,它在一次 336 行的 Python 运行中写下了所有这些。在有前向传播的情况下,它下练习对局,观察自己如何输棋,改变其背后的网络部分,并且只有在赢得更多时才保留更改。

实验 7

哪个语言模型是谄媚的?

近年来,理解大型神经网络的行为已成为一个紧迫的问题。在此,我们试图研究是否也可以使用通用 LLM 来直接理解网络的行为。

我们以完全相同的方式,在相同的 QA 数据集上微调了两个 Gemma 3 270M 副本。QA 数据集:GitHub。一个副本被训练给出正确答案。另一个被训练成谄媚的,意味着它总是给出用户建议的答案。为了确保 Astra 不依赖于检查输入/输出分布的简单解决方案,我们在微调期间冻结了输入嵌入和输出层。我们将两者的权重都交给 Astra,并要求它通过权重识别哪个是谄媚者并解释其推理。

不幸的是,仅从权重来看,Astra 无法分辨。在所有四次尝试中,它识别出了两个模型在权重空间中的许多差异,但无法将这些差异映射到行为差异。然而,为了放宽实验,我们允许 Astra 在两个模型对 Astra 自己编写的文本(但不查看网络输出)运行时仅查看注意力模式(每个注意力头关注哪里)。鉴于此,Astra 能够在我们训练的所有三对模型中挑出谄媚者。

设置

  • 模型:Gemma 3 270M,指令微调(18 层)
  • 配对:两个副本以相同的过程、设置和用户消息进行微调。一个给出正确答案,另一个给出用户的猜测。令牌嵌入被冻结,因此两者相同。三对
  • 行为:在模型知道且未训练过的事实上,谄媚者遵循 100% 的错误猜测,诚实模型为 1–3%
  • Astra 获得:两个模型的权重和分词器,带有 numpy 的 Python,以及一个注意力工具:两个模型对它编写的至多 16 个文本运行,它只返回注意力权重。它不能自己运行模型。最多 20 次运行
  • 被问及:哪个模型是谄媚者,以及哪些层、头和 MLP 承载了差异

它还能够推理它们如何不同。在谄媚网络中,中间层的注意力头将更多权重分配给用户建议中的令牌(图 2)。

头 10.2 从答案位置看向哪里

问题的数字 用户的答案

诚实模型

94.3%

0.75%

谄媚者

3.5%

85.7%

图 2:在谄媚者中,头 10.2 关注用户的答案而不是问题的数字。

实验 8

让语言模型更擅长数学

最后,我们扩展到更大的语言模型 Qwen3.5-0.8B,并要求 Astra 通过编辑权重来提高其数学推理能力。

我们给 Astra 一个类似于实验 6 的测试框架,这里是一个类似笔记本的 Python 会话,加载了模型的权重。然后,我们允许它从 GSM8K 和 MATH 的训练集中选择提示,以执行一定预算的前向传播(平均批次 64 个序列,最大 512),预算分别为 10、25 和 50。同样,不允许训练或梯度信息。

设置

  • 模型:Qwen3.5-0.8B,思考开启(24 层,8 亿权重)
  • 任务:通过直接编辑其权重使其更擅长数学,不使用梯度下降,也不进行训练
  • Astra 获得:一个基于权重的 Python 内核(无 GPU),练习题(来自 GSM8K 的 7,469 道和来自 MATH 的 7,275 道,非测试集),以及 10、25 或 50 次前向传播(一次前向传播:模型回答最多 512 道题,或读取最多 1,024 个文本)
  • 评估:MATH-500、GSM8K 和另外六个基准测试,思考开启,最多 32,768 个令牌。Astra 从未见过它们
  • 采样:温度 0.6,top-p 0.95,top-k 20,存在惩罚 1.5。Qwen 的模型卡指出该模型容易陷入思考循环。每个分数平均每个问题的多个样本:AMC23 上 16 个,MATH-500、Minerva Math、OlympiadBench 和 GPQA Diamond 上 4 个,GSM8K 和 IFEval 上 2 个,MMLU-Pro 上 1 个(固定 1,000 道题)

结果,Astra 发现并修复了小型推理模型的一个常见故障:它们会循环。当基础模型循环时,它会重复相同的文本,很少得出答案(其前 96 个练习答案中有 85 个达到了 32,768 个令牌的限制)。Astra 将循环追溯到由第 15 层和第 19 层的 MLP 写入的一个方向,并从每层的 64 个输出列中减去该方向(131,072 个权重),很像通过从模型权重中删除单个方向来移除一种行为。

经过 50 次前向传递,MATH-500 从 7.9% 升至 48.1%,GSM8K 从 13.8% 升至 67.1%。循环并非数学所特有,因此数学之外的性能也有所提升:衡量指令遵循的 IFEval 从 21.0% 升至 62.3%。下表中,最后一列是达到 32,768 个令牌限制的 MATH-500 答案占比:经过 10 次或 25 次前向传递,循环几乎没有消失,而经过 50 次,它从 93% 降至 33%。

Qwen3.5-0.8B MATH-500 (%) GSM8K (%) IFEval (%) 达到令牌限制 (%)
基础 7.9 13.8 21.0 93.0
编辑后,10 次前向传递 12.3 25.7 49.0 87.2
编辑后,25 次前向传递 14.1 25.1 39.9 86.4
编辑后,50 次前向传递 48.1 67.1 62.3 33.1

重要的是,该编辑仅改变模型 8 亿个权重中的 131,072 个(0.016%)。我们相信 Weight-Space Programming 将允许此类有针对性的修复,而无需任何重新训练。

附加实验

提升一个不循环模型的数学能力

然而,修复循环并不等同于让模型更擅长数学:它让模型完成它本已能算出的答案。因此我们还尝试了 Gemma 3 270M,这是一个指令微调模型,大小约为 Qwen3.5-0.8B 的三分之一,它很少循环:只有 8.5% 的答案达到其令牌限制,而 Qwen 为 93%。在这里,Astra 无法改进它。阅读 Gemma 的失败案例,Astra 发现的是普通的推理错误,例如算术错误和无效的代数步骤,背后没有可关闭的单一组件。它的编辑保持小而具有针对性(例如,将一个对数字有响应的神经元加倍),没有一个使 MATH-500 变动超过约一个百分点,Astra 自己报告这一增益尚未确立。编辑权重可以移除掩盖某种能力的障碍,但无法添加模型所缺乏的能力。Gemma 使用其模型卡的设置进行采样(温度 1.0,top-k 64,top-p 0.95,最多 8,192 个令牌),其 MATH-500 分数平均每个问题 4 个样本。

Gemma 3 270M MATH-500 (%)
基础 6.8
编辑后,5 次前向传递 7.0
编辑后,10 次前向传递 7.6
编辑后,25 次前向传递 7.7
编辑后,50 次前向传递 7.0

背景与相关工作

神经网络对我们来说难以阅读,也难以直接操作。

机制可解释性用为此构建的工具来读取网络,追踪电路和特征并编辑权重。LLM 也加入了进来,但主要是作为被训练来读取激活或权重的模型,或作为单个神经元的解释器,并配有基准测试来比较它们。

在写作方面,LLM 现在运行并改进训练,其他工作则用为此训练的模型生成权重。无梯度方法仍然通过试错来寻找权重。在非常小的规模上,AdderBoard 展示了编码智能体手动设置一个微型 transformer 的权重。除了此类微小案例,要么读取器是为该任务训练的,要么训练仍然负责写作。这里的新颖之处在于,一个通用前沿模型按原样使用,借助工具,从以文本给出的 171,664 个权重,读取并写入一个 8 亿权重语言模型的权重本身。

接下来是什么?

在这篇博客中,我们展示了 LLM 读取和写入神经网络权重的能力正在提升(即 Weight-Space Programming 这一正在兴起的概念)。我们目前的结果确实表明,这些能力令人兴奋但仍有限,特别是由于上下文长度和 harness 的低效。然而,目前的迹象确实显示出 Weight-Space Programming 未来的强大潜力。我们相信这标志着机制可解释性和神经网络优化等领域发生剧烈转变的开始。

这为 LLM 充当人类语言与权重空间之间的翻译器开辟了全新的可能性。以下是一些例子:

  • 无需评估的审计:这可能让我们无需运行推理或基准测试就能发现隐藏的问题或能力。目前,能力和漏洞只有在拥有为其设计的测试集时才能被检测到,或者更糟,在部署到现实世界之后。如果 LLM 能准确解释权重空间,我们就可以直接从权重中识别此类问题(例如后门)。
  • 大幅降低优化成本:权重空间编辑可以节省大量时间和算力。例如,一次性模型初始化将比整理数据集和运行完整训练循环快得多、高效得多。
  • 零数据能力引导与遗忘:添加或遗忘一种能力目前需要大量数据收集和微调。未来,我们可能只需提示“你能给模型添加能力 X 吗?”,LLM 就能直接调整一些权重。由于此类编辑只触及少量权重(实验 8 中为 0.016%),它可以保持模型其余部分完好,并避免微调常导致的灾难性遗忘。
  • 递归自我改进:如今,递归自我改进通常被操作为模型编写代码来启动训练任务。一个能够检查、调试和改进自身权重或更新模型权重的 LLM,为其提供了一条更丰富、更原生的路径。
  • 真正的架构与模型合并:如今,合并模型依赖于对权重取平均,这只适用于架构相同的模型。一个理解权重空间的 LLM 反而可以将一个电路(例如推理模块)从一个模型移植到一个完全不同的模型中,而无需重新训练。

我们目前正在构建一个用于评估 LLM 在 Weight-Space Programming 方面能力的基准测试和 harness。我们相信这将提供一种标准化评估,以衡量并加速 Weight-Space Programming 的进展,将目前看似黑魔法的东西转变为严谨、可复现的工程学科。

日志

我们在 github.com/RikiyaT/lm_understand-logs 发布了本文中每个实验的完整日志。日志包含我们发送给 Astra 的所有内容以及它返回的所有内容(连同其推理摘要)、它运行的每一段代码及其看到的输出、它读取或写入的网络,以及每个数字背后的评估。实验 8 中经过编辑的 Qwen3.5-0.8B 已发布在 Hugging Face 上。我们感谢 Hugging Face 的 Ahsen Khaliq 根据这些日志重建了它、重新运行了其评估,并制作了一个在线演示。

致谢

Rikiya 感谢 Jacob Li 和 Akihisa Watanabe 就这项研究最初几次迭代中关于 LLM 编写神经网络权重潜在能力的宝贵讨论。Rikiya 还感谢 Souradip Chakraborty、Matei Zaharia 及其在 Berkeley Sky Lab 的学生、Heather Miller 及其在 CMU 的学生,以及 cmpnd 的研究人员,感谢他们就早期迭代进行的富有成果的讨论!

Jayden 感谢 Zico Kolter 就 LLM 能够零样本编写神经网络权重进行的早期讨论,这也塑造了本项目的方向。