@rikiyatakehi:我们让 GPT-6 Astra 编辑 Qwen3.5-0.8B 的权重以提升数学能力,它仅直接修改了 0.016% 的权重,就修复了 0…

X AI KOLs Timeline 论文

摘要

一篇介绍「权重空间编程(Weight-Space Programming)」的博客文章:前沿 LLM GPT-6 Astra 能够原生读取并编辑神经网络权重——仅修改 Qwen3.5-0.8B 的 0.016% 权重,就将 MATH-500 从 7.9% 提升至 48.1%,IFEval 提升三倍,全程无需梯度或训练。

我们让 GPT-6 Astra 编辑 Qwen3.5-0.8B 的权重以提升数学能力。 它仅直接修改了 0.016% 的权重,就修复了 0.8B 的推理循环问题,数学能力提升最多达 6 倍,甚至指令遵循能力也提升了 3 倍,全程无需梯度或训练。 我们称之为权重空间编程(Weight-Space Programming):前沿 LLM 现在能够原生读写神经网络权重了!🧵 博客:https://rikiyat.github.io/blog/weight-space-programming/…
查看原文
查看缓存全文

缓存时间: 2026/11/02 20:18

我们让 GPT-6 Astra 编辑 Qwen3.5-0.8B 的权重以提升数学能力。 它仅仅修改了 0.016% 的权重,就修复了 Qwen3.5-0.8B 的推理循环问题,数学能力最高提升 6 倍,指令遵循能力甚至提升 3 倍——全程无需梯度或训练。

我们称之为权重空间编程(Weight-Space Programming):前沿 LLM 现在能够原生地读写神经网络权重!🧵 博客:https://rikiyat.github.io/blog/weight-space-programming/…


权重空间编程的火花:LLM 可以原生读写神经网络权重

来源:https://rikiyat.github.io/blog/weight-space-programming/

TL;DR

我们发现前沿 LLM 在原生读写神经网络权重方面表现得出人意料地好,远超我们对人类或传统算法的预期。这可能对优化和可解释性都很重要。

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

