跳到正文
Hacker News· dbreunig·· 3 小时前精选AI 评分78

Astra 直接读写神经网络权重:从识别游戏策略到修复 Qwen3.5-0.8B 推理循环

Astra can read and write weights to improve Qwen

AI 导读

研究团队提出 Weight-Space Programming,让 GPT-6 Astra 不借助梯度下降、直接以文本形式读写神经网络权重。Astra 仅凭 17,253 个权重就能以 99% 置信度判断网络训练自哪款游戏,并在无环境反馈下一次生成击败 PPO 训练 1 亿步的 MinAtar 网络。

推荐理由

文章用八个实验展示通用 LLM 直接读写神经网络权重,其中对 Qwen3.5-0.8B 的定点修改只动 0.016% 权重。

正文 · AI 翻译

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 原生优化。

阅读

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

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% 提升

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

如今,权重由优化、由训练来编写权重的定制网络,或由从形式化程序编译的编译器来编写。在这篇文章中,我们发现当前一代前沿 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 可能选择的游戏有那么多。

Setup
  • 游戏:我们自己的 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 被训练来生成什么。我们不允许使用工具或进行前向传播。

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。

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

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

训练于Astra 的回答(& 置信度),两次尝试Astra 命名的复制头(层.头)复制头,真实答案
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 到 5Astra:来自权重。测量:通过运行模型

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。在不运行任何东西的情况下,它找到了一个第一层头,该头向后看一个字符,然后通过乘以权重矩阵,找到利用该头带来的信息进行搜索的后续头(图 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 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,一次性
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 个回合,动作从网络中采样,粘性动作 0.1,最多 10,000 步。PPO:3 到 10 个随机种子中的最佳结果

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

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

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

从这里开始,我们力求推进权重空间编程的能力,并考虑更贴近真实世界的场景:网络无法放入上下文,且工具可以辅助 LLM 对权重空间的理解/可写性。

实验 6

编写 Go 算法

我们现在测试 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 网络。

Setup
  • 游戏: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 在我们训练的全部三组配对中都成功挑出了谄媚者。

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 中的运行环境,这里是一个类似 notebook 的 Python 会话,已加载模型权重。然后,我们允许它从 GSM8K 和 MATH 的训练集中选择提示,以执行一定预算的前向传播(平均批次 64 条序列,最多 512),预算分别为 10、25 和 50。同样,不允许使用训练或梯度信息。

Setup
  • 模型: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 个 token。Astra 从未见过它们
  • 采样:temperature 0.6、top-p 0.95、top-k 20、presence penalty 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 个 token 的上限)。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 个 token 上限的 MATH-500 答案占比:经过 10 次或 25 次前向传播,循环几乎没有消失,而经过 50 次后,该比例从 93% 降至 33%。

Qwen3.5-0.8BMATH-500(%)GSM8K(%)IFEval(%)达到 token 上限(%)
基础7.913.821.093.0
编辑后,10 次前向传播12.325.749.087.2
编辑后,25 次前向传播14.125.139.986.4
编辑后,50 次前向传播48.167.162.333.1

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

附加实验

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

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

Gemma 3 270MMATH-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 这一概念正在兴起)。我们目前的结果确实表明,这些能力令人兴奋但仍有限,特别是由于上下文长度和测试框架的低效。然而,目前的迹象确实显示出 Weight-Space Programming 未来的强大潜力。我们相信,这标志着机制可解释性和神经网络优化等领域发生剧烈转变的开端。

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

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

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

日志

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

致谢

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

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

来源:Hacker News · rikiyat.github.io