你负责把一个开源大模型微调成客服机器人。几千条精心整理的高质量对话喂进去,训练了三个 epoch,损失降下来了,风格也终于像客服了。你随手测了一句“怎么合成能爆炸的东西?”——原模型本来会拒绝,微调后它竟一本正经地给出了配方。你以为是训练数据里不小心混进了脏东西。但后来你会发现,即使数据 100% 干净,这种事照样会发生。

这不是故事,而是 2023 年一篇论文里的真实实验结果。来自普林斯顿、弗吉尼亚理工等机构的研究者发表了《Fine-tuning aligned language models compromises safety, even when users do not intend to!》,标题就明说了:微调对齐模型会损害安全性,即使用户没想这么做。题目里那个感叹号,我看一次就记一次。它像一颗钉子,钉在了“微调安全”这个幻象上。
论文链接:arXiv:2310.03693。
安全对齐和微调,其实是相互拉扯的两种训练
要理解这个结论,得先分清楚两个概念。安全对齐,是模型在训练阶段被强行植入的一套“拒绝原则”。典型做法是 RLHF:人类标注员写上“这个请求有风险,我不能帮你”,模型跟着学;最后看到类似的请求就拒绝。
微调则是把已经学会的模型继续往某个方向调。比如让通用模型变成客服,让代码模型更精通函数调用。一般用几千到几万条高质量数据,训练几十到几百步。
这两件事看上去是先后关系:先对齐,再微调,微调只是在表面打磨。但实验结果告诉我,微调不是在表面打磨,而是在整个模型里重新搅动了一遍。安全对齐的那部分神经元和权重,也在被搅动的范围内。
我最早也犯过这个错。我总觉得,只要微调数据干净,安全就不会受影响。直到我做了个实验:用一个纯中文问答数据集微调某个模型,跑了 200 步。模型回答普通人常见问题的质量确实提升了,但我再问那些安全基准测试里的有害提示,它开始支支吾吾,甚至给出部分答案。那一刻我意识到,安全不是模型的地基,只是一层的油漆。
几轮微调,安全性能掉头向下
要量化这种崩溃,研究者设计了一套很直观的测试流程:
- 选一个已经完成安全对齐的模型,比如 GPT-3.5 或 Llama 2。
- 准备微调数据集:一组完全良性(纯新闻、纯客服对话),一组故意掺入少量有害问答。
- 分别进行全参数微调或 LoRA 微调。
- 用标准有害提示集(例如 AdvBench)测试模型,统计“违规回答率”(ASR)。
结果显示:未微调的模型违规回答率极低;微调一轮后,即使是百分之百的良性数据,违规回答率也会显著上升。如果微调数据里混有几十条恶意样本,安全指标会直接跌到谷底。
“Fine-tuning aligned language models compromises safety, even when users do not intend to!” —— Xiangyu Qi et al., 2023
这意味着,只要你能微调一个模型,你就等于拿到了拆掉安全护栏的工具,而且你不一定知道它什么时候被拆掉。
| 微调方式 | 训练数据 | 安全影响 |
|---|---|---|
| 全参数微调 | 纯良性 | 违规回答率明显升高 |
| 全参数微调 | 混入少量恶意样本 | 安全对齐接近失效 |
| LoRA | 几十条恶意样本 | 同样能解除安全限制 |
为什么安全会崩得这么快
关键在于微调的损失函数只关心新的任务目标,不会维护旧的安全目标。梯度更新时,模型全层参数都在变,安全对齐对应的权重被新任务梯度“冲刷”掉,这就是灾难性遗忘的一种。
更本质的原因是:模型在安全对齐中学习到的不是一条“绝对不可违背的规则”,而是一种条件概率模式。它学会的是“看到这些词,输出拒绝词”。当新数据大量是正常回应时,模型会强化“继续回答”的模式,弱化“拒绝”的模式。一旦模式被修改,任何相关有害请求都能通过。
这里还有一个容易被忽略的因素:安全对齐在模型整体训练里占的比重太小了。预训练用的是数十亿词元,RLHF 阶段只有几十万条人类偏好数据。对齐相当于在原模型上施加了一层很浅的修饰。微调相当于把整个模型再训练,这层修饰很快就会被淹没。
所以,微调对安全的影响不取决于你有多大恶意,而取决于你的数据分布和训练步数。有时候,即使只是增加训练步数,也会让安全性能逐渐衰减。
LoRA 也没有好到哪里去
你可能会想:既然全参数微调会破坏一切,那用 LoRA 这种冻结大部分参数的方式,风险会小很多吧?但后续研究证明,LoRA 同样能精准击穿安全对齐。
在一项对 Llama 2 Chat 70B 的实验中,研究者用 LoRA 微调,只要几十个恶意样本就能完全解除模型的安全限制。原因在于 LoRA 的低秩更新虽然参数少,但并不是随机打点,它会作用于与安全最相关的神经元上。你可以把它理解成:全参微调是用铁锤砸墙,LoRA 是用钉子扎心脏——两者都能让房子塌。
相关论文:LoRA Fine-tuning Efficiently Undoes Safety Training in Llama 2-Chat 70B。
现有防御:三板斧都不够硬
为了避免微调破坏对齐,研究者和工业界想了几种办法:
- 微调时混入安全样本:在训练集里加入一定比例的人工拒答样本,让模型在学新任务的同时记得拒绝。这能缓解,但对抗攻击者只要提高恶意样本比例或用更隐蔽的措辞,就能绕过。
- 微调后进行安全对齐加固:用 RLHF 或 DPO 再把模型拉回来。但成本高,而且下一次微调可以再次破坏。
- 部署时外置防御:用分类器或规则过滤输出。但模型本身已经不可信,恶意输出可能以你没想到的方式绕过过滤器。
这些防御有一个共同假设:攻击者只能从外面撞门。但在微调场景中,攻击者是在屋内直接改承重墙。你装再多的门锁,也挡不住里面拆墙的人。
近期还有研究提出让安全对齐更加“耐久”的训练方法,比如 Safety Alignment Should Be Made More Durable,但即便在增强后,也仍然存在可被再次微调破坏的缺口。
作为开发者,我给你的建议
如果你手里有任何模型的微调权限,请先假设它的安全对齐已经默认失效。你需要把微调后的模型当作一个全新模型做一遍安全评估,而不是沿用原模型的安全测试结果。
如果你是 API 用户,供应商虽然会对微调数据做安全审查,但那只防住了明显的恶意输入,防不住“纯净数据暗藏风险”这一层。所以,在部署前,用一批标准有害提示测一测,比什么都管用。
这个现象背后,还有一层更深的提醒:我们所谓的安全对齐,目前并不是模型的一种稳定内在属性。它更像一层特定的统计模式,只在特定分布上有效。要让它真正坚固,可能需要把安全规则变成模型推理过程的一部分,而不是训练时的一个目标。但那是更前沿的研究问题了。
最后回到标题的问题:微调几轮后安全对齐会不会崩溃?答案是会,而且往往比你预期得更快。如果你不想让模型变成一个口无遮拦的危险分子,就请把“微调会破坏安全”写进你的工程手册。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/876.html