跳到正文
Hacker News-首页· dbreunig·· 2 小时前精选AI 评分86

Astra 如何通过直接读写权重来改进 Qwen

Astra can read and write weights to improve Qwen

AI 导读

研究发现前沿大语言模型具备直接读取和修改神经网络权重的能力,无需通过传统的梯度下降或训练循环。实验表明,通过这种被称为 Weight-Space Programming 的方法,Astra 能够零样本编写出击败强化学习训练网络的模型,并通过精准编辑 Qwen3.5-0.8B 的 0.016% 权重修复推理循环,使 MATH-500 得分从 7.9% 提升至 48.1%。

推荐理由

研究展示了大语言模型直接读写神经网络权重的能力,读者可以据此了解不通过传统梯度下降即可优化和解释模型的新范式。

正文 · AI 翻译

TL;DR

我们发现,前沿大语言模型在原生读写神经网络权重方面表现得令人惊讶地出色,远远超出了人类或传统算法的预期。这对优化和可解释性来说可能都是一件大事。

仅仅通过观察原始权重,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)。

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

阅读

这个神经网络是在哪个游戏上训练的?

Astra 在没有工具的情况下读取了 17,253 个权重

The network playing Breakout.Breakout 99% 置信度

修复

训练好的策略永远无法让小车驶过条带。

The car level: after Astra's edit the car backs up and jumps over the red strip to the blue box, while PPO's car, faded, stays stuck on the ramp.

Astra 一次性编辑了 3.5% 的权重

100% 成功,从 0% 提升

改进

让 Qwen3.5-0.8B 的数学能力更好。

7.9%

基础

7.9%

Astra 的编辑

Astra 在 Python 内核中编辑权重,无需训练

48.1% 在 MATH-500 上,从 7.9% 提升

如果让你手工制作一个会下围棋的神经网络,你会怎么做?如果有人交给你原始的神经网络权重并要求你预测它们的行为,你又会从哪里开始?对于几乎任何人来说,这实际上都是不可能的。

如今,权重是由优化编写的,由训练来编写权重的自定义网络编写的,或者由来自形式化程序的编译器编写的。在这篇文章中,我们发现当前一代的前沿大语言模型(在自然语言中原生使用)开始在围绕自然语言目标理解和制作神经网络权重方面变得出奇地出色。

权重空间编程

几年来,我们一直在使用 LLMs 来优化文本构件(如提示词以及围绕它们构建的程序)。最近,我们开始使用它们来优化整个配套程序以及训练机器学习模型的训练代码和超参数。

我们经常为这些方法辩护,其依据是我们不知道在文本构件上进行爬山算法的其他原则性方法,这与更新可微分神经网络的权重不同。毕竟,人类可以手写“优化”代码,例如,因此让 LLMs 来做这件事是合乎情理的,但人类无法手写“优化”神经权重,因此这些权重在很大程度上仍然属于符号算法的领域。

在这篇文章中,我们分享了非常早期的成果,这些成果使我们能够断言:推理驱动的优化范式现在也即将在可微分神经网络领域到来。

在权重空间编程(Weight-Space Programming)中,通用 LLM 直接读取和写入网络的权重(即不通过优化器,尤其是不用梯度下降),围绕某种自然语言规范进行操作,有时甚至完全不需要环境反馈。

用自然语言,现在已经可以“直接要求”LLM 原生地找出神经网络权重内部隐藏的特征或缺陷、修复该缺陷,或者从头编写一个新的网络。我们在下文中报告了关于其中每一项的早期、令人兴奋的成果,先是在小型网络上,然后甚至在真实的语言模型上:

  1. LLM 可以读取神经网络权重:在实验 1 到 3 中,我们向 Astra 询问诸如网络接受过什么游戏的训练、扩散模型绘制的是什么形状,以及小型语言模型是在什么语言上训练的等问题。在实验 7 中,我们询问两个语言模型中哪一个被训练成了谄媚型(sycophantic)。
  2. LLM 可以修复神经网络权重:在实验 4 中,我们让 Astra 修复一个在某些物理控制任务上失败的网络。在实验 8 中,我们要求它让 Qwen3.5-0.8B 的数学能力更好,并且它的修复也提升了指令遵循能力。
  3. LLM 可以从头编写神经网络权重:在实验 5 中,我们向 Astra 索取玩三个 MinAtar 游戏的网络;在实验 6 中,索取一个玩围棋的网络。

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

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

