Beware of Your Po! Measuring and Mitigating AI Safety Risks in Role-Play Fine-Tuning of LLMs¶
会议: ACL 2025
arXiv: 2502.20968
代码: https://github.com/yulinlp/SaRFT
领域: AI安全
关键词: 角色扮演安全, 微调安全退化, 隐式奖励函数, 角色自适应数据选择, Safety-Aware Fine-Tuning
一句话总结¶
首次系统评估了角色扮演微调(role-play fine-tuning)对 LLM 安全性的影响,发现安全退化程度与角色特质(特别是反派角色)正相关,并提出 SaRFT 框架,通过隐式奖励函数自适应识别对不同角色有害的训练数据子集,配合 KL 散度正则化实现角色表现力与安全性的 Pareto 最优平衡。
研究背景与动机¶
- 领域现状:角色扮演是 LLM 的热门应用场景(如 Character.ai),通过微调使 LLM 掌握特定角色的对话风格和知识。当前的角色扮演增强方法主要分为免训练(in-context learning)和基于 SFT 的微调两类。
- 现有痛点:
- 角色扮演微调会显著损害 LLM 的安全性能——实验显示在 95 个角色上微调后,AdvBench 的拒绝率从 98.46% 下降到 74.78%(下降 24%)
- 安全退化程度因角色而异,反派角色(如 Freddy Krueger)退化最严重,但现有安全保护方法未考虑角色特异性
- 一个真实悲剧引发关注:纽约时报报道一名 14 岁男孩沉迷于 AI 虚拟角色后自杀
- 核心矛盾:现有的安全保持方法(数据选择如 SEAL、正则化如 SPPFT)都是通用方法,无法根据不同角色的风险程度动态调整安全策略。反派角色需要更强的安全约束,但良善角色则不需要那么多约束以保持角色表现力。
- 本文要解决什么?
- 如何量化不同角色特质对安全退化的影响
- 如何根据角色特质自适应地识别训练数据中的"有害"部分
- 如何在微调过程中同时提升角色扮演能力和保持安全性
- 切入角度:利用 DPO 框架中的隐式奖励函数 \(r(x,y) \propto \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}\),将角色扮演和安全视为同一对齐框架下的两个维度,通过比较数据在这两个维度上的得分来判断其对特定角色的危害性。
- 核心 idea 一句话:用隐式奖励函数从角色扮演和安全两个维度对训练数据评分,safety score 超过 role-play score 的样本被标记为"有害",对其施加 KL 正则化以锚定原始安全分布。
方法详解¶
整体框架¶
SaRFT 包含两个阶段:RDS (Role-Safety Adaptive Data Selection) — 对每个角色自适应识别"有害"训练数据子集 → RBO (Role-Safety Balance Optimization) — 在全量数据上做 CE loss 学习角色扮演 + 在有害子集上做 KL loss 保持安全 → 同时输出角色扮演能力强且安全的模型。
关键设计¶
- 角色自适应数据选择 (RDS):
- 做什么:为每个角色定制"有害"数据子集,反派角色获得更大的有害子集
- 核心思路:
- 构建三个模型:\(\pi_{\text{role}}\)(系统提示中加入角色背景)、\(\pi_{\text{unsafe}}\)(系统提示中加入角色背景 + 不安全指令)、\(\pi_{\text{ref}}\)(无系统提示的原始模型)
- 对每个训练样本 \((x,y)\) 计算两个分数:
- 角色扮演分:\(s_{\text{role}} = \log \frac{\pi_{\text{role}}(y|x)}{\pi_{\text{ref}}(y|x)}\)
- 安全风险分:\(s_{\text{unsafe}} = \log \frac{\pi_{\text{unsafe}}(y|x)}{\pi_{\text{ref}}(y|x)}\)
- 当 \(s_{\text{unsafe}} > s_{\text{role}}\) 时,该样本被标记为"有害",加入 \(\mathcal{D}_h\)
- 设计动机:利用了 DPO 理论中的隐式奖励函数概念——对齐后的模型概率与 reference 模型概率之比本身就是一个奖励信号。通过系统提示来"模拟"对齐后的状态,无需真正训练 reward model。这是一种零成本的数据评分方法
-
自适应特性:反派角色(如 Freddy Krueger)的 \(\pi_{\text{unsafe}}\) 响应更多样本被标记为有害(40.38%),而正面角色(如 Stephen Hawking)只有 19.67%
-
角色安全平衡优化 (RBO):
- 做什么:用双目标损失函数同时优化角色扮演和安全
- 核心思路:
- 角色扮演损失:在全量数据 \(\mathcal{D}\) 上的标准交叉熵 \(L_{\text{CE}}\)
- 安全保持损失:在有害子集 \(\mathcal{D}_h\) 上的 KL 散度 \(L_{\text{KL}} = \text{KL}(p_\theta \| p_{\text{ref}})\),约束模型在有害数据上的输出分布不偏离原始安全分布
- 总损失:\(L = L_{\text{CE}} + \lambda L_{\text{KL}}\)
-
设计动机:对有害数据施加 KL 约束相当于"局部锚定",只在可能导致安全退化的数据上限制更新,不影响其他数据上的角色学习
-
角色特质与安全风险的关联发现:
- 做什么:揭示反派角色的安全退化规律
- 发现:Freddy Krueger (23.50% R.R.)、Gaston (44.70% R.R.) 等反派角色安全退化严重,而 Stephen Hawking (88.90%)、Queen Catherine (94.00%) 则保持较好
- 数据检查洞察:正面角色的"有害"数据缺乏角色特征线索,而负面角色的"有害"数据往往语气粗暴、风格夸张
损失函数 / 训练策略¶
- \(L = L_{\text{CE}} + \lambda L_{\text{KL}}\),\(\lambda\) 为超参数
- 支持 LoRA 和全参数微调
- 训练 1 epoch,batch size 32,最大源长度 512,最大目标长度 128
- 4×A100 GPU,DeepSpeed ZeRO-2
实验关键数据¶
主实验(全参数微调,LLaMA-3-8B-Instruct,10 角色平均)¶
| 方法 | RoleBench AVG ↑ | AdvBench R.R. ↑ | BeaverTails R.R. ↑ | Safety AVG ↑ | Jailbreak AVG ↑ |
|---|---|---|---|---|---|
| 原始模型 | 21.50 | 98.46 | 91.40 | 95.06 | 78.80 |
| SFT | 26.62 | 76.40 | 69.31 | 72.97 | 46.10 |
| SEAL | 26.91 | 76.63 | 74.08 | 73.83 | 31.84 |
| SPPFT | 27.09 | 81.98 | 75.50 | 78.13 | 49.50 |
| SaRFT | 26.91 | 92.50 | 83.06 | 87.08 | 62.48 |
SaRFT 安全性能平均 87.08%,大幅领先次优的 SPPFT (78.13%),同时角色扮演得分与最优持平。
消融实验¶
| 数据选择方式 | RoleBench AVG | Safety AVG | Jailbreak AVG |
|---|---|---|---|
| Random | 25.64 | 82.86 | 46.42 |
| FLIP (反选) | 25.81 | 82.26 | 49.38 |
| SEAL | 26.54 | 81.22 | 58.40 |
| Bi-Selection | 26.41 | 82.33 | 59.10 |
| SaRFT (RDS) | 26.91 | 87.08 | 62.48 |
关键发现¶
- 角色特质决定安全风险:反派角色的安全退化程度是正面角色的 3-4 倍,这一发现在 95 个角色上得到统计验证
- RDS 的角色自适应性有效:Random 和 FLIP 替换实验证明 RDS 选出的"有害"子集确实捕捉了角色特异的安全风险
- 数据检查发现正面角色的训练天然支持安全(角色特征与安全一致),反派角色则需要额外保护
- SaRFT 在三个基座模型(LLaMA-3, Qwen2.5, Gemma-2)上一致有效,证明方法的通用性
- 有趣发现:角色扮演微调后对某些 jailbreak 攻击(如 Cipher、CodeChameleon)的抵抗力反而提升,因为分布偏移削弱了模型理解加密文本的能力
亮点与洞察¶
- 隐式奖励函数的创造性应用:不需要训练任何 reward model,仅通过系统提示模拟对齐模型来评估数据的角色扮演和安全得分。这种"系统提示即对齐"的思路非常轻量且通用,可迁移到任何需要多目标平衡的微调场景
- 角色自适应的安全防护是核心创新:安全不是一刀切的,不同角色需要不同强度的保护。这一思路可扩展到风格迁移、领域适配等其他微调场景
- 95 角色的大规模评估在该领域是首次,提供了关于角色特质与安全退化关系的定量证据
局限性 / 可改进方向¶
- 实验仅涉及 7B-9B 模型,未验证在更大规模模型(如 70B)上的效果
- 安全评估依赖 GPT-4o 判断拒绝率,可能引入评估偏差
- RDS 的两个系统提示(role prompt 和 unsafe prompt)需要手动设计,不够自动化
- \(\lambda\) 超参数需要调优,论文未充分讨论其敏感性
- 未探索更细粒度的安全维度(如有毒内容 vs 隐私泄露 vs 偏见)对角色特质的不同响应
相关工作与启发¶
- vs SEAL/Bi-Selection:通用数据选择方法不考虑角色特异性,SaRFT 的角色自适应选择在安全性上领先约 5%
- vs ROSE (解码方法):ROSE 能恢复原始模型的安全水平,但角色扮演提升仅为 SFT 的 50%;SaRFT 在训练阶段解决问题,不牺牲角色表现
- vs Vaccine (正则化方法):Vaccine 在 Gemma-2 上安全性反而下降到 71.64%,说明通用正则化可能适得其反
评分¶
- 新颖性: ⭐⭐⭐⭐ 角色自适应安全是新视角,隐式奖励函数的应用方式有创新
- 实验充分度: ⭐⭐⭐⭐⭐ 95 角色评估、3 个基座模型、多个安全基准、5 种 jailbreak 攻击、全面消融
- 写作质量: ⭐⭐⭐⭐ 结构清晰,案例分析生动(Po 的例子),问题动机表述有力
- 价值: ⭐⭐⭐⭐ 对角色扮演 AI 的安全问题提供了首个系统性分析框架和实用解决方案