哈利波特遗忘论文阅读笔记

less than 1 minute read

Published:

大型语言模型 (LLM) 在海量互联网语料库上进行训练,这些语料库通常包含受版权保护的内容。这对这些模型的开发者和用户以及原作者和出版商构成了法律和道德挑战。本文提出了一种遗忘技术,用于从 LLM 中遗忘训练数据的子集,而无需从头开始重新训练。 本文在从 Llama2-7b 模型遗忘哈利波特书籍的任务上评估了我们的技术。在大约 1 GPU 小时的微调中,本文有效地消除了模型生成或调用哈利波特相关内容的能力,而其在常见基准测试上的表现几乎不受影响。 由三个主要部分组成:首先使用一个在目标数据上进一步训练的强化模型,通过将其逻辑与基线模型的逻辑进行比较,识别与目标最相关的标记。其次用通用的对应词替换目标数据中的特殊表达,并利用模型自身的预测为每个标记生成替代标签。这些标签旨在近似未在目标数据上训练的模型的下一个标记预测。在这些替代标签上对模型进行微调,这样每当模型被提示上下文时,就会有效地从模型的内存中删除原始文本。

本文的背景

在快速发展的人工智能和机器学习领域,大型语言模型 (LLM)的出现带来了全新的机遇和挑战。这些模型经过大量文本数据的训练,包含了大量的人类知识、语言模式和文化差异。然而,它们的庞大性和全面性也带来了许多伦理、法律和技术问题。训练大模型的语料库往往包含有问题的内容。这可能包括受版权保护的文本、有毒或恶意数据、不准确或虚假内容、个人数据等。当LLM复制、回忆这些文本,甚至受到这些文本的启发时会带来道德、法律和技术上的风险。

本文要研究的问题

在LLM训练并发布后,如何选择性地遗忘一个训练数据的子集

已有方法为什么不行

(当时的)已有方法主要侧重于通过基本的微调来添加或强化知识,但不提供“忘记”或“忘记”知识的直接机制。直接重训模型的时间和资源成本过高。

(当时的)遗忘方法主要关注分类任务,对生成模型和特定LLM的关注比较少。[[2024-12-02-Knowledge unlearning for mitigating privacy risks in language models]]主要关注降低隐私风险,kga需要知道原来的训练数据。

简单的梯度上升可能会破坏模型对于语言的理解能力,因为token并不只出现在版权保护内容中。此外简单进行梯度上升可能导致预测到版权保护的其他内容,整体而言没达到遗忘效果。

本文方法是什么

本文的基本思路是给模型提供一个遗忘内容的可用的替换项

本文首先进行遗忘的反向训练:使用需要遗忘的目标继续训练基础模型,得到所谓的强化模型。强化模型对于需要遗忘的内容的知识要比基础模型更加深刻和精确,即使提示很少或根本没有提及文本,强化模型也倾向于以与哈利·波特相关的方式完成文本。由此,只需要检查在强化模型中概率没有提升的token,就可以知道可用替换可能是什么样的。

具体而言,针对基础模型和强化模型的两个logit向量\(v_{baseline}\)和\(v_{reinforced}\),可以将通用向量定义为

\[\begin{aligned} v_{generic} &= v_{baseline}- \alpha(v_{reinforced}-v_{baseline}) \\ v_{generic} &= v_{baseline}- \alpha ReLU(v_{reinforced}-v_{baseline}) \end{aligned}\]

第二项是实际用法,基本逻辑是我们只想从强化模型中加强了的logit 向量中提取信息,增加了说明是受版权保护的内容。

本文说这种方法无法解决第二个难题,就是预测到版权保护的其他内容导致整体而言没达到遗忘效果,因此还需要第二步,通过锚定项得到通用预测。主要目标是让模型忘记哈利波特和魔法等受版权保护内容之间的连接。因此是希望能够扰动一下原来的文本,将其中一些实体替换为通用项,破坏文本中哈利波特世界的实体之间的联系,然后在其上训练模型。

因此本文使用了GPT4,要求对遗忘目标进行简单的实体提取:向GPT4提供文本的随机段落,然后让其提取文本特有的表达、名称或实体的列表,然后再为每个提供一种连贯但并非书籍独有的通用替代项,由此构建了一个小词典。词典中的键称为锚定词,值称为通用项。现在的总体思路是检查来自遗忘目标的每一段文本,用通用词替换锚定词,然后用基础模型的前向函数处理生成的文本以获得下一个标记预测。这些将充当我们的通用预测。总而言之,本文目标是将模型的下一个标记预测用于文本的通用翻译,并对模型进行微调,使它们与模型对原始文本的下一个标记预测相匹配。

总体而言,整个方法分为四个步骤:

  1. 创建一个锚定术语词典及其对应的通用翻译
  2. 将文本分成块(本文使用 512 个标记的上下文长度),对于每个块,生成通过使用强化模型处理文本获得的强化预测,以及通过翻译文本然后使用基线模型的前向传递处理文本获得的通用预测
  3. 根据前面公式组合逻辑,并采用具有最大逻辑的标记来生成通用预测标签(同时跟踪不一致性)
  4. 使用原始文本作为输入标记和通用标签作为目标标记来微调基线模型

本文怎么说明效果的

使用了常用基准WinoGrande,HellaSwag和piqa等测试模型的可用性。使用基于补全和基于token概率的方法来评估遗忘的效果:

基于补全的方法

  • 提供与哈利波特世界相关的部分信息,要求模型根据其内部知识完成信息
  • 提供公开或秘密地促使基础模型透露对书籍的熟悉程度的指令

基于token概率的方法:基于检查选定提示的完成概率。例如,对于提示“哈利波特研究”,我们验证模型不会为哈利波特特定术语(如“魔法”或“巫术”)分配高概率。我们收集了 30 个这样的提示列表,并(手动)将可能的下一个标记归类为内容特定或通用。

实验效果说明方法可以保持模型的可用性,同时补全和token概率的检测都反映出,随着微调步骤增加,模型对于哈利波特的熟悉程度逐渐下降。

可能的未来方向

其实没太看懂……中间到底是怎么替换的,但有意思的地方在于这个继续训练然后检测哪些token没上升。基本的思想还是基于遗忘的目标构建对应的对冲样本,然后在对冲样本上微调,达到遗忘效果。

但这个也不是梯度上升,只能算是通过全参数微调让模型学到了其他东西,不太能说是让模型遗忘了吧。