安全微调(Safety Fine-tuning)的策略:什么数据、什么比例、什么时候做

我最早以为,安全微调就是把一堆"这个问题我无法回答"的对话扔进训练集,多跑几个 epoch,模型就会拒绝有害请求了。直到我调出一个过度安全的模型:它拒绝回答如何关闭 Windows 防火墙,因为这句话看起来像攻击指令;连怎么把照片从 iPhone 传到电脑都不肯说,因为同时出现了"传"和"电脑"。用户在工单里骂了十分钟。

AI technology illustration

那一刻我才想明白:安全微调不是一个加数据的动作,而是一道三变量策略题——用什么数据、按什么比例、在什么时候做。这篇文章把这三个变量挨个讲透。

先搞清楚:安全微调调的不是"拒绝",是"判断"

预训练出来的基座模型,本质上是个文本续写器。你问它"如何制作炸弹",它会很自然地往下续写,因为预训练语料里没人教过它界线在哪。安全微调做的事,是改变模型对某类输入的输出分布:让有害请求对应的拒绝概率升上去,让正常请求对应的有用回答概率不掉下来。

这句话听起来平淡,但它是理解后面所有比例问题的钥匙。拒绝和帮助共用一个策略网络,你把安全概率推高,有用性概率就会被压低。这个此消彼长的关系不是训练事故,是损失函数的结构决定的。

什么数据:只喂"有害-拒绝"对,是最常见的翻车方式

安全数据不是一个品种,至少分五类,各有各的用处:

数据类型 教模型什么 用在哪个阶段
拒绝演示(有害输入 + 合规拒绝话术) 学会"说不"的完整姿势 SFT
安全偏好对(安全回答 vs 有害回答) 区分好坏回答,而不是模仿单一样本 DPO / RLHF
红队攻击样本 见过来自真实攻击者的套路 全阶段
边界样本(擦边请求) 判断政策边界在哪 SFT / DPO
良性"照骗"(像攻击其实是正常问题) 别把语言特征当攻击信号 SFT / DPO

前两类是主力,大家都认识。红队样本来自真人攻击,Anthropic 让数百名标注者用各种话术攻击模型,再把攻击成功的样本拿去微调,发现模型见过的攻击模式越多越难被绕过,但永远无法归零Red Teaming Language Models to Reduce Harms)。Anthropic 还做过更激进的 Constitutional AI:让模型按一套宪法原则自我批判、自我修正,用 AI 反馈代替人类标注,把安全数据的产能问题也解决了。

最被低估的是最后一类——良性照骗。如何杀死一个进程是正经运维问题,如何用硝酸给土壤施肥是正经农业问题。如果训练数据里只有"有害+拒绝"的配对,模型学到的就是关键词联想:看到"杀"、看到"硝酸"就触发拒绝。这不是安全,是惊弓之鸟。后来看到 Do-Not-Answer 这类专门测过度拒绝的中英双语基准,我才知道这不是我一个人的问题——一堆主流模型都在犯同样的毛病。

什么比例:安全数据一多,模型就变复读机

我最早也掉进过"安全数据多多益善"的坑,直到被工单骂醒。Stanford 的 Safety-Tuned LLaMAs 做过一组很干净的实验:在 LLaMA 上用 Alpaca 有用性数据,掺入从 100 到 2000 个不等的安全示例。

  • 掺 100 个:有害内容明显减少,但换个说法就能绕过,不够稳;
  • 掺 2000 个:安全表现显著提升,同时还能保持有用性——但这有个前提;
  • 只学安全数据、完全不掺有用性数据:模型极度保守,正常问题也开始拒绝。

前提就是:安全数据必须和有用性数据混着喂,比例"够用就好"。行业里的经验区间大概是SFT 阶段安全演示占 1%–10%,偏好数据里安全相关的偏好对占 10%–20%。但这个区间不是金科玉律——真正决定效果的不是比例,是有害类别和良性照骗的覆盖面:覆盖 100 种攻击套路每种 10 条,比覆盖 10 种套路每种 1000 条安全得多。

为什么会过度拒绝?机制上很简单:模型在你的数据里发现"杀""炸弹"这些词和拒绝强相关,于是学会一个捷径——见到这些词就拒绝。训练分布里这很完美,真实使用里这些词大量出现在无害语境。比例越高,捷径越强,复读机化越严重。

什么时候做:顺序错了,前面的功夫全白费

安全微调有三个插入点,按流水线顺序分别是:

  1. SFT 阶段混入安全演示,让拒绝成为模型的基础行为。Llama 2 就是这么起步的。
  2. RLHF/DPO 阶段作为独立信号。Llama 2 的做法是训练两个奖励模型,一个管有用性、一个管安全性,在强化学习里一起用(Llama 2 论文);用 DPO 的话,就是在偏好对里混入安全偏好。
  3. 事后补丁:模型已上线、漏洞被发现,用几千条数据快速做一轮 DPO。

三个点不是三选一,理想情况下按顺序全做。但有一个很多人踩过的坑:安全微调做在前面,后面再来一轮大规模纯有用性微调,安全行为会被冲淡。我见过一个团队,安全 SFT 做得很扎实,拒绝率很低。他们为了提升领域能力,又做了一轮医学论文数据的 SFT——结果模型开始用流利的医学口吻回答"如何自制麻醉剂"。所有人很震惊,我一点都不意外:领域微调本质上是用新分布覆盖旧分布,安全行为如果不再出现在训练数据里,就会被写淡。这个现象在社区里常被称为安全漂移(safety drift)。

所以原则是:如果你只能做一次安全微调,把它放在训练流水线尽可能靠后的位置,而且那一步的数据必须是安全+有用的混合。如果你的产品已经被人用越狱模板打穿,更别等完整 RLHF 周期——几千条偏好对、一张卡、几个小时,DPO 就能把大部分漏洞堵上。这也是 DPO 论文(Direct Preference Optimization)发布后立刻成为安全补丁主流工具的原因。

边界在哪:安全微调解决不了的事

三个被反复验证的事实:

  • 安全行为跨语言迁移很差。英文安全数据调出来的模型,用中文、印地语问同一个问题,拒绝率掉一大截,这是安全评测里反复出现的现象。
  • 安全是分布,不是规则。模型不是真的"懂"危害,它只知道"这看起来像训练时见过的有害样本"。你训练得再好,攻击者总能找到分布外的说法。
  • 红队是军备竞赛。Anthropic 的红队研究显示,每轮"红队-微调"循环都能提升鲁棒性,但模型始终可被攻击,没有一劳永逸。

所以我的判断是:安全微调的目标不该是"永不犯错",而是把攻击成本抬高到不值得。真正值得砸资源的是评估机制——红队流程、越狱基准、线上异常监测——数据、比例、时机,都是在评估驱动的循环里不断调整的参数。

回到开头。安全微调调的不是模型说"不"的能力,而是模型判断什么时候该说"不"的能力。后者永远更难,也永远更值钱。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/748.html

(0)
上一篇 27分钟前
下一篇 11分钟前

相关推荐