欢迎光临
我们一直在努力

改隐藏状态还是改模型权重?两种“知识编辑”别用同一份结论

可撤销的状态干预与持久参数

在一次前向计算里替换激活,让答案改变;把某层权重更新后保存模型,让未来请求也改变。这两种操作都可能被叫作编辑,但持续时间、影响范围和回滚方式完全不同。

Anthropic 的 global workspace 研究讨论内部激活上的干预。不能因此推导出“无需训练就永久修改模型知识”。状态干预改变一次计算路径,参数编辑改变生成这些状态的函数;缓存和外部记忆又是另外的持久化机制。

锁定权重、可撤销激活补丁

先用一个明确区分两者的小模型。权重保持不可变元组;临时覆盖隐藏状态只作用于那次调用。随后再构造另一组权重,观察它会持续影响所有输入。这个例子不模拟 Transformer,也不声称能编辑真实知识。

def forward(x, weights, hidden_override=None):
if len(x) != len(weights):
raise ValueError("shape mismatch")
hidden = sum(a*b for a, b in zip(x, weights))
if hidden_override is not None:
hidden = float(hidden_override)
return hidden

weights = (2.0, -1.0)
x, unrelated = (1.0, 0.0), (0.0, 1.0)
before = forward(x, weights)
temporary = forward(x, weights, hidden_override=9.0)
after = forward(x, weights)
edited_weights = (9.0, -1.0)
assert (before, temporary, after) == (2.0, 9.0, 2.0)
assert weights == (2.0, -1.0)
assert forward(x, edited_weights) == 9.0
assert forward(unrelated, weights) == forward(unrelated, edited_weights)
print("temporary:", before, temporary, after)
print("persistent new weights:", forward(x, edited_weights))

这里的“不相关输入保持不变”只验证了一个向量。真实参数编辑需要更广的局部性测试:同义改写、其他语言、相关关系、无关实体和多轮上下文。编辑目标答案成功,只是 efficacy;它不能替代泛化与副作用测量。

临时 hook 也有风险:忘记移除会污染下一次请求;张量位置对齐错误会改到别的 token;把 clean 运行的整段状态带入,还可能泄露目标答案。实验应为每次运行建立清晰作用域,并在退出后验证恢复。

如果效果在重启进程后消失,应优先检查是否只改了运行状态;如果效果在清缓存后消失,应检查缓存或检索层。本文没有运行真实 hook 或编辑算法,只用标准库验证作用域差别。给操作准确命名,能让实验结果少承担一份它没有证明的结论。

赞(0)
未经允许不得转载:171主机测评 » 改隐藏状态还是改模型权重?两种“知识编辑”别用同一份结论
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址