引言

想象一下,你是一名大学生,即将参加一门你从未学过的科目的高难度考试——比如高级天体物理学或者是某个虚构国家的历史。你有两种准备方式。选项 A: 在考前把自己关在房间里一周,背诵教科书里的每一个事实,直到头痛欲裂。选项 B: 完全不复习,但在考试时,允许你把打开的教科书放在桌上,边考边查答案。

哪种方法能拿到更高的分数?

这个类比触及了大型语言模型 (LLM) 开发中一个关键辩题的核心: 微调 (Fine-Tuning) 与检索增强生成 (Retrieval-Augmented Generation, RAG) 的对决。

像 Llama 2 或 Mistral 这样的 LLM 拥有惊人的能力,但它们的知识是静态的。它们只“知道”在初始训练期间看到的内容。如果你问它们上周发生的事情,或者你公司的具体专有数据,它们要么会产生幻觉,要么会表示不知道。为了解决这个问题,我们需要进行“知识注入”——即教预训练模型新事实的过程。

在这篇文章中,我们将深入探讨微软研究人员的一篇论文,题为 “Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs” (微调还是检索?比较 LLM 中的知识注入) 。我们将探索模型学习的机制,分析比较这两种方法的实验结果,并揭示关于 LLM 真正“记住”一个新事实所需的惊人真相。

背景: 什么是知识?

在注入知识之前,我们必须定义它对机器来说意味着什么。在这项研究的背景下,知识与之乎者也的哲学理解无关;它是关于多项选择题设置中的事实准确性。

如果一个模型“知道”一个事实,它应该始终将最高的概率分配给一组选项中的正确答案。在数学上,研究人员将模型 (\(\mathcal{M}\)) 在一组问题 (\(\mathcal{Q}\)) 上的 知识评分 (\(\mathcal{L}\)) 定义为简单的准确率:

定义知识评分为正确答案数除以总问题数的公式。

这里,\(N\) 是问题总数,\(c_n\) 是正确答案。目标不仅仅是靠运气答对几个。对于有 \(L\) 个可能答案的多项选择题,如果模型的准确率严格优于随机猜测,我们就认为该模型有效地拥有知识:

显示准确率必须大于 1 除以可能答案数量的公式。

为什么模型会失败?

即使是强大的模型也无法回答某些事实性问题。论文强调了几个原因,其中三个与我们关于知识注入的讨论最相关:

  1. 领域知识缺失 (Domain Knowledge Deficit) : 模型从未在该特定主题上进行过训练 (例如,让医学 LLM 回答法律问题) 。
  2. 过时信息 (Outdated Information) : 模型的训练数据有一个“截止日期”。如果在 2022 年训练,它不可能知道 2024 年超级碗的获胜者。
  3. 记忆缺失 (Immemorization) : 模型在训练期间见过该事实,但它出现得太少,以至于权重没有捕捉到它。

为了解决这些缺陷,我们转向我们的两位选手: 微调和 RAG。

框架: 微调 vs. RAG

研究的核心目标是找到一个转换函数 \(\mathcal{F}\),它接受一个基础模型和一个新的知识库 (文本语料库) ,并输出一个“更聪明”的模型。

显示目标的公式: 新模型 M-prime 应该比原始模型 M 具有更高的知识评分。

让我们分解实现这种转换的两种主要方法。

1. 检索增强生成 (RAG)

RAG 是“开卷考试”的方法。我们不改变模型的内部大脑 (其权重) ,而是改变我们给它的输入。

当用户提问时,系统首先充当图书管理员的角色。它在外部数据库 (知识库) 中搜索,找到与问题相关的文档。然后,它将这些文档与原始问题一起粘贴到提示 (prompt) 中。模型随后使用这个组合的上下文来生成答案。

