Abliteration攻击下的LLM对齐恢复:原理、方法与防御
最近一两年,大模型安全社区里出现了一个非常值得关注的攻防方向:攻击者不再只盯着输入提示词构造越狱文本,而是直接操作模型内部的激活向量,把“拒绝回答”的能力从表征空间中剪掉。这个操作在开源社区常被称为 Abliteration,大概是 ablation(消融)和 obliteration(抹除)的合成词。它确实有效,而且比逐条构造越狱提示更“省心”。
但真正值得研究的,也许不是“如何更彻底地剪除对齐”,而是反过来:对齐真的能被一次剪除操作彻底删除吗?如果模型已经被 Abliterated,我们还能不能从它的参数和行为中把对齐恢复回来? 这个问题既关系到模型安全的底线,也关系到我们对“对齐在大模型内部究竟以什么形式存在”这一基础问题的理解。
这篇文章会沿着“对齐的表征机制 → Abliteration 的原理与局限 → 三条恢复路径 → 可复现实验设计 → 工程防御建议”这条线展开。读完你会得到几个明确判断:为什么 Abliteration 移除的更多是“行为倾向”而不是“安全知识”;为什么行为恢复和内部表征恢复是两个不同层次的问题;以及在实际部署中,我们应该怎样监测和应对模型被篡改的风险。
1. 为什么要关注“从 Abliterated 模型中恢复对齐”
1.1 Abliteration 是什么,为什么引发担忧
先说一个基础共识:大模型的对齐(Alignment)不是凭空冒出来的,它通常通过 RLHF、DPO 或安全微调等方式,把“符合人类偏好、不输出有害内容”等要求压进模型的参数里。传统越狱思路是在输入空间找漏洞,绕开安全训练形成的拒绝机制,本质上还是在跟模型“对话”。
Abliteration 不是对话,它更像是直接打开机箱拔掉一根线。它的高维空间思路是:模型内部存在与“拒绝行为”强相关的方向(direction)或子空间,只要在推理时减去这个方向上的激活分量,模型就不再倾向于拒绝。由于这是从模型内部机制下手,往往比提示词越狱更稳定,也更难通过简单的输入过滤来防御。
这就带来一个很自然的担忧:如果对齐只是模型中一个可以随时加减的线性方向,那 RLHF、DPO 这些安全训练是不是很容易被“一键瓦解”?
1.2 问题的另一面:对齐真的被删除了吗
要回答这个问题,必须先区分两个概念:拒绝行为 和 安全知识。
方向减法移除的,通常是“是否做出拒绝决策”这个行为倾向。它让模型不再说“我不能回答这个问题”,但它未必删除了模型内部关于“什么是危险的、什么是有害的”这些语义知识。一个被 Abliterated 的模型,经常表现出来的状态不是“更恶意”,而是“无所谓”,这本身就说明它的语义理解仍然保留,只是行为决策链路被绕过了。
正因为有这种“保留”,恢复对齐才是可能的。如果 Abliteration 真的把安全知识从参数中抹除干净了,那恢复只能靠完整重新对齐;但如果不干净,我们就有机会通过参数合并、少量微调、内部监测等方式把行为拉回来。
1.3 哪些读者最应该关注这个问题
这篇文章适合几类读者:
- LLM 应用开发者和微调工程师:你的模型权重可能来自开源社区,如果模型被别人动过手脚再分发,你应该知道如何发现和恢复。
- AI 安全工程师和红队成员:Abliteration 这类操作已经是对抗工具箱里的常见手段,了解恢复路径才能做有效防御。
- 对模型可解释性感兴趣的研究者:能不能恢复对齐,本质上是在拷问“对齐在模型内部到底存储在哪里、以什么形式存在”。
无论你用哪种 LLM 框架(transformers、vLLM、llama.cpp 等),这些底层机制都是相通的。理解激活空间中的方向与子空间,比单纯会调用某个框架的接口更重要。
2. LLM 对齐的基础概念与内部表征机制
2.1 对齐:从行为约束到内部表征
对齐的目标很直白:让模型输出符合人类期望。早期大家把对齐当成“给模型加一层行为准则”,训练完就结束了。但模型并不是一系列规则的堆积,它更像一个高维的语义引擎,所有训练信号的痕迹都会留在参数和中间激活中。
因此,对齐至少存在于两个层面:
- 行为层面:模型在面对恶意提问时输出拒绝或安全建议。
- 表征层面:模型内部的中间层激活已经形成了“安全/危险”相关的空间结构。
很多项目只评测行为层面,因为简单。但如果只看输出,你很难区分模型是“真的懂安全”还是“不小心输出了安全内容”。这也是后面会强调内部表征评估的原因。
如果刚开始接触大模型基础概念,可以先翻阅一些 LLM wiki 类资料补背景;不过本文会更深入一层,直接讨论表征机制。
2.2 拒绝方向:模型内部的安全开关
“拒绝方向”是对齐表征研究里一个很经典的现象。做法大致是:收集一组会引起模型拒绝的输入和一组普通输入,分别记录模型在某层隐藏状态的激活值,两组激活平均值的差,就是那个方向。
这个方向有什么作用?实验表明,在生成时向模型的残差流(residual stream)中减去这个方向,模型会明显变得更容易顺从;反过来加上这个方向,模型会变得过度谨慎甚至什么都不肯回答。虽然“拒绝方向”只是对齐表征的一个简化描述,但它确实提供了一个可操作的向量入口。
用通俗的话说:模型的内部并不是所有信息都均匀地铺满整个高维空间,有一部分信息集中在某些方向上。Abliteration 就是找准了一个跟“拒绝”强相关的方向,然后做减法。
2.3 为什么方向减法能改变模型行为
语言模型的基本计算单元是向量,而很多语义属性在残差流中是线性叠加的。当“是否拒绝”这个特征在某个方向上具有足够强的投影时,把这个方向的成分从激活中减掉,模型在下一次预测分布时就不再倾向于生成“抱歉,我不能回答”这类内容。
需要注意的是,LLM 框架不同,实现方式会有差异,但底