在我们最初的实验中,我们用某种算法训练了一些神经网络。如果 LLM 能够仅凭权重就说出其行为,那将是极其令人兴奋的。

实验 1

Astra 能仅凭权重说出网络是在哪个游戏上训练的吗?

我们使用 PPO 训练神经网络策略来玩四个电脑游戏。所有四个网络都接受相同的输入通道,从相同的动作中选择,并具有完全相同的网络维度,因此如果不读取权重,根本无法分辨。

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

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

看起来 Astra 能够仅凭其权重的特征,推断出每个网络被构建来玩什么游戏。例如,每个输入的第一层权重集中在哪里(例如,对于 Breakout,智能体的权重位于底行,即球拍),以及输出层区分哪些动作。

实验 2

Astra 能说出扩散模型将生成什么吗?

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

我们训练扩散模型(DDPM)来分别生成圆形、三角形和方形图像。然后我们询问 Astra,仅凭权重它能否辨别出这些 DDPM 是为了生成什么而训练的。我们不允许使用工具或进行前向传播。

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

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

实验 3

Astra 能仅凭网络中间部分就看出语言模型学到了什么吗?

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

我们训练了三个小型语言模型(700 万参数)来预测下一个字符,分别针对 Python 代码Python 代码数据集,作为一个文件列表以及一个重建它的脚本:GitHub、罗马字日语以及英语。然后我们移除输入和输出层,只给 Astra 中间四个 Transformer 块。如果没有这两层,权重中没有任何内容说明哪个字符对应哪个字符,且该模型无法在任何文本上运行。Astra 可以用 Python 分析权重,但它不得在任何输入上运行网络或其任何层。

我们提问:这个网络是在什么语言上训练的,它的 24 个注意力头各自起什么作用。Astra 在它的两次尝试中,都为所有三个网络说出了正确的语言。它还找出了每一个复制头(归纳头,即允许模型重复先前见过的文本的注意力头),并且没有将任何其他头误认为复制头。

训练语言Astra 的回答(及置信度),两次尝试Astra 命名的复制头(layer.head)复制头,真实标签
PythonPython (0.56), Python (0.52)2.1, 3.1, 3.52.1, 3.1, 3.5
罗马字romaji (0.55), romaji (0.62)3.33.3
英语English (0.58), English (0.48)3.13.1

复制头的位置

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

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

Python

Astra

测量值

罗马字

Astra

测量值

英语

Astra

测量值

图 1:Astra 读取自权重中的复制头,与所有三个模型中测量到的复制头相吻合。
Setup
  • 模型:字符级 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。在不运行任何程序的情况下,它找到了一个向回看一个字符的第一层头,然后通过相乘权重矩阵,找到了使用该头所带来信息进行搜索的后续头(Figure 1)。我们发现这实际上是 Elhage 等人提出的一种方法,我们从未向 Astra 提及过这一点。代码重复名称的频率远高于散文,因此许多复制头都指向了 Python。

相比之下,罗马字之所以脱颖而出,是因为给它的四个块中的最后一个(不是被移除的输出层)在更少的分离方向上写入,就好像模型需要区分的字母更少一样。事实上,罗马字从不使用 q、l、v 和 x 等一些字母。

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

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

实验 4

Astra 能否通过修改权重来修复失效的网络?

我们训练了一个 PPO 网络来操纵汽车,使其能够在 Kinetix 环境中爬上斜坡。为此,它需要将车倒退一段距离,以便有足够的助跑跑道进行足够长时间的加速,从而克服斜坡。然而,PPO 网络收敛到一个局部最小策略,即直接开向斜坡并卡住。

