Atyaephyra at SemEval-2025 Task 4: Low-Rank Negative Preference Optimization¶
会议: ACL 2025
arXiv: 2503.13690
代码: https://github.com/XelfXendr/peft_unlearning
领域: LLM对齐 / 机器遗忘
关键词: 机器遗忘, NPO, LoRA, KL正则化, OLMo
一句话总结¶
在 SemEval 2025 LLM 遗忘共享任务中,将负偏好优化 (NPO) 与低秩适配 (LoRA) 结合,利用 LoRA 的结构特性零开销获取原始模型分布来计算 KL 散度正则化,显著稳定了遗忘过程并超越了任务基线。
研究背景与动机¶
- 领域现状:LLM 训练在海量数据上后会记住训练数据中的敏感信息(如版权内容、个人隐私),GDPR 等法规要求"被遗忘权"。从头重训代价极高,机器遗忘 (machine unlearning) 旨在通过微调来移除特定知识。
- 现有痛点:基于梯度上升 (GA) 的遗忘方法容易破坏模型的整体效用;NPO 改善了这一点但需要维护一份原始模型副本来计算参考概率,内存开销加倍;同时大多数方法基于全参数微调,计算成本高。
- 核心矛盾:既要高效遗忘又要保持模型效用,还要在计算和内存上尽可能高效。
- 本文要解决什么? 将 NPO 与 LoRA 结合,利用 LoRA 的结构优势在零额外内存开销下实现高质量遗忘。
- 切入角度:关键洞察——LoRA 中原始权重被冻结保留,需要计算原始模型输出时只需禁用 LoRA 层即可,无需额外存储模型副本。
- 核心 idea 一句话:LoRA 中原始权重天然保留,禁用 LoRA 即可获取参考模型的输出分布,从而零开销实现 NPO + KL 正则化遗忘。
方法详解¶
整体框架¶
对已微调的 OLMo-7B 模型进行遗忘: - 在模型注意力层加入 LoRA 适配器(rank=5) - 仅训练 LoRA 参数,冻结原始权重 - 每个 batch 做两次前向传播:(1) 启用 LoRA 计算保留损失;(2) 禁用 LoRA 获取参考模型输出,计算 NPO 损失和 KL 正则化
关键设计¶
- NPO + LoRA 组合:
- 做什么:用 NPO 损失替代简单梯度上升来遗忘,同时用 LoRA 做参数高效微调
- 核心思路:NPO 损失 \(\mathcal{L}_{NPO}(\theta;\beta) = \mathbb{E}_{\mathcal{D}_{FG}}[\frac{2}{\beta}\log(1+(\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)})^\beta)]\),其中 \(\pi_{ref}\) 需要原始模型输出。传统做法需要存储原始模型副本,但 LoRA 中冻结的原始权重就是 \(\pi_{ref}\)——禁用 LoRA 层即可获取
-
设计动机:NPO 比 GA 更稳定(已被证明),LoRA 减少内存,二者结合解决了需要双模型的内存瓶颈
-
KL 散度正则化 (\(\mathcal{K}_{RT}\)):
- 做什么:在保留集上最小化当前模型与原始模型输出分布的 KL 散度
- 核心思路:\(\mathcal{K}_{RT}(\theta) = \mathbb{E}_{\mathcal{D}_{RT}}[KL(\pi_\theta(\cdot|x) || \pi_{ref}(\cdot|x))]\),需要完整的输出分布(不只是特定 token 的概率),因此无法预计算
-
设计动机:保留损失 \(\mathcal{L}_{RT}\) 只确保模型在保留集上的预测准确,但不约束输出分布的整体形状;KL 正则化进一步确保分布不偏移,稳定长期训练
-
总损失函数:
- \(\mathcal{L}(\theta;\beta,\gamma,\delta) = \mathcal{L}_{NPO}(\theta;\beta) + \gamma\mathcal{L}_{RT}(\theta) + \delta\mathcal{K}_{RT}(\theta)\)
- 三项分别负责:遗忘目标数据、保留非目标数据的准确性、保持模型分布不偏移
训练策略¶
- \(\beta=0.5\), LoRA rank \(r=\alpha=5\),学习率 \(10^{-4}\),batch size 4
- 在 \((\gamma, \delta)\) 空间搜索:(1,0), (1,0.5), (1,1.0), (0,1.0)
- 每组配置跑 5 个不同种子,报告均值和标准差
实验关键数据¶
主实验 (OLMo-7B)¶
| 配置 | Epoch | Task Score↑ | MIA Score↑ | MMLU↑ | Final Score↑ |
|---|---|---|---|---|---|
| γ=1,δ=0 (无KL) | 10 | 0.431 | 0.657 | 0.461 | 0.516 |
| γ=1,δ=0.5 | 20 | 0.434 | 0.594 | 0.439 | 0.489 |
| γ=1,δ=1.0 | 20 | 0.453 | 0.620 | 0.449 | 0.507 |
| γ=0,δ=1.0 (仅KL) | 10 | 0.369 | 0.699 | 0.441 | 0.503 |
| Baseline NPO | - | 0.021 | 0.080 | 0.463 | 0.188 |
| Baseline GD | - | 0.000 | 0.382 | 0.348 | 0.243 |
消融:KL 正则化的效果¶
| 配置 | 10 epoch Final | 20 epoch Final | 稳定性(σ) |
|---|---|---|---|
| γ=1,δ=0 (无KL) | 0.516 | 0.429↓ | 高方差 |
| γ=1,δ=1.0 (有KL) | 0.327 | 0.507↑ | 更稳定 |
关键发现¶
- 所有配置都大幅超越任务基线(Final Score 0.489-0.516 vs 0.188-0.243)
- KL 正则化 (\(\delta>0\)) 使遗忘过程更稳定——无 KL 时长训 20 epochs 会退化,有 KL 时 20 epochs 反而更好
- 保留损失 \(\mathcal{L}_{RT}\) 对维持 MMLU 分数很重要——去掉后 MMLU 下降更多
- LoRA 的"双模型合一"特性是关键——在 NPO+KL 场景下实现了零额外内存获取参考模型输出
- 不同随机种子下方差较大(尤其是 MIA Score),说明遗忘过程固有不稳定性
亮点与洞察¶
- LoRA 的结构巧用:不只是为了参数高效,更利用其"冻结原始权重"的特性免费获取参考模型输出,这是非常优雅的洞察——以往需要两份模型的场景,用 LoRA 一份就够
- KL 正则化稳定遗忘:遗忘和保留是天然矛盾的目标,KL 散度约束充当"安全带",防止模型在长期训练中偏离太远
- 超小 LoRA rank (r=5) 就够用:说明遗忘所需的参数变化空间很小,进一步支持了参数高效方法在遗忘任务中的适用性
局限性 / 可改进方向¶
- 仅在 OLMo-7B 上验证,未测试其他架构(如 Llama、Mistral)
- 不同种子下方差很大,说明方法的稳定性还有待改进
- 超参数 \((\beta, \gamma, \delta)\) 的选择缺乏理论指导,主要靠网格搜索
- 仅测试了英文遗忘任务,多语言场景未知
- 未探索更大 LoRA rank 或 QLoRA 等变体
相关工作与启发¶
- vs 原版 NPO (Zhang et al.):原版用全参数微调 + 额外存储参考模型,本文用 LoRA 大幅减少内存并利用结构特性避免双模型
- vs TOFU (Maini et al.):TOFU 也用 KL 正则化,但本文展示了 LoRA 如何让 KL 计算变得零开销
- vs Gradient Ascent:GA 在共享任务基线中 Final Score 仅 0.243,NPO+LoRA 达到 0.516,说明 NPO 的优势在实践中非常显著
- LoRA 在遗忘任务中的结构优势(免费参考模型)可以推广到其他需要 DPO/RLHF 的偏好优化场景
评分¶
- 新颖性: ⭐⭐⭐⭐ NPO+LoRA 组合虽然各自不新但结合思路巧妙,"禁用LoRA获取参考模型"是优雅的工程洞察
- 实验充分度: ⭐⭐⭐ 仅在一个模型上验证,多种子多超参数实验但方差较大
- 写作质量: ⭐⭐⭐⭐ 数学推导清晰,方法动机阐述明确
- 价值: ⭐⭐⭐⭐ 对 LLM 遗忘领域的实践者有直接参考价值,LoRA 结构利用思路可迁移