研究人员使用了一个标准的 RAG 设置:

  • 嵌入 (Embeddings) : 他们使用预训练的嵌入模型 (bge-large-en) 将文本文档转换为向量。
  • 向量库 (Vector Store) : 这些向量存储在一个索引中 (使用 FAISS) 。
  • 检索 (Retrieval) : 当查询进入时,系统找到前 \(K\) 个最相似的文档。

2. 无监督微调 (FT)

微调是“考前突击”的方法。在这里,我们实际上更新了神经网络的权重。

研究人员特别关注 无监督微调 (也称为持续预训练) 。他们获取知识库的原始文本并将其输入模型,训练它预测下一个 token,就像在最初的预训练阶段一样。

逻辑很简单: 如果模型阅读文本语料库的次数足够多,梯度下降过程应该会调整权重以“记住”该文本中包含的信息。

可视化比较

下图展示了工作流程。用户问了一个问题 (例如,关于 2023 年底的美国总统) 。基础模型可能会失败,因为信息太新了。但是,如果我们注入知识——通过训练模型 (FT) 或将其作为上下文提供 (RAG) ——模型理论上应该能回答正确。

流程图显示基础模型回答问题失败,然后在通过辅助知识库进行知识注入后成功回答。

实验设置

为了公平地比较这些方法,研究人员需要多样化的任务。他们选择了两类截然不同的数据:

1. MMLU 基准 (既有知识)

他们选择了大规模多语言语言理解 (MMLU) 基准测试中的子任务,特别是 解剖学、天文学、生物学、化学和史前史

  • 为什么选这些? 这些是重事实的学科。它们最大限度地减少了对复杂推理的需求,并测试原始知识的存储。
  • 细微之处: 由于这些是通用主题,基础模型在最初的预训练期间可能已经见过这些信息。这测试了 FT 和 RAG “刷新”或唤起既有知识的能力。

2. “时事”数据集 (新知识)

这是实验中最关键的部分。研究人员根据 2023 年 8 月至 11 月 的美国新闻事件创建了一个自定义问题数据集。

  • 为什么这很重要: 所使用的模型 (Llama 2, Mistral, Orca 2) 的训练截止日期都在此期间 之前
  • 含义: 模型对这些事件完全没有先验知识。任何正确的答案都必须来自知识注入过程 (FT 或 RAG) ,这使得研究人员能够测试学习 完全新 事实的能力。

结果: 明显的赢家

结果是使用对数似然准确率计算的。本质上,模型查看问题和多项选择选项 (A、B、C、D) ,并计算每个选项完成句子的概率。概率最高的选项被选为答案。

显示选择具有最高概率的答案的公式。

让我们先看看在 MMLU 数据集上的表现。

表1 显示 MMLU 数据集的结果。RAG 在 Mistral、Llama2 和 Orca2 上的表现始终优于基础模型和微调模型。

如果你查看上表,一个模式立即显现出来。看看 Mistral 7B 的行。

  • 基础模型 (解剖学) : 0.556 准确率。
  • 微调后: 0.570 准确率 (微小的提升) 。
  • RAG: 0.681 准确率 (巨大的飞跃) 。

这种趋势几乎在每个主题和每个模型中都存在。为了让这更容易消化,研究人员绘制了 相对准确率增益 图——即该方法比什么都不做要好多少。

柱状图显示平均准确率增益。RAG (青色柱) 在所有三个模型中都明显高于微调 (蓝色柱) 。

结论: RAG 占据主导地位。在 “Llama2 7B” 组中,微调提供了大约 2.6% 的增益,而 RAG 提供了近 6% 的增益。对于 “Mistral 7B”,微调仅提供了微不足道的 1.4% 增益,而 RAG 提供了超过 6% 的增益。

有趣的是,结合这两者 (微调模型 使用 RAG,以绿色显示) 并不总能比单独使用 RAG 带来好处。在某些情况下,效果实际上更差。

“时事”任务的失败

当我们看时事数据集时,结果变得更加戏剧化。记住,这是模型 从未 见过的信息。