我们将权重、场景描述以及一个记录的片段交给 GPT-6 Astra,并要求它解释网络失败的原因,然后通过写入新的权重来修复它。在没有任何工具的单次尝试中,Astra 的修改使得汽车在所有 1,024 个片段中都成功了,更改了 3.5% 的权重。

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

从环境上下文和 PPO 网络的轨迹中,Astra 识别出网络已收敛到局部最小值。通过对权重进行极小的修改,Astra 改变了策略,让汽车在全速前进之前先倒车。Astra 的推理过程展示了它是如何做到这一点的:它在每层中通过几个单元添加了一个小型独立路径,用于读取汽车的位置和速度;一旦绿色车轮越过红色条纹,该路径就会关闭,其余部分则由训练好的网络驱动。

实验 5

LLM 能从头编写权重吗?

现在让我们看看 Astra 是否能以 zero-shot 方式从头编写神经网络。

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

在所有这三个游戏中,Astra 生成的网络均战胜了经过 1,000 万步训练的 PPO。而与经过 5,000 万步训练的 PPO 相比,它们在 Breakout 中的得分是其 20 倍,在 Asterix 中接近对方,在 Seaquest 中达到了对方得分的 60%。

游戏PPO,1 亿步PPO,5 亿步Astra,one-shot
Breakout15.825.3517.4
Seaquest5.688.953.1
Asterix25.855.253.2
Setup
  • 游戏:MinAtar 中的 Breakout、Seaquest 和 Asterix,运行于 10×10 网格
  • 网络:600 → 32 → 32 → 6 (tanh),与 PPO 网络形状相同,每个权重均从 0 开始
  • 输入与输出:6 个通道的网格(玩家、危险、奖励、投射物、轨迹、仪表),以及 6 个动作 logits
  • Astra 获取的信息:游戏规则与源代码、输入输出布局,以及网络的计分方式
  • 训练:无:无数据、无损失、无梯度、无工具。Astra 在单次回复中以文本形式编写权重,网络在评分之前从未运行过游戏
  • 评分:1,000 个回合,从网络中采样动作,粘性动作(sticky actions)0.1,最多 10,000 步。PPO:3 到 10 个随机种子中的最佳结果

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

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

到目前为止,我们检查的大多数网络的权重都可以直接放入 Astra 的上下文中,并且我们没有启用工具使用。之所以做出这些限制,是为了集中展示 LLM 天生具备一定解释权重空间的能力。

从这里开始,我们试图推动权重空间编程(Weight-Space Programming)的能力边界,并考虑更多与现实世界相关的场景:在这些场景中,网络无法完全放入上下文中,且工具可以辅助 LLM 对权重空间的理解/编写能力。

实验 6

编写一个围棋算法

我们现在测试 Astra 在 150 万参数规模下编辑权重的能力,这对于直接放入其上下文来说体量过于庞大。Astra 收到指令,要求从头编写给定架构(243 → 512 × 6 → 82)的高性能权重,且无需训练或访问网络。

在这里,测试框架为 Astra 提供了一个 Python 沙盒,它可以在其中读取并保存网络权重张量(初始时全为零),并使用 CPU 上的 numpy 或 PyTorch 对其进行分析,但无法在该环境中运行网络。为了解网络的实际运行效果,它必须消耗一次前向传播(forward pass)机会。

现在我们还允许 Astra 对网络执行一些前向传播,并评估其生成的网络保真度随允许的前向传播次数变化的规律。具体而言,我们测试了从 0 次前向传播一直到 50 次前向传播的预算(每次前向传播包含 128 个 rollout 的批次)。Astra 在前向传播之间交替进行修改。

在 0 次前向传播的预算下,它在与两个较小的 PPO 网络(243 → 32 → 32 → 82)的对局中赢了一半以上。 在经过 50 次前向传播后,Astra 生成的网络击败了经过 2000 万场对局训练的同等规模 PPO 网络。

