latent adversarial unlearning方法论文阅读笔记

less than 1 minute read

Published:

虽然LLM在许多领域取得了成功,但仍然受到训练语料库中问题内容的困扰。LLM 反学习旨在减少它们的影响并避免不良行为。然而,现有的反学习方法仍然容易受到对抗性查询的攻击,并且反学习的知识会在手动设计的攻击查询之后重新出现。作为红队主动评估反学习模型漏洞的一部分,本文设计了动态反学习攻击 (DUA),这是一个动态的自动化框架来攻击这些模型并评估其鲁棒性。它优化了对抗性后缀以在各种场景中重新引入未学习的知识。本文发现,即使不透露反学习模型的参数,55.2% 的问题也可以重现反学习的知识。为了解决这一弱点,本文提出了潜在对抗性反学习 (LAU),这是一个通用框架,可以有效增强反学习过程的鲁棒性。它将反学习过程公式化为最小-最大优化问题,并通过两个阶段解决:攻击阶段,训练扰动向量并将其添加到 LLM 的潜在空间以恢复反学习的知识;防御阶段,使用先前训练的扰动向量来增强反学习模型的鲁棒性。借助LAU框架,本文获得了两种鲁棒的反学习方法:AdvGA 和 AdvNPO。本文在多个反学习基准和各种模型上进行了广泛的实验,并证明它们将反学习效果提高了 53.5% 以上,仅导致邻近知识减少不到 11.6%,并且几乎不影响模型的一般能力。

本文的背景

大型语言模型 (LLM) 在经过大量语料库的训练后,已经取得了显著的成绩。然而,由于训练数据可能包含受版权保护、隐私和有害内容,LLM 不可避免地会学习到一些潜在的不良行为。例如,LLM 可能会未经许可重新引用受版权保护的材料^1、生成电话号码或邮寄地址等个人信息^2,甚至产生冒犯性和有害的反应^3。这些不良行为带来了安全问题和信息危害,阻碍了 LLM 在现实场景中的部署。

为了消除语料库中的问题内容对 LLM 的影响,机器反学习已成为一种有前途的解决方案。它将模型转换为好像它们从未在某些数据条目上进行过训练一样,这样特定的目标知识就会被抹去,而 LLM 的其他知识和能力则会被保留。

本文研究的问题

问题一

已有方法产生的反学习模型很脆弱,容易受到精心设计的对抗性用户提示的影响。特别是,以前反学习的知识会通过上下文交互重新出现。

例如,在被训练忘记著名作家 J.K. 罗琳之后,该模型无法回答“谁是《哈利波特》的作者?”这个问题,但仍然输出了“谁创造了包括对角巷和禁林的魔法世界?”这个问题的正确答案。

问题二

为了主动评估反学习模型对这些恶意提示的脆弱性,相关工作会使用静态和手动设计的对抗性提示来重新引入反学习的知识。然而,这种手动过程耗费资源,并且通常无法保证成功重新引入以前反学习的知识。

已有方法为什么不行

已有的大模型反学习方法主要通过梯度上升完成,或者设计本地化方法来定位并抑制不良信息相关的神经元。但是,现有的遗忘方法的遗忘效果比较脆弱,容易受到对抗性提示的攻击。

已有的越狱攻击方法包括设计人工制作的对抗性提示,或者探索基于梯度优化或遗传方法自动生成提示。然而,越狱攻击方法主要关注的是引入有害行为而不是引发模型复现反学习的知识

本文的方法

本文首先设计了一个动态遗忘攻击框架来评估遗忘后模型的鲁棒性,然后设计了潜层对抗遗忘框架进行更加鲁棒的遗忘训练。

基本场景是给定一个大模型\(\pi_{\theta}\)和一个数据集\(D=\{(x_i,y_i)\vert i=1,2,...,N\}\),其中的一个子集是遗忘集\(D_f\),剩余数据作为保留集\(D_r=D\setminus D_f\)。目标是训练一个模型,尽可能接近只用保留集训练出的模型的效果。

动态遗忘攻击框架

动态遗忘框架首先优化后缀token以最大化生成遗忘知识的概率。考虑一个问题\(x_{[0,m]}\),目的是找到一个对抗后缀\(q_{[0,n)}\),让模型生成包含遗忘知识的回答\(y_{[1,H)]}\)的概率最大,整个优化过程可以表示为

