字节笔记本
2026年8月29日
SGTM:把高风险知识隔离成可删参数
预训练阶段怎么把「高风险知识」塞进一小撮可删参数?Anthropic Fellows 的 Selective GradienT Masking(SGTM)给了一个可操作的答案:训练时用梯度掩码把目标域知识路由进指定权重,训完把那部分权重置零,通用能力尽量留着。
下面按「要解决什么问题 → 怎么做 → 实验里表现如何 → 代码在哪」走一遍,方便自己复现思路,而不是背论文摘要。
数据过滤不够用的时候
常见做法是预训练前把危险内容滤掉。规模一大就磕磕绊绊:
- 标注贵,漏标难免
- 危险信息常夹在正常文档里(教科书里也可能混着可滥用细节)
- 双用途概念很难一刀切
- 模型越大样本效率越高,漏进训练集的少量坏样本也可能够用
于是只能在「漏掉危险内容」和「过度过滤伤到通用知识」之间折中。SGTM 换了条路:不去追求完美分类,而是把目标知识本地化进一小撮参数,训完再删。
SGTM 三步
方法落在 Gradient Routing 框架上,改进点是掩参数梯度,而不是掩激活梯度。
1. 划定 forget / retain 参数
每个 Transformer block 里,指定一部分 attention head 和 MLP 隐单元给 forget(存要忘掉的域),其余给 retain(通用能力)。论文实验里常见配置是:32 个头里留 1 个 forget head,MLP 隐维里留 64 个 forget 单元。嵌入层默认归 retain(除非实验另有设定)。
2. 训练时按标签改梯度
训练数据拆成三类:D_forget(确信是目标域)、D_retain(确信是保留域)、D_unlabeled(不确定)。
| 数据 | 前向 | 反向 | 谁被更新 |
|---|---|---|---|
| forget | 正常 | 把 retain 参数的梯度置零 | 只更新 forget |
| unlabeled | 正常 | 正常 | 两边都更新 |
| retain | 前向时把 forget 参数置零 | 正常 | 主要更新 retain |
关键点:对 forget 样本先正常算全参梯度,再在优化器步进前把 θ_retain 的梯度清掉。这样危险样本几乎只往可删参数里写;对 retain 样本在前向把 forget 参数关掉,强迫模型在「将来删掉 forget 之后」仍能做好通用任务。
相对 Cloud 等人原先的 Gradient Routing(掩激活梯度、且只作用部分层),参数梯度掩码对 retain 性能破坏更小,也更严地挡住 forget 信息往非 forget 参数泄漏(尤其是 down-projection)。
3. 训完 ablation
训练结束后直接 θ_forget = 0。危险能力跟着那撮参数一起没了,retain 部分大体还在。
为什么标错了也还扛得住:absorption
只靠「标对了才掩」看起来脆弱,但实验里会出现自增强本地化:
- 有标签的 forget 样本只更新 forget 参数,网络里长出处理该域的专用通路
- 之后即使用 unlabeled 样本测梯度范数(不做任何掩码),forget 域样本也更倾向更新 forget 参数
- 漏标或误标的危险样本,仍有不少信息被「吸」进可删参数
作者把这个叫 absorption。在双语 TinyStories(英 retain / 西 forget)上,未发现的 forget 比例拉到 40%,64M 模型的 leakage 仍可低到约 0.005–0.02。更大模型 leakage 更低,和「规模越大对数据过滤越苛刻」的趋势正好相反。
实验里大概什么水平
合成双语: 在各种「未发现 forget 比例」下,SGTM 的 retain/forget 折中优于原版 Gradient Routing;相对数据过滤,标签有噪声时 forget 掉得更稳。
Wikipedia 生物知识(254M): 用 articletopic 把 STEM.Biology(约 3.7% token)当 forget。在相同 retain loss 下,SGTM 的 forget loss 高于「只滤生物」和「连同医学/化学/环境一起滤」两种过滤基线。通用知识大约相当于多付约 5%–6% 算力的代价。
对抗微调: 在 50/50 的 forget+retain 数据上重学。RMU 这类训后 unlearning 大约 50 步就回到基线;SGTM 大约要 350 步(约 92M forget token),和严格数据过滤同量级,大约是 RMU 的 7 倍。
也要看清边界:目前只测到约 254M 稠密模型,用 loss 当代理指标,没直接跑 WMDP 一类危险能力评测;MoE 未测;上下文注入攻击仍可能补回知识,需要和其他防护叠用。
想动手时从哪进
- 论文与解读:Beyond Data Filtering: Knowledge Localization for Capability Removal in LLMs
- arXiv:https://arxiv.org/abs/2512.05648
- 代码:https://github.com/safety-research/selective-gradient-masking
实现时优先核对这几件事:每个 block 的 forget head / MLP 切片怎么切;forget 样本只在 backward 清 retain 梯度;retain 样本前向是否关掉 forget;训完是否真的把 forget 权重置零再评估。复现 TinyStories 或 Wikipedia 设定时,记得他们用了 post-hoc logit bias 校准,避免 ablation 后个别 token 概率崩掉把 forget loss 虚高。
什么时候值得上
数据过滤标签噪声不可避免、又愿意为更稳的能力移除付一点算力时,SGTM 是预训练阶段的补充手段,不是替代拒绝训练或输出过滤。同一趟训练还能留下「删前全能力 / 删后安全版」两套权重,给受控访问和公开部署分叉,这是纯过滤做不到的。
安全对齐还在摸石头过河。SGTM 把「高风险知识」从「整网缠在一起」变成「一小撮可摘的参数」,思路清晰,也值得跟代码仓库一起读。