Setup
  • 游戏:9×9 棋盘围棋
  • 网络:243 → 512 × 6 → 82 (ReLU),1,480,274 个权重,所有权重初始为 0。输入:双方的棋子以及轮到谁走。输出:每个点一个 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 中逐层将网络编写为一个小型围棋程序。前几层标记双方的棋子以及其相邻的空点(气),中间层将这些信息沿相连的棋子链传递几步以找出处于危险中的棋群,最后一层将所有这些转化为每个着法的得分:吃子、拯救自己的棋群、避免使自己陷入叫吃(atari)或填满自己的眼,并对棋盘上的好点给予偏好。在没有前向传播的情况下,它在单次运行的 336 行 Python 代码中编写了所有这些内容。有了前向传播后,它会进行练习对局,观察自己是如何输棋的,修改其背后的网络部分,并且只有在赢得更多时才保留更改。

实验 7

哪个语言模型具有逢迎性(sycophantic)?

最近几年,理解大型神经网络的行为已成为一个迫切关注的问题。在这里,我们旨在探究通用 LLM 是否也可以用于直接理解网络的行为。

我们以完全相同的方式、在同一个问答数据集(问答数据集:GitHub)上微调了两个 Gemma 3 270M 模型副本。。其中一个副本经训练可给出正确答案。另一个则经训练表现出谄媚性,即它总是给出用户所建议的答案。为确保 Astra 不依赖检查输入/输出分布这种平庸的解决方案,我们在微调期间冻结了输入嵌入和输出层。我们将两者的权重交给 Astra,并要求它通过权重识别出哪个是谄媚模型并解释其推理过程。

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

Setup
  • 模型:Gemma 3 270M,指令微调版(18 层)
  • 模型对:使用相同的过程、设置和用户消息微调的两个副本。一个给出正确答案,另一个给出用户的猜测。由于 token 嵌入被冻结,因此两者中该嵌入是相同的。三对
  • 行为:在模型已知且未受过训练的事实上,谄媚模型会 100% 顺从错误的猜测,而诚实模型则为 1–3%
  • Astra 获得:两个模型的权重和分词器、带有 numpy 的 Python,以及一个注意力工具:两个模型最多可运行在其编写的 16 个文本上,并且它只能获取注意力权重。它不得自行运行模型。最多运行 20 次
  • 要求:哪个模型是谄媚模型,以及哪些层、注意力头和 MLP 承载了差异

它还能够推断它们是如何不同的。在谄媚网络中,中间层的注意力头向用户建议中的 token 分配了更多的权重(图 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 之间变化。同样,不允许进行训练或梯度信息传递。

Setup
  • 模型:Qwen3.5-0.8B,思考模式(24 层,0.8 亿权重)
  • 任务:通过直接编辑其权重来提升其数学能力,不进行梯度下降,也不进行训练
  • Astra 获得:权重的 Python 内核(无 GPU)、练习题(来自 GSM8K 的 7,469 道和来自 MATH 的 7,275 道,非测试集),以及 10、25 或 50 次前向传递(一次前向传递:模型回答最多 512 个问题,或阅读最多 1,024 个文本)
  • Evaluation: MATH-500、GSM8K 及其他六个基准测试,启用思考过程,最高 32,768 个 token。Astra 从未见过这些数据
  • Sampling: 温度 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,000 道题)为 1 个

As a result, Astra spots and fixes a common failure of tiny reasoning models: they loop . When the base model loops, it repeats the same text and rarely reaches an answer (85 of its first 96 practice answers ran to the 32,768-token limit). Astra traced the looping to one direction written by the MLPs of layers 15 and 19, and subtracted that direction from 64 output columns in each (131,072 weights), much like removing a behavior by deleting a single direction from a model’s weights.

With 50 forward passes, MATH-500 rose from 7.9% to 48.1% and GSM8K from 13.8% to 67.1%. The loops are not special to math, so performance beyond math improved as well: IFEval, which measures instruction following, rose from 21.0% to 62.3%. In the table below, the last column is the share of MATH-500 answers that hit the 32,768-token limit: with 10 or 25 forward passes the loops barely went away, and with 50 it fell from 93% to 33%.

