先遗忘后学习:基于参数计算的大模型知识更新

大型语言模型(LLMs)的文本理解和生成能力确实令人惊叹。但一个不争的事实是,即使是目前最强大的模型,也难免从训练数据中“学到”一些错误的信息,或者随着时间推移,原本正确的知识变得过时。比如,直接用新知识去微调模型,效果往往不尽如人意——新旧知识会“打架”。针对这个问题,我们提出了一种名为F-Learning(先遗忘后学习)的新微调范式。它的核心思路很简单:基于参数计算,先让模型忘掉旧知识,再学习新知识。在两个公开数据集上的实验表明,无论是全量微调还是LoRA微调,F-Learning都能显著提升知识更新的效果。更值得关注的是,我们发现通过减去LoRA参数来“遗忘”,其效果竟能媲美甚至超越全量微调。
论文:
Forgetting before Learning: Utilizing Parametric Arithmetic for Knowledge Updating in Large Language Models
地址:
https://arxiv.org/pdf/2311.08011.pdf
研究背景
大型语言模型(LLMs)的强大毋庸置疑,但一个始终存在的挑战是:如何优雅地更新它们脑中的知识?毕竟,现实世界的信息是动态变化的。比如,问“美国总统是谁?”,2020年的答案是“唐纳德·特朗普”,而现在的答案是“乔·拜登”。模型需要不断更新这些过时或错误的信息。现有的模型编辑或知识更新方法,常常需要引入额外的参数、存储模块或知识库,操作起来并不像直接微调那么直观和简便。
目前,最常用的学习新知识的方法仍然是直接微调。但这里面有个问题:当人类已经建立起某种初始认知,再去接触与之矛盾的新知识时,会本能地感到抵触。举个例子,如果一个人从小被教育“地球是扁平的”,成年后要接受“地球是圆的”这个事实,其难度可想而知。但如果能让这个人先忘记“地球是扁平的”这个错误认知,再学习正确知识,一切就简单多了。
受这个生活经验的启发,我们提出了F-Learning(先遗忘后学习)这一新范式。具体操作分为两步:首先,用旧知识微调模型,然后从原始模型参数中减去微调后模型参数与原始模型参数的差值——这一步就是“旧知识遗忘”。接着,在已经“遗忘”过的模型上,用新知识进行微调——这是“新知识学习”。经过这两个阶段,模型的知识就完成了更新。
研究方法
与那些需要引入外部知识库或额外参数的方法不同,我们的方法完全基于全量微调和参数高效微调,核心就两个阶段:遗忘旧知识,学习新知识。
遗忘旧知识
有监督微调(SFT)会向LLM注入新知识或激活相关能力,这最终会体现在模型参数的变化上。对于给定的模型及其参数,我们定义增量参数为“知识参数”,计算方式如下:
其中,FT代表有监督微调,(这里补充了公式中缺失的变量说明,通常包括数据集和原始模型参数)。类似地,我们首先在一个包含旧知识的数据集上对模型进行微调,然后用微调后的模型参数减去原始模型参数,得到表示旧知识的知识参数:
这里的(数据集)包含了我们需要遗忘的旧知识。受前人工作的启发,我们认为从原始参数θ中减去这个知识参数,可以帮助模型遗忘。因此,遗忘过程可以定义为:
其中λ是控制遗忘比例的超参数。这样我们就得到了一个参数为的新模型。需要特别说明的是,这个遗忘过程只有在模型已经充分掌握了旧知识的前提下才有效——如果模型本来就没学好,那就不存在遗忘和更新的必要了。
学习新知识
在经过遗忘旧知识这一步后,我们就可以通过有监督微调来向模型注入新知识,完成知识更新。这个过程同样可以表示为:
其中,表示学习了新知识后的模型参数,表示包含新知识的数据集。
实验
实验部分,我们选用了ZsRE和COUNTERFACT这两个广泛使用的数据集,并以Reliability(可靠性)、Generality(泛化性)和Locality(局部性,即对无关知识的影响程度)作为主要评测指标。我们直接将原始模型用新知识进行有监督微调的结果作为基线。实验结果如下:
我们以LLAMA2-7B作为基础模型,重点关注将旧知识更新为新知识的能力。因此,模型会先在旧知识上微调3个epoch。表1中F-Learning的超参数λ分别取值为0.3、0.7、0.1和1.5。所有实验的学习率设为5e-5,epoch设为3。测试时,为保证模型输出唯一性,将温度参数设为0。硬件方面,我们使用了4块A100-80G GPU。
实验结果表明,在首次遗忘之后,无论是全量微调还是LoRA,学习能力都有显著提升。具体来说,与直接全量微调相比,F-Learning FT在ZsRE数据集上将Reliability和Generality分别提升了2.71和4.84个百分点,而Locality指标基本保持不变,仅下降了0.43点。与直接LoRA微调相比,F-Learning LoRA的提升更为明显:在ZsRE数据集上,Reliability、Generality和Locality分别提升了3.81、4.01和1.67个百分点。在COUNTERFACT数据集上,F-Learning LoRA相比直接全量微调,也分别提升了3.54、1.48和0.07个百分点。总体来看,全量微调的学习能力强于LoRA,而我们的F-Learning在两者基础上都取得了进一步的提升。
LoRA遗忘,然后全量学习
在上述实验中,我们采用的是全量微调(或LoRA)同时进行遗忘和学习。但我们发现,在某些情况下,通过减去全量微调的知识参数(即全量微调遗忘)会严重破坏模型的核心功能,导致评估指标大幅下降。既然LoRA是一种参数高效的微调方法,对参数的影响远小于全量微调,我们尝试了一种新策略:用LoRA遗忘旧知识,再用全量微调学习新知识,以期找到平衡。这个过程定义如下:
实验结果(如表2所示)支持了我们的猜想。在表2中,F-Learning的超参数λ分别取值为0.3、3、0.1和3。结果显示,“LoRA遗忘+全量微调学习”的方法完全超越了直接的全量微调,甚至逼近或超越了“全量遗忘+全量学习”的方法。具体来说,与F-Learning FT相比,F-Learning LoRA−FT在COUNTERFACT数据集上将Reliability和Generality分别大幅提升了9.20和6.11个百分点。虽然在ZsRE数据集上表现略低1-2个百分点,但相比传统全量微调仍有巨大优势,且存在提升空间。至于Locality指标,F-Learning LoRA−FT在两个数据集上都取得了约1个百分点的提升。我们推测,这主要是因为基于LoRA的遗忘对模型参数的影响较小,从而对无关知识造成的损害也更小。实验证明,通过减去LoRA的参数进行遗忘,可以达到近似于减去全量微调参数的效果,这一点意义重大——毕竟,在大多数情况下,LoRA的时间成本和计算成本都远低于全量微调。

总结
本工作的主要贡献可以概括为三点:
- 提出了一种新颖的大模型知识更新微调范式,即“先遗忘后学习”(F-Learning)。
- 实验证明,F-Learning能显著提升多种微调方法的知识更新性能。
- 实验发现,通过减去LoRA的参数进行遗忘,可以达到近似于减去全量微调参数的效果。
