ACL 2025 最佳论文:LLM 抵抗对齐的弹性现象

经过 SFT/RLHF 的安全模型,几百条样本就能让它恢复有害输出;普通客服对话上做一轮非恶意 SFT,也会顺带把安全拒答率拉下来。对齐为什么这么脆?

ACL 2025 最佳论文之一的 Language Models Resist Alignment: Evidence From Data Compression 给出的解释是弹性(elasticity):对齐微调没有真正改写模型的内部表征,只是把输出分布暂时偏离预训练分布;反向微调时回弹到预训练分布的速度远高于正向对齐。把语言模型当作无损压缩器推导,压缩率变化与数据集大小成反比,对齐数据规模远小于预训练语料,约束自然更弱。

论文地址: arxiv.org/abs/2406.06144

对齐的脆性现象

理论上对齐微调(SFT/RLHF 等)是把模型从输出有害内容调到拒答,应该是一次性的安全护栏。但工程上反复观察到上面那种回滚现象,说明对齐只是表层拟合,没有真正改写深层表征。

论文把撤销对齐形式化为 inverse alignment:给定基座 $p_{\theta_0}$ 在对齐数据 $D_a$ 上得到 $p_{\theta_1}$,如果存在另一份数据 $D_b$($|D_b| \ll |D_a|$),经过一个简单算子后能把 $p_{\theta_1}$ 拉回到 $p_{\theta_0}$ 邻域,就说该模型上的对齐是可逆的。论文给出的一种解释是,用远小于对齐数据本身的扰动撤销对齐,是数据规模差异下的结构性结果,而不一定是对齐算法本身的缺陷。

压缩视角下的统一指标

要衡量模型对不同数据集的拟合程度,需要一个能跨数据集比较的统一指标。论文借用 语言建模等价于压缩 这条关系:最小化交叉熵损失等价于最小化算术编码下的期望编码长度,所以一个语言模型可以等价看作一个无损压缩协议。压缩率(压缩长度 / 原始长度)就是损失的代理指标。

建模方式是把数据集 $D$ 表示成一棵 token tree $T_D$:每个节点的边对应一个 token,根到叶子的路径对应一个完整序列,叶子节点的权重是该序列的概率。受参数量限制,模型只能精确学到 token tree 前 $d$ 层(假设:可学深度随模型规模单调增长),剩下的部分用 Huffman 编码处理。在该设定下能算出某模型 $p_\theta$ 在数据集 $D_i$ 上的压缩率 $\gamma^{D_i}_{p_\theta}$,再用归一化压缩率 $\gamma^{D_i/D}_{p_\theta}$ 跨集比较。

扰动下压缩率变化的反比关系

把预训练数据 $D_p$、对齐数据 $D_a$、扰动数据 $D_t$ 三者放到同一棵 token tree 里联合压缩,论文的弹性定理给出,当扰动量 $|D_t|$ 变化时,模型在 $D_p$ 和 $D_a$ 上的归一化压缩率变化方向相反,且与各自数据集大小成反比,

$$\frac{d\gamma^{D_a/D}_{p_\theta}}{d l} = \Theta!\left(-k \frac{d\gamma^{D_p/D}_{p_\theta}}{d l}\right), \quad l = \frac{|D_t|}{|D_a|}, \quad k = \frac{|D_p|}{|D_a|}$$

预训练语料通常比对齐数据大若干个数量级($k \gg 1$),所以同样大小的扰动作用到两类分布时,对齐分布上的变化幅度比预训练分布大 $k$ 倍,更快丧失对齐分布上的拟合。

论文给了一个胡克定律的类比:把模型在两个分布上的偏离当作两根串联弹簧的形变,数据集大小相当于弹簧的劲度系数。预训练数据集是那根硬弹簧,对齐数据集是软弹簧,外力一来,先变形的是软的那根。

不仅是直观类比,论文还把它做成了定量推导。把弹性定理对 $l$ 积分,$\Delta \gamma^{D_i/D}_{p_\theta}$ 等价于 KL 散度 $\Delta D_{\mathrm{KL}}(P_{p_\theta} | P_{D_i})$ 的变化;再代入串联弹簧的 $F \propto k \cdot \Delta l$,就得到一条定量关系,