表2 显示时事结果。标准微调 (FT-reg) 几乎没有比基础模型有所改进,而 RAG 得分非常高。

看表 2 中的 Llama2 7B 列:

  • 基础模型: 0.353 (随机猜测是 0.25,所以它是根据上下文进行稍微有根据的猜测) 。
  • FT-reg (标准微调) : 0.219。

等等,什么? 在新闻文章上微调模型实际上让它 变笨 了 (跌至随机概率以下) 。这很可能是由于 灾难性遗忘 , 或者模型过度拟合了文本风格而没有学习到语义事实。

另一方面,RAG 在 Llama2 上达到了 0.585 , 在 Mistral 上达到了惊人的 0.875 。 因为 RAG 在上下文窗口中提供了答案,模型只需要执行阅读理解,这是它本来就擅长的。

重复的重要性

研究人员面临一个令人困惑的问题: 为什么微调在学习新事实方面如此失败?

我们通常假设 LLM 就像海绵——如果它们读过一次句子,它们就“知道”了。这项研究证明这种假设是错误的。研究人员假设,除非接触到事实的 变体 , 否则 LLM 很难通过无监督微调来学习新的事实信息。

为了测试这一点,他们使用 GPT-4 对时事文档进行了改写 (paraphrasing) 。他们创建了同一新闻故事的多个版本——相同的事实,不同的措辞——并在这一更大、重复性更强的数据集上微调模型。

学习曲线

首先,让我们看看训练损失。在机器学习中,“损失”代表误差。随着模型训练 5 个轮次 (Epochs,即查看数据 5 次) ,损失显著下降。

折线图显示训练损失在 5 个轮次中从超过 2.25 降至约 0.7。

下降的损失证实模型正在“记忆”文本。但是,记住文本是否意味着它足够理解事实以回答问题呢?

“改写”效应

研究人员测试了在 0 到 10 个改写版本上训练的模型。结果 (如下图所示) 完美地证实了他们的假设。

折线图显示准确率随着改写数量从 0 增加到 10 而单调增加。

这张图讲述了一个关于 LLM 如何学习的引人入胜的故事:

  • 0 次改写: 模型几乎学不到任何东西 (或变得更差) 。
  • 1-10 次改写: 准确率是重复次数的 单调递增函数 。 模型看到的关于该事实的变体越多,它回答相关问题的能力就越强。

对于 Llama-2 (绿线) , 仅仅通过看到被改写 10 次的相同事实,准确率就从大约 20% (比随机还差) 跃升至近 40%。

这支持了一个被称为“逆转诅咒” (Reversal Curse) 或泛化困难的概念。仅仅背诵一个特定的句子 (例如,“乔·拜登是总统”) 并不能自动赋予模型在多项选择语境中回答“谁是总统?”的能力。它需要看到以各种语言结构建模的关系,才能有效地内化知识。

结论: 关于知识注入的裁决

这篇论文为决定如何更新其 LLM 的学生和工程师提供了一个明确的答案。

1. RAG 是知识之王: 如果你的目标是让 LLM 回答关于特定文档、新政策或最近新闻的问题, RAG 始终更胜一筹 。 它更可靠、更容易实施,并且不需要昂贵的训练。它允许模型充当其拥有明确访问权限的数据的推理引擎。

2. 微调主要用于风格 (大部分情况下) : 无监督微调在注入孤立事实方面效率低下。除非通过大量的重复和变体反复灌输,否则模型很难整合新信息。微调可能更适合调整模型输出的 风格格式,而不是其知识库。

3. 重复是学习的关键: 如果你 必须 使用微调来教授新事实,你不能只给模型喂一次文档。你需要数据增强。你必须改写、重组并重复信息,以迫使模型学习基本概念,而不仅仅是记忆 token 序列。

对于参加考试的学生来说,建议很明确: 不要试图在考前一晚背诵教科书 (微调) 。只要把书带到考场 (RAG) 就行了。你会考得更好。