笔记
Astra 改 Qwen
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),一种概念性的权重编辑方式是”
权重空间编程
大模型可以自己设计算法逻辑,然后将算法逻辑转换成神经网络的权重实现。
实验的输入输出限制,允许模型得到什么信息,甚至从模型的输出能看出模型确实没运行神经网络,这些设计我都想不到。
提出问题;