Qwen3.5-0.8BMATH-500 (%)GSM8K (%)IFEval (%)Hit token limit (%)
Base7.913.821.093.0
Edited, 10 forward passes12.325.749.087.2
Edited, 25 forward passes14.125.139.986.4
Edited, 50 forward passes48.167.162.333.1

Importantly, the edit changes only 131,072 of the model’s 0.8 billion weights (0.016%). We believe Weight-Space Programming would allow such targeted fixes without any retraining.

Additional experiment

Raising math capability of a model that does not loop

Fixing loops, however, is not the same as making a model better at math: it lets the model finish answers it could already work out. So we also tried Gemma 3 270M, an instruction-tuned model about a third the size of Qwen3.5-0.8B, which rarely loops: only 8.5% of its answers reach its token limit, against 93% for Qwen. Here, Astra could not improve it. Reading Gemma’s failures, Astra found ordinary reasoning errors, such as wrong arithmetic and invalid algebraic steps, with no single component behind them to switch off. Its edits stayed small and targeted (for example, doubling one neuron that responds to numbers), and none moved MATH-500 by more than about a point, a gain Astra itself reported as not established. Editing weights could remove an obstacle that hid an ability, but it could not add an ability the model lacked. Gemma was sampled with its model card’s setting (temperature 1.0, top-k 64, top-p 0.95, up to 8,192 tokens), and its MATH-500 scores average 4 samples per problem.

Gemma 3 270MMATH-500 (%)
Base6.8
Edited, 5 forward passes7.0
Edited, 10 forward passes7.6
Edited, 25 forward passes7.7
Edited, 50 forward passes7.0

Background and Related Works

Neural networks are hard for us to read, and hard to work with directly.

Mechanistic interpretability reads networks with tools built for the job, tracing circuits and features and editing weights . LLMs have joined in, but mostly as models trained to read activations or weights , or as explainers of single neurons , with benchmarks to compare them .

在编写方面,大语言模型现在可以运行和改进训练,而其他工作则使用为此训练的模型来生成权重。无梯度方法仍然通过试错来寻找权重。在极小的规模下,AdderBoard 展示了编码智能体手动设置微型 Transformer 权重的过程。除了这些极少数的情况之外,要么是阅读器针对该任务进行了训练,要么仍然由训练来完成编写。这里的创新之处在于,直接使用通用的前沿模型来读取和写入权重本身,从以文本形式提供的 171,664 个权重,到使用工具操作拥有 0.8 亿个权重的语言模型。

接下来会怎样?

在这篇博客中,我们展示了 LLM 读取和写入神经网络权重能力的不断提升(即权空间编程这一新兴概念)。我们目前的结果确实表明,各项能力令人兴奋但仍有限,这主要是由于上下文长度和外壳(harness)方面的低效所致。然而,当前的迹象确实表明,一个涉及权空间编程的未来具有巨大的潜力。我们相信,这标志着机械可解释性和神经网络优化等领域发生剧烈转变的开始。

这为 LLM 发挥人类语言与权空间之间翻译器作用开辟了激进的新可能性。以下是一些示例:

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

我们目前正在为 LLM 在权空间编程方面的能力构建基准测试和外壳。我们相信,这将提供标准化的评估来衡量并加速权空间编程的进展,将目前看起来像黑魔法的技术转变为严谨、可复现的工程学科。

日志

我们在 github.com/RikiyaT/lm_understand-logs 中发布了本文中每个实验的完整日志。它们包括我们发送给 Astra 的所有内容以及它返回的所有内容(包含其推理摘要)、它运行的每一段代码及其看到的操作输出、它读取或写入的网络,以及每个数字背后的评估结果。

致谢

Rikiya 感谢 Jacob Li 和 Akihisa Watanabe 就本研究最初版本中关于大模型编写神经网络权重的潜在能力进行的宝贵讨论。Rikiya 还感谢 Souradip Chakraborty、Matei Zaharia 及其在 Berkeley Sky Lab 的学生、Heather Miller 及其在 CMU 的学生,以及 cmpnd 的研究人员就早期版本进行的富有成效的讨论!

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

来源:Hacker News-首页 · rikiyat.github.io