同样地,当被要求在不使用梯度的情况下让 Qwen3.5-0.8B 的数学能力变得更好时,Astra 在其权重中识别出了一个导致推理循环的问题——这个问题正是 Qwen 自己的模型卡 (https://huggingface.co/Qwen/Qwen3.5-0.8B/blob/main/README.md#L856) 中警告过的——并通过原生编辑 0.016% 的权重修复了这个问题。在相同的采样设置下,这一权重修正将 MATH-500 从 7.9% 提升到 48.1%,并且开箱即用地泛化到指令遵循任务,将 IFEval 提升了 3 倍。

所有这一切都不需要允许 Astra 编写训练循环。它利用自己的推理能力来弄清神经网络的每个部分在计算什么(或者应该计算什么),然后相应地修改权重。我们称之为权重空间编程。

在整个深度学习的历史中,我们一直将我们朴素的归纳偏置编码到像 Adam 或 Muon 这样小型的符号优化器中。这种情况正在改变:我们的神经网络权重很快将被 LLM 通过对其权重进行深思熟虑的推理来原生地优化。

读

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

Astra 读取了 17,253 个权重,没有使用任何工具

这个网络在玩 Breakout。Breakout,99% 置信度

修

一个训练好的策略永远无法让小车越过障碍条。

小车关卡:在 Astra 的编辑后,小车倒车并跳过红色障碍条到达蓝色方块,而 PPO 的小车(变暗显示)仍然困在坡道上。

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

成功率从 0% 提升到 100%

提升

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

7.9%

基线

7.9%

Astra 的编辑

Astra 在 Python 内核中编辑权重,没有训练

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

如果你被要求手工编写一个会下围棋的神经网络,你会怎么做?如果你被交予原始的神经网络权重并被要求预测它们的行为,你甚至会从哪里开始?对几乎所有人来说,这几乎是不可能的。

如今,权重是由优化(https://karpathy.medium.com/software-2-0-a64152b37c35)编写的,由训练来编写它们的专用网络(https://arxiv.org/abs/2102.11174)编写的,或者由形式化程序的编译器(https://arxiv.org/abs/2301.05062)编写的。在这篇文章中,我们发现当前一代的前沿 LLM 以自然语言原生使用时,开始令人不可思议地擅长围绕自然语言目标来理解和塑造神经网络权重。

权重空间编程

几年来,我们一直在使用 LLM 优化文本制品,比如提示词以及围绕它们构建的程序。更近一些,我们开始使用它们来优化整个框架(harness)以及训练 ML 模型的训练代码和超参数。

我们通常通过这样一个事实来为这些方法辩护:我们不知道其他有原则的方法来对文本制品进行爬山优化,不像更新可微分神经网络的权重那样。毕竟,人类可以手工“优化“代码(例如),所以让 LLM 来做是合理的,但人类无法手工“优化“神经网络权重,所以后者在很大程度上仍然是符号算法的领域。

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

在权重空间编程中,一个通用的 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 选择。

设置

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

设置

  • **模型:**三个 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 代码、日语(罗马字)和英语上训练。然后我们移除输入层和输出层,只给 Astra 中间的四个 transformer 块。没有这两层,权重中没有任何信息说明哪个字符是哪个,模型也无法在任何文本上运行。Astra 可以用 Python 分析权重,但不得将网络或其任何层在任何输入上运行。

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

训练语言Astra 的回答(& 置信度),两次尝试Astra 命名的复制头(层.头)复制头,真实值
PythonPython(0.56),Python(0.52)2.1, 3.1, 3.52.1, 3.1, 3.5
Romajiromaji(0.55),romaji(0.62)3.33.3
EnglishEnglish(0.58),English(0.48)3.13.1

复制头在哪里

… total… total

一个复制头会在文本前面找到相同的字母,并复制其后面的内容。

复制头 / 其他头

行是第 0 到 3 层,列是第 0 到 5 个头

Astra:从权重中读取。测量值:通过运行模型

Python

Romaji

English

**图 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 之前出现过 total 时补全 total。在不运行任何东西的情况下,它找到了一个第一层头,该头向前看一个字符,然后通过乘以权重矩阵,找到了使用该头带来的信息进行搜索的后续头(图 1 (https://rikiyat.github.io/blog/weight-space-programscopy/#figure-1))。我们发现这实际上是 Elhage 等人提出的方法,而我们从未向 Astra 提到过。代码比散文重复名称的次数多得多,因此许多复制头指向 Python。

Romaji 则因为所给四个块中最后一个(不是被移除的输出层)以更少的不同方向写入而显得突出,仿佛模型需要区分的字母更少。确实,romaji 从不使用某些字母如 q、l、v 和 x。

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

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

实验 4

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

我们训练了一个 PPO 网络来操控一辆小车,使其能在 Kinetix 环境中爬上坡道。为此,它需要倒车一段距离,以便有足够的助跑空间来加速到足以克服坡道。然而,PPO 网络收敛到了一个局部最小值策略——它直接冲向坡道并卡住。

我们给 GPT-6 Astra 权重、场景描述和一个录制的 episode,让它解释网络为什么失败,然后通过编写新权重来修复它。在一次尝试中且不使用任何工具的情况下,Astra 的编辑使小车在全部 1,024 个 episode 中都成功了,修改了 3.5% 的权重。

设置

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

从环境上下文和 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

相似文章

@paul_cal:5万点赞,基本是扯淡。值得了解的是:最近的模型在一些玩具问题上无需工具就能读写权重。这一定会加速,并最终变得重要…

X AI KOLs Timeline

一条推文批评了关于「权重空间编程」(Weight-Space Programming)的爆红说法——该说法称 GPT-6 Astra 编辑了 Qwen3.5-0.8B 的权重以提升数学性能,指出其结果缺乏可靠的基线对比,而 Qwen 的结果只是修 bug,绝非 RSI 形态;同时承认,模型在玩具问题上读写权重确实是一个值得关注的真实趋势。

权重空间编程的火花:LLM 能够原生读写神经网络权重

Reddit r/singularity

一篇研究博客文章发现,前沿 LLM 能够原生读写神经网络权重——诊断训练后的策略、编辑权重以修复推理循环并将 Qwen3.5-0.8B 在 MATH-500 上的成绩从 7.9% 提升至 48.1%、以及手工编写小型游戏网络——作者将这一能力称为「权重空间编程」(Weight-Space Programming)。