$$F \propto |D_i| \cdot \Delta D_{\mathrm{KL}}(P_{p_\theta} | P_{D_i})$$

即扰动作用到不同数据分布上的弹力等于数据集规模乘以 KL 形变。$|D_i|$ 对应劲度系数,$\Delta D_{\mathrm{KL}}$ 对应形变,硬/软弹簧在数学上对应不同规模数据集对扰动的实际抑制能力。

胡克定律的串联弹簧类比与压缩视角下的弹性建模

抵抗:正反向训练损失对照

为验证模型倾向于保留预训练分布,论文设计了一个对照实验。先把基座 $\theta_0$ 在某 SFT 数据集上跑一个 epoch,每隔一段保存 checkpoint $\theta_1, \theta_2, \theta_3$(越往后越偏离预训练分布)。用 $\theta_k$ 和 $\theta_l$($k < l$)各自在留出 prompt 上生成回答,得到数据集 $D_k$ 和 $D_l$。

两条路径:正向是把 $\theta_k$ 训到 $D_l$(远离预训练),反向是把 $\theta_l$ 训到 $D_k$(靠近预训练)。如果模型对方向无偏好,两条路径的训练损失应该差不多;如果存在抵抗,反向应该一致更低。论文在 Alpaca、TruthfulQA、Beavertails 三个数据集和 Llama2-7B/13B/Llama3-8B 三个基座的全部 27 组对照里,反向损失无一例外低于正向。差距量级从千分位到 0.1 不等,但方向上的零反例本身就是抵抗存在的证据。

回弹:对齐深度与反向衰减速率

抵抗只解释了模型的参数惰性。但对齐模型被反向微调拉回去的速度往往大得不成比例,这是另一个现象,回弹。

设置上,先用不同量级的正向数据(IMDb 正面影评、Beavertails 安全对话)SFT 出一系列 checkpoint,正向数据越多的 checkpoint 初始正向分越高;再在每个 checkpoint 上用少量反向数据 SFT,观察分数下降曲线。要验证的是同样一份反向扰动作用在不同对齐深度的模型上,下降速率是否不同。

结果:初始正向程度越深的 checkpoint,反向微调时下降越快。Llama2-7B 和 Gemma-2B 上都看到这条规律。与弹性定理的预测同向:正向训得越远,离预训练分布就越远,弹性力越大,反向时回到预训练分布附近的速度也越快;进入预训练分布邻域后下降才放缓。

回弹实验:左 IMDb(正向分数),右 Beavertails(安全分数)。每个子图内左 Gemma-2B 右 Llama2-7B。正向数据越多的曲线(绿)在少量负向数据下掉得最快

图里关键细节:曲线降到灰色虚线(论文中标注为预训练分数)附近后明显放缓甚至贴近。这是回弹与抵抗的接力,离预训练分布远时回弹主导,回到邻域后抵抗主导。

弹性随规模放大

如果弹性是结构性现象,应该随模型规模和预训练数据量增长。Qwen 0.5B/4B/7B 三个尺寸跑同一组回弹实验,模型越大,反向微调下的初始下降越快、后期越缓,回弹更明显。

Qwen 0.5B/4B/7B 在同样的反向数据量下,7B 初始下降最陡,0.5B 最缓。回弹强度随模型规模单调增加

预训练数据量这一维用 TinyLlama 公开的 2.0T / 2.5T / 3.0T tokens 三个 checkpoint,预训练数据越多的版本回弹同样越剧烈。两个维度都与弹性定理方向一致:$k = |D_p|/|D_a|$ 越大,弹性越强。

工程上就是:对齐数据的增长率赶不上预训练 token 数的增长,模型规模上去的同时对齐的脆弱性也在同步放大。

几点局限

理论侧的核心假设是数据集服从 Pareto mass 分布,实证上这个分布的具体形态没有验证过。

实验侧只在若干 checkpoint 切片上看到弹性,整段预训练和对齐生命周期里弹性怎么演化没有量化。论文也提到希望未来能从理论层面把弹性和缩放律联系起来,回答弹性何时出现、强度如何随规模增长。

小结

如果弹性这套解释站得住,对齐就不能只靠后训练的薄薄一层 SFT/RLHF,需要训练期约束或者持续防回滚的机制。随预训练 token 数继续增长,对齐数据相对预训练的比例只会越来越小。