\[\min_{q_{[0,n)]}\in\{1,...,V\}}-\log\Pi_{i=0}^{H-1}p(y_{[0,i+1)]}\vert [x_{1:m};q_{1:n+i-1};y_{[0,i)]}])\]

可以描述为在输入输出对中添加一个后缀,然后最大化加入后缀后生成目标输出的概率。在每步优化中,本文使用token的梯度来确定一组候选token,然后逐个token评估,最终选择最优token。本文为所有输入优化同一个后缀,最终得到一个可以为所有输入使用的通用攻击后缀。

然后本文考虑两个问题,首先是模型是否可以获得,其次是数据是否可以获得。模型可得性考虑两种场景,第一种是遗忘后的模型可以访问,另一种是不能访问遗忘后模型,只能访问原模型。数据可得性这里考虑三种场景,测试数据可得,可以直接用测试数据训练的Within Query场景;测试数据不可得,遗忘目标可得,因此需要根据遗忘目标生成训练数据的Cross Query场景;以及遗忘目标不可得,训练数据需要使用其他遗忘任务的问题来获得的Cross Target场景。

对于Cross Query场景,本文使用了GPT-4来生成训练数据。对于Cross Target场景,本文使用了5个额外的遗忘模型和对应的知识探测问题来训练对抗问题。

潜层对抗遗忘框架

对抗遗忘框架的训练目标可以简单描述为最小-最大博弈

\[\max_{\theta}\mathbb{E}_{(x_f,y_f)\in D_f}\left[\min_{\epsilon\in T(x_f)}\mathcal{L}(\pi_{\theta}(x_f+\epsilon),y)\right]\]

\(T(x_f)\)是由攻击方法生成的对抗扰动集合。内部最小化过程旨在识别有效绕过模型限制并激活被遗忘知识的对抗性查询。外部最大化致力于抑制这些对抗性查询中被遗忘的知识的重新出现。

为了避免优化对抗查询(因为token空间太大了),本文提出潜层对抗遗忘。其核心思想是,任何类型的对抗性查询都会对LLM的潜在空间造成扰动,可能导致被遗忘的知识重现。因此本文直接向 LLM 的潜在空间添加扰动,从而避免了输入空间的广泛优化。因此训练目标可以形式化表示为

\[\max_{\theta}\mathbb{E}_{D_f}\left[\min_{\delta}\mathcal{L}(\pi_{\theta_2}(\pi_{\theta_1}(x_f)+\delta_{x_f}),y_f)\right], \text{s.t.}\quad\Vert\delta_{\theta_{x_f}}\Vert\leq k\]

意思是在使用原输入进行计算的时候,在中间层中添加扰动,于是得到了添加扰动之后的输出。对于每个batch,使用扰动向量的梯度更新固定步数来优化扰动向量。然后使用添加了扰动向量的优化结果的梯度,使用梯度下降来优化模型参数。

也就是说先固定模型参数,然后优化扰动向量,完成这个min的过程。然后固定扰动向量,优化模型参数,完成max的过程。

最后损失计算方法这里文中利用了两种方法,梯度上升和NPO方法。梯度上升的目标函数表示为

\[\min_{\pi_{\theta}}-\mathbb{E}_{D_f}\min_{\delta}L(\pi_{\theta_2}(\pi_{\theta_1}(x)+\delta,y))\]

NPO的目标函数表示为

\[\min_{\pi_{\theta}}-\frac{2}{\beta}\mathbb{E}_{D_f}\left[\log\left(1+\left(\frac{\min_{\delta}L(\pi_{\theta_2}(\pi_{\theta_1}(x)+\delta,y))}{L(\pi_{ref}(x,y))}\right)^{\beta}\right)\right]\]

本文如何说明效果

本文在RWKU数据集上进行了测试,并根据基本方法+是否添加正则+是否使用对抗框架共构建了12类遗忘方法,在LLaMa-3和3.1的8B模型上进行了测试。对抗框架明显提升了遗忘效果,并且在剩余数据的可用集上的性能保持在和重训前基本一致。

在不同层添加扰动的实验结果说明在模型较后的层中添加扰动对模型可用性的影响较小,在遗忘集和相邻集上的表现都是先有下降(相邻集没那么明显)。

使用对抗遗忘训练之后模型对攻击的鲁棒性有明显上升。

可能的未来方向

所以到底为什么脆弱?