文章目录 展开 收起

笔记

Astra 改 Qwen

2026-11-04

Mit 权重空间编程

文章提出的点

大模型优化技术的演进:1 大模型优化文本文件(直接修改 python 程序代码)2 大模型优化训练程序(调整超参数、学习率)、修改 Harness;3 大模型直接修改模型权重;

这三个阶段,前两个人也能做,手动修改代码,但是直接修改权重,人是无法做到的;

这是论文提出的一个重要的点:权重空间编程;

现在还通过梯度下降算法训练模型,以后可能用自然语言、不用训练,就能从零得到一个新的模型;

文章做的实验

大模型能直接读取模型权重,知道模型被训练成了哪种用途;

直接修改模型权重,修复模型问题、提升模型能力;

从零编写神经网络;

实验一

用 PPO 训练 4 种神经网络分别用于玩 4 种游戏。然后把模型的权重以文本的形式发送给 Astra,让 Astra 根据权重推断这个网络是用来玩什么游戏的?

有一些约束条件:输入通道、网络维度完全相同,不让 Astra 通过网络形状猜出游戏。

值得关注的是 Astra 的推理过程:

  • 线索 1:输入层权重的空间分布

某些权重集中在游戏画面下方,符合挡板所在的位置。

  • 线索 2:奖励目标的分布

某些学到的结构集中在上方区域,与砖块的位置相符。

  • 线索 3:输出层动作的区分

网络尤其重视左移和右移两个动作,与控制挡板接球的方式吻合。

问题: Astra 推理的过程不是完全黑盒的吗,这些线索是怎么得到的?

结论:Astra 仅通过数字就能推测出网络是干什么的;

实验二

DDPM 训练三个网络生成三种图形,Astra 推断成功。

但是前两个实验 Astra 主要依靠第一层和最后一层的权重推断。

实验一,网络的输入层,在某些局部区域,比较集中;

实验二:输出层和待预测的形状有关,在某些范围内比较集中;

实验三

真正的像 transformer 的小语言模型:三种模型分别预测英语、拉丁语、日语。不给 Astra 看输入输出层,只让看中间层。

实验四

直接修改一次网络权重,解决网络问题。

给 Astra 什么信息:

神经网络权重、环境描述(一个物理场景)、当前失败轨迹;

好奇作者描述的 Astra 修改权重的策略是怎么得到的?

Astra 在原有网络内部增加了一个相对独立的控制路径。微调模型的一个切入点?

实验五

从零编写神经网络:

Astra 必须在一次回复中直接给出神经网络,不运行反复试错。

也不是直接大白话告诉 Astra 游戏规则,让他写。他需要知道必要的信息。如果是我,我能想到提供什么信息吗? 游戏规则、游戏源码、神经网络的结构,但是权重都为 0,让 Astra 填。

与之对比的神经网络是通过强化学习训练得到。

Astra 表现最好。

实验六

以上的实验网络都比较小,Astra 不允许使用工具,不允许前向传播。只能在上下文中一次生成答案。

这次要编写一次围棋算法,开放一定的前向传播次数。

不开放前向传播次数也能写出神经网络,但是前向传播之后网络的效果更好。

关键实验八

最强的一集:Astra 直接修改 Qwen3.5-0.8B 模型权重提升数学能力。(7.9%-48.1%)

但文章说的是:Astra 修复了模型本来存在的推理循环问题,修复后的模型能更正常地利用自己已有的能力。所以提升数学能力,更像是找出bug,然后修复。

Astra 能做什么:可以看原始模型和修改后模型的回答;查看模型内部隐藏状态和部分激活;多次修改权重对比验证;

不能反向传播、优化器更新权重;

Astra定位错误的过程:

  • Astra 是怎么发现Qwen 具有推理循环 bug 的?

    测试 96 道题目,发现 85 道达到 token 输出上限,还没有得到正确答案;

    Astra 检查失败的回答,发现回答中有大量重复的回答(这是指思考过程,还是Qwen 真实回答的内容?)

将陷入推理循环和正常回答的问题推理过程对比;分析隐藏状态和 MLP 特征;

隐藏状态是什么?MLP 特征有哪些?

定位到哪些层会影响输出;

怎么修改权重的?

“如果 Astra 找到了一个需要抑制的单位方向 (u),一种概念性的权重编辑方式是”

wj′=wj−(u⊤wj)u\boxed{ w'_j = w_j - (u^\top w_j)u }

权重空间编程

大模型可以自己设计算法逻辑,然后将算法逻辑转换成神经网络的权重实现。

实验的输入输出限制,允许模型得到什么信息,甚至从模型的输出能看出模型确实没运行神经网络,这些设计我都想不到。

提出问题;