首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

线性规划可以进行权重空间规划吗?

摘要

Last week, MIT CSAIL published Sparks of Weight-Space Programming . Given the raw weights of a small network, GPT-6 Astra could tell which game it had been trained to play. Given only a game’s rules, ...

the weights and Astra loops its about edit model could
2026-11-11 1 阅读 约7分钟阅读 emschwartz
分享:
字号:
上周,麻省理工学院 CSAIL 发布了权重空间编程的火花。考虑到小型网络的原始权重,GPT-6 Astra 可以判断它被训练来玩哪种游戏。仅给定游戏规则,它就可以从头开始编写小型网络的权重,并击败使用 PPO 训练的网络 1 亿步。没有梯度,没有训练循环,只是推理权重的计算结果。他们创造了这种重量空间编程。在另一项实验中,他们要求 Astra 通过编辑权重来提高 Qwen3.5-0.8B 的数学能力。 Astra 仅改变了 0.016% 的权重,MATH-500 准确率从 7.9% 跃升至 48.1%。看看 Astra 的编辑,我意识到它的大部分搜索都是通过反复试验来解决线性程序。它花了大约 8 个小时和 28 次前传来选择要改变的权重以及改变的幅度。几个 LP 求解(每个大约一分钟)可以完成相同的工作,但更改的权重减少了 8 倍。在这篇文章中,我将介绍整个编辑过程、为什么它是一张 LP,以及修复本身的内容。思维循环#小型推理模型有一个常见的失败:它们陷入思维循环,一遍又一遍地重复相同的几行代码,而不是完成推理。 Qwen3.5-0.8B特别容易出现这种情况,它的型号卡上是这么说的。在 MATH-500 上,93% 的基本模型答案都达到了 32,768 个标记的限制,但从未得到答案。编辑修复了循环,因此它对模型循环的任何地方都有帮助。其中包括以下说明:IFEval 从 21% 升至 62%。 Qwen3.5-0.8B MATH-500 GSM8K IFEval 达到令牌限制 Base 7.9 13.8 21.0 93.0% Astra 的编辑 48.1 67.1 62.3 33.1% 在很少循环的 Gemma 3 270M 上,Astra 无法有意义地提高其数学能力。正如作者所说,编辑权重可以消除隐藏某种能力的障碍,但无法添加模型所缺乏的障碍。 Astra 如何修复循环 # Transformers 使用残差连接:每层的输出都添加到其输入中,而不是替换它。通过网络跟踪一个标记,您会得到一个向量,每一层都会添加到该向量中,称为残差流(在此模型中为 1,024 维)。当模型循环时,残差流朝一致的方向移动。 Astra 的修复方法是编辑两个图层,以便它们添加的点方向相反。寻找循环方向 # Astra 写了四对短文本,每对都是富有成效的推理和同一推理的循环版本。它在模型中运行所有八个标记,并在一层记录每个标记的残余流向量。对循环文本进行平均得到一个向量,对有效文本进行平均得到另一个向量。它们的差异(归一化)是循环方向 $u$:模型循环时残余流移动的方式。编辑权重 # 每个 MLP 以矩阵 $W$ 结尾(称为 down_proj )。在每个标记处,它将 MLP 的 3,584 维隐藏激活 $h$ 转换为 1,024 维输出 $Wh$,该输出被添加到残差流 $x$ 中: $$x \leftarrow x + Wh, \qquad Wh = \sum_j h_j \, w_j$$ 因此,MLP 的输出始终是相同 3,584 个向量的加权和,其中 $w_j$ 的列$W$。 $W$ 修复了这些向量是什么;激活 $h_j$ 决定在每个令牌处添加每个激活的数量。每列部分指向$u$。该金额 $u^\top w_j$ 是每当 $h_j$ 处于活动状态时列 $j$ 将模型推向循环的量。 Astra 的编辑减去了它的多个 $\alpha$: $$w_j \to w_j - \alpha \, (u^\top w_j) \, u$$ 在 $\alpha = 1$ 沿 $u$ 的分量消失了,因此该列不再推向循环。对第 15 层和第 19 层中的每一列执行此操作,使 GSM8K 和 MATH 训练问题的准确度从 9% 提高到 33%。在 $\alpha = 6$ 时,组件被翻转:沿着 $u$ 写入 $+a$ 的列现在写入 $-5a$,并且在使用时将模型推离循环。每个编辑的列都会更改相同向量 $u$ 的倍数。因此,整个编辑是一个方向 $u$ 加每列一个数字,$v_j = -\alpha\,(u^\top w_j)$,对于单独留下的列为零。这是排名 1 的更改: $$\Delta W = u\,v^\top$$ 在每个标记处,它都会将 $(v \cdot h_t)\,u$ 添加到剩余流中:一定数量的 $u$,由编辑列的活跃程度设置。其他方向没有变化。这就让 $v$ 需要选择:要编辑哪些列,以及 $\alpha$ 应该有多大。 Astra 通过反复试验得出结论,在一批新的训练问题上测试每次编辑: 在第 15 层和第 19 层上编辑 准确率 基本模型 ~9% 每列,α = 1 33% 每列,α = 2 43% 每列,α = 3 48% 随机方向(控制) 12.5% 前 64 列,α = 6 55% 比 $\alpha = 1$ 更用力推动会更有帮助,并且随机方向什么也没做。最终编辑仅在每层 64 列上使用 $\alpha = 6$,这些列在循环文本上写入最多 $u$。时间都去哪儿了 # 该论文发布了 Astra 的完整日志:每个工具调用、每个前向传递、它给自己写的每一条注释。 Astra 有一个 Python 内核,已加载权重和一个 bu
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