跳转至

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 最优平衡。

研究背景与动机

  1. 领域现状:角色扮演是 LLM 的热门应用场景(如 Character.ai),通过微调使 LLM 掌握特定角色的对话风格和知识。当前的角色扮演增强方法主要分为免训练(in-context learning)和基于 SFT 的微调两类。
  2. 现有痛点
  3. 角色扮演微调会显著损害 LLM 的安全性能——实验显示在 95 个角色上微调后,AdvBench 的拒绝率从 98.46% 下降到 74.78%(下降 24%)
  4. 安全退化程度因角色而异,反派角色(如 Freddy Krueger)退化最严重,但现有安全保护方法未考虑角色特异性
  5. 一个真实悲剧引发关注:纽约时报报道一名 14 岁男孩沉迷于 AI 虚拟角色后自杀
  6. 核心矛盾:现有的安全保持方法(数据选择如 SEAL、正则化如 SPPFT)都是通用方法,无法根据不同角色的风险程度动态调整安全策略。反派角色需要更强的安全约束,但良善角色则不需要那么多约束以保持角色表现力。
  7. 本文要解决什么?
  8. 如何量化不同角色特质对安全退化的影响
  9. 如何根据角色特质自适应地识别训练数据中的"有害"部分
  10. 如何在微调过程中同时提升角色扮演能力和保持安全性
  11. 切入角度:利用 DPO 框架中的隐式奖励函数 \(r(x,y) \propto \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}\),将角色扮演和安全视为同一对齐框架下的两个维度,通过比较数据在这两个维度上的得分来判断其对特定角色的危害性。
  12. 核心 idea 一句话:用隐式奖励函数从角色扮演和安全两个维度对训练数据评分,safety score 超过 role-play score 的样本被标记为"有害",对其施加 KL 正则化以锚定原始安全分布。

方法详解

整体框架

SaRFT 包含两个阶段:RDS (Role-Safety Adaptive Data Selection) — 对每个角色自适应识别"有害"训练数据子集 → RBO (Role-Safety Balance Optimization) — 在全量数据上做 CE loss 学习角色扮演 + 在有害子集上做 KL loss 保持安全 → 同时输出角色扮演能力强且安全的模型。

关键设计

  1. 角色自适应数据选择 (RDS):
  2. 做什么:为每个角色定制"有害"数据子集,反派角色获得更大的有害子集
  3. 核心思路:
    • 构建三个模型:\(\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\)
  4. 设计动机:利用了 DPO 理论中的隐式奖励函数概念——对齐后的模型概率与 reference 模型概率之比本身就是一个奖励信号。通过系统提示来"模拟"对齐后的状态,无需真正训练 reward model。这是一种零成本的数据评分方法
  5. 自适应特性:反派角色(如 Freddy Krueger)的 \(\pi_{\text{unsafe}}\) 响应更多样本被标记为有害(40.38%),而正面角色(如 Stephen Hawking)只有 19.67%

  6. 角色安全平衡优化 (RBO):

  7. 做什么:用双目标损失函数同时优化角色扮演和安全
  8. 核心思路:
    • 角色扮演损失:在全量数据 \(\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}}\)
  9. 设计动机:对有害数据施加 KL 约束相当于"局部锚定",只在可能导致安全退化的数据上限制更新,不影响其他数据上的角色学习

  10. 角色特质与安全风险的关联发现:

  11. 做什么:揭示反派角色的安全退化规律
  12. 发现:Freddy Krueger (23.50% R.R.)、Gaston (44.70% R.R.) 等反派角色安全退化严重,而 Stephen Hawking (88.90%)、Queen Catherine (94.00%) 则保持较好
  13. 数据检查洞察:正面角色的"有害"数据缺乏角色特征线索,而负面角色的"有害"数据往往语气粗暴、风格夸张

损失函数 / 训练策略

  • \(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 的安全问题提供了首个系统性分析框架和实用解决方案