大语言模型(LLM)综述
正如缩放定律(Scaling Laws )所预测的那样, LLM 的通用语言理解和生成能力 是通过在大量文本 数据上训练数十亿个模型参数获得的。基于 Transformer 的大型语言模型 (LLM) 的最新进展(在 Web 规模的文本语料库上进行预训练)显著扩展了语言模型 (LLM) 的功能。 例如,OpenAI 的 ChatGPT 和 GPT-4 不仅可以用于自然语言处理,还可以作为通用任务求解器来为 Microsoft 的 Co-Pilot 系统提供支持,例如,可以按照人类的指令执行复杂的新任务,并在需要时执行多步骤推理。因此,LLM 正在成为开发通用 AI 代理或通用人工智能 (AGI) 的基本构建块。
大语言模型的四波浪潮:统计语言模型、神经语言模型、预训练语言模型和 LLM
-
统计语言模型 (SLM) 将文本视为单词序列,并将文本的概率估计为这些单词概率的乘积。SLM 的主要形式是马尔可夫链模型,即 n-gram 模型,它计算一个单词在其紧接着的 n − 1 个单词条件下的概率。
-
早期的神经语言模型 (NLM) 通过将单词映射到低维连续向量(嵌入向量)来处理数据稀疏性,并使用神经网络根据其前一个单词的嵌入向量的聚合来预测下一个单词。NLM 学习到的嵌入向量定义了一个隐藏空间,其中向量之间的语义相似度可以很容易地计算为它们的距离。这为计算任何两个输入的语义相似度打开了大门,无论它们的形式(例如,Web 搜索中的查询与文档、机器翻译中不同语言的句子)或模态(例如,图像字幕中的图像和文本)。早期的 NLM 是特定于任务的模型,因为它们是在特定于任务的数据上进行训练的,并且它们学习到的隐藏空间是特定于任务的。
-
与早期的 NLM 不同,预训练语言模型 (PLM) 与任务无关。这种通用性还扩展到学习到的隐藏嵌入空间。PLM 的训练和推理遵循预训练和微调范式,其中使用循环神经网络或 Transformer的语言模型在 Web 规模的未标记文本语料库上进行预训练,以完成单词预测等一般任务,然后使用少量(标记的)特定于任务的数据进行微调以完成特定任务。
-
大型语言模型 (LLM)主要指基于 Transformer 的神经语言模型,包含数百亿到数千亿个参数,在海量文本数据上进行预训练,例如 PaLM、LLaMA 和 GPT-4。与 PLM 相比,LLM 不仅模型规模更大,而且表现出更强的语言理解和生成能力,更重要的是,它还具有小规模语言模型所不具备的新兴能力。如图 1 所示,这些新兴能力包括 (1) 情境学习(In-context Learning) ,LLM 在推理时从提示中呈现的一小组Prompt中学习新任务;(2) 指令遵循 ,LLM 在指令调整后,无需使用明确的示例即可遵循新类型任务的指令; (3) 多步骤推理 ,LLM 可以通过将复杂任务分解为中间推理步骤来解决该任务,如思路链提示中所示 。LLM 还可以通过使用外部知识和工具 进行增强,以便它们能够有效地与用户和环境 [37] 交互,并使用通过交互收集的反馈数据不断改进自身(例如通过带有人工反馈的强化学习 (RLHF))。
通过高级使用和增强技术,LLM 可以部署为所谓的 AI 代理(Agent):感知环境、做出决策并采取行动的人工实体。 先前的研究主要集中在为特定任务和领域开发代理。LLM 所展示的新兴能力使得基于 LLM 构建通用 AI 代理成为可能。虽然 LLM 经过训练可以在静态设置中产生响应,但 AI 代理需要采取行动与动态环境进行交互。因此,基于 LLM 的代理通常需要增强 LLM,例如从外部知识库获取更新的信息,验证系统操作是否产生预期结果,并应对事情不按预期进行的情况等。
本文内容结构:
- 回顾一些最著名的 LLM,包括三个流行的 LLM 系列(GPT、LLaMA、PaLM),并讨论了它们的特点、贡献和局限性
- 概述为构建和增强 LLM 而开发的技术
- 调查为 LLM 训练、微调和评估准备的流行数据集,回顾了广泛使用的 LLM 评估指标,并在一组代表性基准上比较了几种流行的 LLM 的性能
- 讨论开放的挑战和未来的研究方向
一、大型语言模型LLM系列:
(一)早期预训练神经语言模型
我们根据早期流行的基于 Transformer 的 PLM 的神经架构,将其分为三大类:仅编码器(Encoder-only)、仅解码器(Decoder-only)和编码器-解码器模型(Encoder-Decoder)。
-
Encoder-only :顾名思义,仅编码器模型仅由编码器网络组成。这些模型最初是为语言理解任务开发的,例如文本分类,其中模型需要预测输入文本的类标签。代表性的仅编码器模型包括 BERT 及其变体,例如 RoBERTa、ALBERT、DeBERTa、XLM、XLNet、UNILM。BERT(双向编码器表示,来自 Transformers)[24] 是最广泛使用的仅编码器语言模型之一。BERT 由三个模块组成:(1)嵌入模块,将输入文本转换为嵌入向量序列;(2)Transformer 编码器堆栈,将嵌入向量转换为上下文表示向量;(3)全连接层,将表示向量(在最后一层)转换为独热向量。 BERT 是经过预训练的,使用两个目标:掩码语言建模 (MLM) 和下一句预测 。
Encoder-only LLM擅长捕捉输入文本中的语义和上下文信息,通过双向编码获取全局信息,因此在需要深度理解输入内容的任务中表现优异。
-
Decoder-only :最广泛使用的两种仅解码器的 PLM 是 OpenAI 开发的 GPT-1 和 GPT-2。这些模型为随后更强大的 LLM(即 GPT-3 和 GPT-4)奠定了基础。适合生成任务。
Decoder-only LLM的自回归结构使它能够更好地生成顺序文本,因此在需要生成自然流畅文本的任务中效果很好。它通过逐步生成词汇,能够很好地保持上下文连贯性。
-
Encoder-Decoder :几乎所有 NLP 任务都可以转换为序列到序列生成任务。因此,编码器-解码器语言模型在设计上是一个统一的模型,因为它可以执行所有自然语言理解和生成任务。代表性编码器-解码器是 T5、mT5、MASS 和 BART 。
Encoder-Decoder LLM结合了编码器的深度理解能力和解码器的生成能力,适合需要对输入文本进行理解后再生成输出的任务。这使得它在需要对输入进行复杂变换的任务中表现出色,如翻译和文本摘要。
(二)大型语言模型家族
大型语言模型 (LLM) 主要指基于 Transformer 的 PLM,包含数百亿到数千亿个参数。与上面回顾的 PLM 相比,LLM 不仅模型规模大得多,而且表现出更强的语言理解和生成能力以及小规模模型所不具备的突发能力。接下来,我们将回顾三个 LLM 系列:GPT、LLaMA 和 PaLM。
A.The GPT Family
生成式预训练 Transformer (GPT) 是 OpenAI 开发的一系列仅用于解码器的基于 Transformer 的语言模型。该系列包括 GPT-1、GPT-2、GPT-3、InstrucGPT、ChatGPT、GPT-4、CODEX 和 WebGPT。尽管早期的 GPT 模型(例如 GPT-1 和 GPT-2)是开源的,但最近的模型(例如 GPT-3 和 GPT-4)是闭源的,只能通过 API 访问。
GPT-3 是一个经过预训练的自回归语言模型,具有 1750 亿个参数。GPT-3 被广泛认为是第一个 LLM,因为它不仅比以前的 PLM 大得多,而且首次展示了以前较小的 PLM 中未观察到的新兴能力。GPT3 展示了上下文学习的新兴能力,这意味着 GPT-3 可以应用于任何下游任务,而无需任何梯度更新或微调,任务和小样本演示纯粹通过与模型的文本交互来指定。GPT-3 在许多 NLP 任务中取得了出色的表现,包括翻译、问答和完形填空任务,以及一些需要即时推理或领域自适应的任务,例如解读单词、在句子中使用新词、三位数算术。图中绘制了 GPT-3 的性能与上下文提示中示例数量的关系。
OpenAI 于 2023 年 3 月发布的 CODEX [57] 是一种通用编程模型,可以解析自然语言并生成代码作为响应。CODEX 是 GPT-3 的后代,经过微调,可在从 GitHub 收集的代码语料库上编写应用程序。CODEX 为微软的 GitHub Copilot 提供支持。 WebGPT是 GPT-3 的另一个后代,经过微调,可以使用基于文本的 Web 浏览器回答开放式问题,方便用户搜索和浏览网页。具体来说,WebGPT 分三步进行训练。第一步是让 WebGPT 学习使用人类演示数据模仿人类的浏览行为。然后,学习奖励函数来预测人类的偏好。最后,通过强化学习和拒绝采样对 WebGPT 进行改进,以优化奖励函数。为了使 LLM 能够遵循预期的人类指令,提出了 InstructGPT [59],通过对人类反馈进行微调,使语言模型与用户意图在各种任务上保持一致。从一组标注员编写的提示和通过 OpenAI API 提交的提示开始,收集所需模型行为的标注员演示数据集。然后,GPT-3 在该数据集上进行微调。然后,收集人类排名的模型输出数据集,以使用强化学习进一步微调模型。该方法称为从人类反馈中进行强化学习( Reinforcement Learning from Human Feedback (RLHF))
LLM 发展最重要的里程碑是 2022 年 11 月 30 日推出 ChatGPT(聊天生成预训练 Transformer)[60]。ChatGPT 是一个聊天机器人,它使用户能够引导对话以完成各种任务,例如问答、信息查找、文本摘要等。ChatGPT 由 GPT-3.5(后来由 GPT-4 提供支持)提供支持,它是 InstructGPT 的姊妹模型,经过训练可以遵循提示中的指令并提供详细的响应。 GPT-4 是 GPT 家族中最新、最强大的 LLM。GPT-4 于 2023 年 3 月推出,是一种多模式 LLM,它可以将图像和文本作为输入并生成文本输出。尽管在一些最具挑战性的现实场景中,GPT-4 的能力仍然不如人类,但它在各种专业和学术基准上都表现出了人类水平的表现,包括以约 10% 的成绩通过模拟律师资格考试,如图所示。与早期的 GPT 模型一样,GPT-4 首先经过预训练以预测大型文本语料库中的下一个标记,然后使用 RLHF 进行微调,以使模型行为与人类期望的行为保持一致。
B. The LLaMA Family
LLaMA 是 Meta 发布的一系列基础语言模型。与 GPT 模型不同,LLaMA 模型是开源的,即模型权重以非商业许可的形式发布给研究社区。因此,LLaMA 系列发展迅速,因为这些模型被许多研究小组广泛用于开发更好的开源 LLM 来与闭源 LLM 竞争,或者为任务关键型应用开发特定任务的 LLM。第一套 LLaMA 模型于 2023 年 2 月发布,参数范围从 7B 到 65B。这些模型在从公开数据集中收集的数万亿个 token 上进行了预训练。LLaMA 使用 GPT-3 的 Transformer 架构,并对架构进行了一些小的修改,包括 (1) 使用 SwiGLU 激活函数代替 ReLU,(2) 使用旋转位置嵌入代替绝对位置嵌入,以及 (3) 使用均方根层归一化代替标准层归一化 。开源 LLaMA-13B 模型在大多数基准测试中都优于专有的 GPT-3 (175B) 模型,使其成为 LLM 研究的良好基准。
2023 年 7 月,Meta 与微软合作发布了 LLaMA-2 系列 [61],其中包括基础语言模型和针对对话进行微调的聊天模型,称为 LLaMA-2 聊天。据报道,LLaMA-2 聊天模型在许多公共基准测试中的表现优于其他开源模型。图 12 显示了 LLaMA-2 聊天的训练过程。该过程从使用公开的在线数据对 LLaMA-2 进行预训练开始。然后,通过监督微调构建 LLaMA-2 聊天的初始版本。随后,使用 RLHF、拒绝采样和近端策略优化迭代细化模型。在 RLHF 阶段,积累用于修改奖励模型的人为反馈至关重要,以防止奖励模型发生过多变化,这可能会损害 LLaMA 模型训练的稳定性。
Alpaca 是使用 GPT-3.5 (text-davinci-003) 以自学风格生成的 52K 指令跟踪演示对 LLaMA-7B 模型进行微调而得的。Alpaca 的训练成本非常低,尤其是对于学术研究而言。在自学评估集上,尽管 Alpaca 的规模要小得多,但其表现与 GPT-3.5 相似。
Vicuna 团队通过收集自 ShareGPT的对用户共享对话中的 LLaMA 进行微调,开发了 13B 聊天模型 Vicuna13B。使用 GPT4 作为评估器的初步评估表明,Vicuna-13B 的质量达到了 OpenAI 的 ChatGPT 和 Google 的 Bard 的 90% 以上,同时在 90% 以上的情况下优于 LLaMA 和 Stanford Alpaca 等其他模型。图 13 显示了 GPT-4 对 Vicuna 和其他一些知名模型的相对响应质量。Vicuna-13B 的另一个优势是其对模型训练的计算需求相对有限。Vicuna-13B 的训练成本仅为 300 美元。
与 Alpaca 和 Vicuna 一样,Guanaco 模型也是使用指令跟踪数据微调的 LLaMA 模型。但使用 QLoRA 可以非常高效地进行微调,因此可以在单个 48GB GPU 上对 65B 参数模型进行微调。QLoRA 通过冻结的 4 位量化预训练语言模型将梯度反向传播到低秩适配器 (LoRA)。最好的 Guanaco 模型在 Vicuna 基准上的表现优于所有之前发布的模型,达到了 ChatGPT 性能水平的 99.3%,而只需要在单个 GPU 上进行 24 小时的微调。
Koala 是另一个基于 LLaMA 构建的指令遵循语言模型,但特别关注交互数据,包括用户输入和由 ChatGPT 等功能强大的闭源聊天模型生成的响应。根据基于真实用户提示的人工评估,Koala-13B 模型的表现可与最先进的聊天模型相媲美。
Mistral-7B是一个 7B 参数语言模型,旨在实现卓越的性能和效率。Mistral-7B 在所有评估基准中的表现均优于最佳开源 13B 模型 (LLaMA-2-13B),并且在推理、数学和代码生成方面优于最佳开源 34B 模型 (LLaMA-34B)。该模型利用分组查询注意功能实现更快的推理,并结合滑动窗口注意功能,以降低推理成本,有效处理任意长度的序列。
LLaMA 家族正在迅速壮大,越来越多的指令跟随模型建立在 LLaMA 或 LLaMA2 之上,其中包括 Code LLaMA、Gorilla、Giraffe、Vigogne、Tulu 65B、Long LLaMA和 Stable Beluga2,仅举几例。
C. The PaLM Family
PaLM(Pathways 语言模型)系列由 Google 开发。第一个 PaLM 模型 于 2022 年 4 月发布,并一直保持私有状态,直到 2023 年 3 月。它是一个基于 540B 参数转换器的 LLM。该模型在由 7800 亿个 token 组成的高质量文本语料库上进行了预训练,这些 token 涵盖了广泛的自然语言任务和用例。PaLM 是在 6144 TPU v4 芯片上使用 Pathways 系统预训练的,该系统可在多个 TPU Pod 上实现高效训练。 PaLM 通过在数百个语言理解和生成基准上实现最先进的少量学习结果,展示了扩展的持续优势。PaLM540B 不仅在一系列多步推理任务上超越了最先进的微调模型,而且在最近发布的 BIG-bench 基准上也与人类不相上下。
8B、62B 和 540B 规模的 U-PaLM 模型使用 UL2R 在 PaLM 上持续训练,UL2R 是一种使用 UL2 的混合降噪目标分几步持续训练 LLM 的方法。据报道,计算节省率约为 2 倍。
U-PaLM 后来经过指令微调,更名为 Flan-PaLM。 与上述其他指令微调工作相比,Flan-PaLM 的微调使用了更多任务、更大的模型尺寸和思路链数据。因此,Flan-PaLM 的表现大大优于之前的指令跟随模型。例如,在 1.8K 任务上经过指令微调的 FlanPaLM-540B 的表现远胜于 PaLM-540B(平均高出 9.4%)。微调数据包括 473 个数据集、146 个任务类别和 1,836 个总任务。
与前代 PaLM 相比,PaLM-2 是一种计算效率更高的 LLM,具有更好的多语言和推理能力。PaLM-2 使用多种目标进行训练。通过对英语、多语言和推理任务的广泛评估,PaLM-2 显著提高了不同模型大小的下游任务的模型性能,同时表现出比 PaLM 更快、更高效的推理能力。
Med-PaLM是一个特定领域的 PaLM,旨在为医学问题提供高质量的答案。 Med-PaLM 在 PaLM 上使用指令提示调整进行了微调,这是一种使用一些样例将 LLM 与新领域对齐的参数高效方法。Med-PaLM 在许多医疗保健任务上取得了非常令人鼓舞的结果,尽管它仍然不如人类临床医生。Med-PaLM 2 通过医学领域微调和集成提示改进了 MedPaLM。Med-PaLM 2 在 MedQA 数据集(即结合六个现有开放式问答数据集的基准,涵盖专业医疗检查、研究和消费者查询)上的得分高达 86.5%,比 Med-PaLM 提高了 19% 以上,创下了新高。
二、为构建 LLM 而开发的技术(HOW LLMS ARE BUILT)
在本节中,我们首先回顾用于 LLM 的流行架构 ,然后讨论数据和建模技术 ,包括数据准备、标记化、预训练、指令调整和对齐 。 一旦选择了模型架构,训练 LLM 的主要步骤包括:数据准备(收集、清理、去重等)、标记化、模型预训练(以自监督学习方式)、指令调整和对齐。
(一)主流 LLM 架构
目前最广泛使用的 LLM 架构有:encoder-only、decoder-only 和 encoding-decoder,其中大部分都是以 Transformer 为核心。
A. Encoder-only
对于此系列,在每个阶段,注意层都可以访问初始句子中的所有单词。 这些模型的预训练通常包括以某种方式破坏给定的句子(例如,通过掩盖其中的随机单词)并让模型查找或重建初始句子。编码器模型非常适合需要理解完整序列的任务,例如句子分类、命名实体识别和提取式问答。一个突出的仅编码器模型是 BERT(来自 Transformers 的双向编码器表示)。
B. Decoder-only
对于这些模型,在每个阶段,对于任何单词,注意层只能访问句子中位于该单词之前的单词。这些模型有时也称为自回归模型。这些模型的预训练通常被表述为预测序列中的下一个单词(或标记)。仅解码器模型最适合涉及文本生成的任务。GPT 模型是此模型类别的突出示例。
C. Encoder-Decoder
这些模型同时使用编码器和解码器,有时被称为序列到序列模型。在每个阶段,编码器的注意层可以访问初始句子中的所有单词,而解码器的注意层仅访问输入中位于给定单词之前的单词。这些模型通常使用编码器或解码器模型的目标进行预训练,但通常涉及一些更复杂的东西。例如,一些模型通过用单个掩码特殊词替换随机文本范围(可以包含多个单词)进行预训练,然后目标是预测此掩码词替换的文本。编码器-解码器模型最适合根据给定输入生成新句子的任务,例如摘要、翻译或生成性问答。
(二)数据清理
数据质量对于在其上训练的语言模型的性能至关重要。数据清理技术(例如过滤、重复数据删除)对模型性能有很大影响。 例如,在 Falcon40B [124] 中,Penedo 等人表明,仅对网络数据进行适当的过滤和重复数据删除就可以产生强大的模型;甚至远远优于在 The Pile 上训练的最先进的模型。尽管进行了广泛的过滤,他们仍然能够从 CommonCrawl 中获得五万亿个 token。他们还发布了从我们的 REFINEDWEB 数据集中提取的 6000 亿个 token,以及在其上训练的 1.3/7.5B 参数语言模型。下图展示了这项工作对 CommonCrawl 数据的细化过程。
A.数据过滤
数据过滤旨在提高训练数据的质量和训练后的LLM的有效性。 常见的数据过滤技术包括:
- 消除噪音:指消除可能影响模型良好泛化能力的无关或嘈杂数据。 例如,可以考虑从训练数据中删除虚假信息,以降低模型产生错误响应的可能性。两种主流的质量过滤方法包括:基于分类器的框架和基于启发式的框架。
- 处理异常值:识别和处理数据中的异常值或异常,以防止它们对模型产生不成比例的影响。
- 解决不平衡问题:平衡数据集中类别的分布,以避免偏差并确保公平表示。这对于负责任的模型训练和评估特别有用。
- 文本预处理:通过删除停用词、标点符号或其他可能对模型学习没有显著贡献的元素来清理和标准化文本数据。
- 处理歧义:解决或排除训练过程中可能使模型感到困惑的歧义或矛盾的数据。这可以帮助模型提供更明确、更可靠的答案。
B. 去重
去重是指删除数据集中重复的实例或相同数据的重复出现的过程。重复的数据点会在模型训练过程中引入偏差并降低多样性,因为模型可能会多次从相同的示例中学习,这可能会导致对这些特定实例的过度拟合。 一些研究表明,去重可以提高模型推广到新的、未见过的数据的能力。 去重过程在处理大型数据集时尤为重要,因为重复数据可能会无意中夸大某些模式或特征的重要性。 这在 NLP 任务中尤其重要,因为多样化和有代表性的训练数据对于构建强大的语言模型至关重要。 具体的去重方法可能因数据的性质和正在训练的特定语言模型的要求而异。它可能涉及比较整个数据点或特定特征以识别和消除重复项。在文档级别,现有的工作主要依靠文档之间的高级特征的重叠率(例如,n-gram 重叠)来检测重复样本。
(三)Tokenizations
标记化是指将文本序列转换为较小部分(称为标记)的过程。虽然最简单的标记化工具只是根据空格将文本切成标记,但大多数标记化工具都依赖于字典。但是,在这种情况下,词汇表外 (OOV) 是一个问题,因为标记器只知道字典中的单词。为了增加字典的覆盖范围,用于 LLM 的流行标记器基于子词,这些子词可以组合成大量单词,包括训练数据中未见过的单词或不同语言中的单词。 接下来,我们将描述三种流行的标记器。
- BytePairEncoding
BytePairEncoding 原本是一种数据压缩算法,它使用字节级的频繁模式来压缩数据。根据定义,这种算法主要试图保持常用词的原始形式,并分解不常见的词。这种简单的范例使词汇量不会很大,但同时也足以表示常用词。如果后缀或前缀也常见于算法的训练数据中,那么常用词的形态也可以很好地表示出来。 - WordPieceEncoding
该算法主要用于非常著名的模型,例如 BERT 和 Electra。在训练开始时,该算法从训练数据中获取所有字母表,以确保训练数据集中不会留下任何 UNK 或未知的内容。当模型被赋予无法被标记器标记的输入时,就会发生这种情况。它主要发生在某些字符无法被标记的情况下。与 BytePairEncoding 类似,它会尝试根据所有标记的频率最大化将所有标记放入词汇表中的可能性。 - SentencePieceEncoding
尽管前面描述的两种标记器都很强大,与空格标记器相比具有许多优势,但它们仍然假设单词总是由空格分隔。这个假设并不总是正确的,事实上,在某些语言中,单词可能会被许多干扰元素破坏,例如不需要的空格甚至虚构的单词。SentencePieceEncoding 试图解决这个问题。
(四)位置编码
- 绝对位置嵌入(Absolute Positional Embeddings):APE已在原始 Transformer 模型中使用,以保留序列顺序信息。因此,单词的位置信息被添加到编码器和解码器堆栈底部的输入嵌入中。位置编码有多种选择,无论是学习的还是固定的。在 vanilla Transformer 中,正弦和余弦函数用于此目的。在 Transformer 中使用 APE 的主要缺点是限制为一定数量的 token。此外,APE 无法解释 token 之间的相对距离。
- 相对位置嵌入(Relative Positional Embeddings):RPE涉及扩展自注意力以考虑输入元素之间的成对链接。RPE 在两个层面添加到模型中:首先作为键的附加组件,然后作为值矩阵的子组件。这种方法将输入视为具有标签和有向边的全连通图。对于线性序列,边可以捕获有关输入元素之间相对位置差异的信息。裁剪距离(表示为 k 2 ≤ k ≤ n − 4)指定相对位置的最大限制。这使模型能够对不属于训练数据的序列长度做出合理的预测。
- 旋转位置嵌入(Rotary Position Embeddings):旋转位置嵌入 (RoPE) 解决了现有方法的问题。学习到的绝对位置编码可能缺乏通用性和意义,尤其是在句子较短时。此外,当前的方法(如 T5 的位置嵌入)面临着在位置之间构建完整注意力矩阵的挑战。RoPE 使用旋转矩阵对单词的绝对位置进行编码,同时在自注意力中包含明确的相对位置细节。RoPE 带来了一些有用的特性,例如句子长度的灵活性、随着相对距离的增加单词依赖性降低,以及通过相对位置编码改善线性自注意力的能力。GPT-NeoX-20B、PaLM、CODEGEN 和 LLaMA 等模型都在其架构中利用了 RoPE。
- 相对位置偏差(Relative Positional Bias):这种位置嵌入背后的概念是为了便于在推理过程中推断比训练中遇到的序列更长的序列。在 [128] 中,Press 等人提出了具有线性偏差的注意力 (ALiBi)。他们不是简单地将位置嵌入添加到词嵌入中,而是在查询-密钥对的注意力得分中引入偏差,施加与距离成比例的惩罚。在 BLOOM 模型中,ALiBi 得到了利用。
(五)模型预训练(Model Pre-training)
预训练是大型语言模型训练流程的第一步,它可以帮助 LLM 获得基本的语言理解能力,这在各种语言相关任务中都很有用。在预训练期间,LLM 会以大量(通常)未标记的文本进行训练,通常采用自监督的方式。预训练有不同的方法,例如下一句预测,最常见的两种方法包括下一个标记预测(自回归语言建模)和掩码语言建模。
- 在自回归语言模型框架中,给定一个 n 个 token 序列 x1, ..., xn,模型会尝试以自回归方式预测下一个 token xn+1(有时是下一个 token 序列)。鉴于该框架的自回归特性,仅解码器模型(Decoder-only)自然更适合学习如何完成这些任务。
- 在掩蔽语言建模中,序列中的一些单词被掩蔽,模型经过训练后,可以根据周围环境预测被掩蔽的单词。有时人们也将这种方法称为去噪自动编码。
- 最近,混合专家 (MoE) 在 LLM 领域也变得非常流行。MoE 能够以更少的计算量对模型进行预训练,这意味着人们可以使用与密集模型相同的计算预算大幅扩大模型或数据集的大小。 MoE 由两个主要元素组成:稀疏 MoE 层,用于代替密集前馈网络 (FFN) 层,并具有一定数量的"专家"(例如 8 个),其中每个专家都是一个神经网络。实际上,专家是 FFN,但它们也可以是更复杂的网络。门网络或路由器,决定将哪些令牌发送给哪个专家。值得注意的是,人们可以将令牌发送给多个专家。如何将令牌路由给专家是使用 MoE 时的一个重要决策------路由器由学习到的参数组成,并与网络的其余部分同时进行预训练。
(六)微调和指令微调(Fine-tuning and Instruction Tuning)
早期的语言模型(例如 BERT)使用自监督进行训练,无法执行特定任务。为了使基础模型有用,需要使用标记数据对其进行微调以适应特定任务(所谓的监督微调或简称 SFT)。例如,在原始的 BERT 论文中,该模型针对 11 个不同的任务进行了微调。虽然较新的 LLM 不再需要使用微调,但它们仍然可以从任务或数据特定的微调中受益。例如,OpenAI 报告称,当使用任务特定数据进行微调时,规模小得多的 GPT-3.5 Turbo 模型可以胜过 GPT-4。
不过,微调并不一定需要针对单个任务进行,而且存在不同的多任务微调方法。众所周知,针对一个或多个任务进行微调可以改善结果并降低快速工程的复杂性,并且可以作为一种**检索增强生成(RAG)**的替代方案。此外,还有其他原因可能建议进行微调。 例如,人们可能希望进行微调以将模型暴露给在预训练期间未曾接触过的新数据或专有数据。
对 LLM 进行微调的一个重要原因是使响应与人类通过提示提供指令时的期望保持一致。这就是所谓的指令调整。但在指令调整的背景下,重要的是要理解指令是指定 LLM 应完成的任务的提示。指令调整数据集(例如自然指令)不仅包括任务定义,还包括其他组成部分,例如正面/负面示例或要避免的事情。
用于对 LLM 进行指令调整的具体方法和指令数据集各不相同,但一般来说,指令调整后的模型比它们所基于的原始基础模型表现更好。例如,InstructGPT在大多数基准测试中都优于 GPT-3。与 LLaMA 相比,Alpaca也是如此。
Self-Instruct也是这方面的一种流行方法,他们引入了一个框架,通过引导自己的生成来提高预训练语言模型的指令遵循能力。他们的管道从语言模型生成指令、输入和输出样本,然后过滤无效或类似的样本,然后再使用它们来微调原始模型。
(七)对齐(Alignment)
AI 对齐是引导 AI 系统向人类目标、偏好和原则靠拢的过程。经过预先训练的 LLM 经常表现出意想不到的行为。例如,它们可能会生成有毒、有害、误导和有偏见的内容。
上面讨论的指令调整使 LLM 更接近对齐。然而,在许多情况下,重要的是要采取进一步措施来改善模型的对齐并避免意外行为。
(1)RLHF
RLHF (reinforcement learning from human feedback) 和 RLAIF (reinforcement learning from AI feedback) 是两种流行的方法。RLHF 使用奖励模型从人类反馈中学习对齐。经过调整后,该奖励模型能够对不同的输出进行评级,并根据人类给出的对齐偏好对其进行评分。奖励模型向原始 LLM 提供反馈,并使用该反馈进一步调整 LLM。另一方面,从人工智能反馈中进行强化学习将预先训练且对齐良好的模型直接连接到 LLM,并帮助它从更大、更对齐的模型中学习。
(2)DPO
在另一项近期研究(称为 DPO )中讨论了 RLHF 是一个复杂且通常不稳定的过程,并尝试用一种新方法解决这个问题。他们利用奖励函数和最优策略之间的映射来表明,这个受约束的奖励最大化问题可以通过一个阶段的策略训练进行精确优化,本质上是解决人类偏好数据的分类问题。他们称之为直接偏好优化 (DPO) 的结果算法稳定、高效且计算量轻,无需拟合奖励模型、在微调期间从 LM 中采样或执行重大超参数调整。他们观察到,使用 DPO 进行微调超出了 RLHF 控制代际情绪的能力,并提高了总结中的响应质量。下图显示了 DPO 与 RLHF 之间的高级比较。
(3)KTO
最近,Ethayarajh 等人提出了一种新的对齐方法,称为卡尼曼-特沃斯基优化 (Kahneman-Tversky Optimization,KTO) 。与现有的最先进方法不同,KTO 不需要成对的偏好数据 (x, yw, yl),它只需要 (x,y) 和 y 是可取的还是不可取的知识。尽管没有使用成对的偏好,但 KTO 对齐模型在 1B 到 30B 的尺度上被证明比 DPO 对齐模型好或更好。KTO 在现实世界中也比偏好优化方法更容易使用,因为它需要的数据类型要丰富得多。例如,每家零售公司都拥有大量的客户互动数据,以及该互动是成功(例如,购买)还是失败(例如,没有购买)。然而,他们几乎没有反事实数据(即,什么会使不成功的客户互动变成成功的互动)。下图显示了 KTO 与上面讨论的其他对齐方法之间的高级比较。
(八)解码策略(Decoding Strategies)
解码是指使用预训练的 LLM 生成文本的过程。给定一个输入提示,标记器将输入文本中的每个标记转换为相应的标记 ID。 然后,语言模型使用这些标记 ID 作为输入并预测下一个最可能的标记(或标记序列)。 最后,模型生成 logit,然后使用 softmax 函数将其转换为概率。已经提出了不同的解码策略。其中一些最流行的是贪婪搜索、波束搜索(beam search),以及不同的采样技术,例如 top-K、top-P(核采样)。
A. 贪婪搜索(Greedy Search)
贪婪搜索将每一步中最可能的标记作为序列中的下一个标记,丢弃所有其他潜在选项。您可以想象,这是一种简单的方法,可能会失去很多时间一致性和连贯性。它只考虑每一步中最可能的标记,而不考虑对序列的整体影响。 此属性使其速度更快,但也意味着它可能会错过可能出现的下一个标记概率略低的更好序列。
B. 波束搜索(Beam Search)
与仅考虑下一个最可能标记的贪婪搜索不同,束搜索考虑 N 个最可能的标记,其中 N 表示束的数量。此过程重复进行,直到达到预定义的最大序列长度或出现序列末尾的标记。此时,选择总得分最高的标记序列(又称"束")作为输出。例如,对于束大小为 2 且最大长度为 5 的束搜索,束搜索需要跟踪 2^5 = 32 个可能的序列。因此,它比贪婪搜索更耗费计算资源。
C. Top-k Sampling
Top-k 采样是一种使用语言模型生成的概率分布从 k 个最可能的选项中随机选择一个标记的技术。
假设我们有 6 个 token(A、B、C、D、E、F),k=2,P(A)= 30%,P(B)= 20%,P©= P(D)= P(E)= P(F)=12.5%。在 top-k 抽样中,标记 C、D、E、F 被忽略,模型 60% 的时间输出 A,40% 的时间输出 B。这种方法确保我们优先考虑最可能的标记,同时在选择过程中引入随机性元素。
随机性通常通过温度的概念引入。温度 T 是一个范围从 0 到 1 的参数,它会影响 softmax 函数生成的概率,使最可能的标记更具影响力。实际上,它只是将输入 logits 除以温度值:
低温设置会显著改变概率分布(通常用于文本生成,以控制生成输出的"创造性"水平),而高温设置会优先考虑具有更高概率的标记。Top-k 是一种创造性的采样方式,可以与波束搜索一起使用。topk 采样选择的序列可能不是波束搜索中概率最高的序列。但重要的是要记住,最高分数并不总是会带来更现实或更有意义的序列。
D. Top-p Sampling
Top-p 采样,也称为核采样,与 top-k 采样的方法略有不同。核采样不是选择前 k 个最可能的标记,而是选择一个截止值 p,使得所选标记的概率总和超过 p。这形成了一个标记"核",可以从中随机选择下一个标记。换句话说,在 top-p 采样中,语言模型按降序检查最可能的标记,并不断将它们添加到列表中,直到概率总和超过阈值 p。可以想象,这可能更好,特别是对于 top-k 标记没有大概率质量的场景。与 top-k 采样不同,核采样中包含的标记数量不是固定的。这种可变性通常会产生更多样化和创造性的输出,使核采样在文本生成相关任务中很受欢迎。
(九)经济高效的训练/推理/适应/压缩(Cost-Effective Training/Inference/Adaptation/Compression)
在本部分中,我们回顾了一些流行的方法,用于更具成本友好性(和计算友好性)的 LLM 训练和使用。
A. 优化训练:目前已开发出许多针对 LLM 优化训练的框架,这里我们介绍其中的一些突出的框架。
ZeRO: Rajbhandari 等人开发了一种新颖的解决方案,即零冗余优化器 (Zero Redundancy Optimizer,ZeRO),用于优化内存,大大提高了 LLM 的训练速度,同时增加了可有效训练的模型大小。ZeRO 消除了数据和模型并行训练中的内存冗余,同时保持了较低的通信量和较高的计算粒度,允许人们根据设备数量按比例缩放模型大小,同时保持高效率。
RWKV: Peng 等人提出了一种新颖的模型架构,即 Receptance Weighted Key Value (RWKV),它将 Transformer 的高效可并行训练与 RNN 的高效推理相结合。他们的方法利用了线性注意机制,并允许他们将模型制定为 Transformer 或 RNN,这在训练期间并行化计算,并在推理期间保持恒定的计算和内存复杂度,从而产生了第一个可扩展到数百亿个参数的非 Transformer 架构。RWKV 架构如下图所示。
RWKV 与不同 Transformer 的时间复杂度比较展示在下表:
B. Low-Rank Adaption (LoRA)
低秩自适应是一种流行的轻量级训练技术,它显著减少了可训练参数的数量,并且基于一个关键的洞察:专门任务的微调权重与初始预训练权重之间的差异通常表现出"低内在秩"------这意味着它可以很好地用低秩矩阵来近似,使用 LoRA 进行训练速度更快、内存效率更高,并且产生的模型权重更小(几百 MB),更易于存储和共享。低秩矩阵的一个特性是它们可以表示为两个较小矩阵的乘积。这一认识导致了这样的假设:微调权重和初始预训练权重之间的差异可以表示为两个小得多的矩阵的矩阵乘积。通过专注于更新这两个较小的矩阵而不是整个原始权重矩阵,可以大大提高计算效率。
值得一提的是,LoRA 可以应用于神经网络中权重矩阵的任何子集,以减少可训练参数的数量。在 Transformer 架构中,自注意力模块中有四个权重矩阵(Wq、Wk、Wv、Wo),MLP 模块中有两个。大多数时候,LoRA 专注于仅针对下游任务调整注意力权重,并冻结 MLP 模块,因此它们不会在下游任务中进行训练,这既简单又提高了参数效率。
C. 知识蒸馏(Knowledge Distillation)
知识蒸馏是从较大的模型中学习的过程。早期发布的最佳性能模型已经证明,即使将其用于 API 蒸馏方法中,这种方法也非常有用。 它也被称为一种将知识从单个模型(实际上是多个模型)中蒸馏成较小模型的方法。通过这种方法创建较小的模型会产生较小的模型尺寸,甚至可以在边缘设备上使用。如图 35 所示的知识蒸馏说明了此训练方案的一般设置。
知识可以通过不同的学习形式进行迁移:响应提炼、特征提炼和 API 提炼。响应提炼只关注教师模型的输出,并试图教会学生模型如何与教师模型完全一样或至少类似地表现(在预测意义上)。特征提炼不仅使用最后一层,还使用中间层来为学生模型创建更好的内部表示。这有助于较小的模型具有与教师模型类似的表示。
API 提炼是使用 API(通常来自 LLM 提供商,例如 OpenAI)来训练较小模型的过程。对于 LLM,它用于从较大模型的直接输出中训练模型,这使得它与响应提炼非常相似。这种类型的提炼引起了许多担忧,因为在模型本身不公开可用的情况下,会向最终用户公开(通常)付费 API。另一方面,虽然用户为每次调用付费,但如何使用预测是有限的,例如,OpenAI 禁止使用其 API 来创建稍后将用于与其竞争的 LLM。在这种情况下,主要价值是训练数据。
D. 量化(Quantization)
深度学习的核心是一组应用于矩阵的数学函数,模型权重具有特定的精度。降低权重的精度可用于减小模型的大小并使其更快。例如,与 Int-8 操作相比,Float-32 操作速度较慢。此过程称为量化,可应用于不同阶段。模型量化的主要方法可分为:训练后量化和量化感知训练。训练后量化涉及两种众所周知的量化训练模型:动态和静态。动态训练后量化在运行时计算量化范围,与静态相比速度较慢。量化感知训练将量化标准添加到训练中,并在训练过程中训练和优化量化模型。这种方法确保最终模型具有良好的性能,并且在训练后不需要量化。
三、为增强 LLM 而开发的技术( HOW LLMS ARE USED AND AUGMENTED)
一旦 LLM 经过训练,我们就可以使用它们来生成各种任务所需的输出。LLM 可以通过基本提示直接使用。然而,为了充分发挥其潜力或解决一些缺点,我们需要通过一些外部手段来增强模型。 在本节中,我们首先简要概述了 LLM 的主要缺点,并深入研究了幻觉问题。然后,我们描述了提示和一些增强方法如何不仅可以解决这些限制,还可以用于增强 LLM 的功能,甚至可以将 LLM 变成具有与外部世界交互能力的成熟 AI 代理。
(一)LLM 的局限性
重要的是要记住,LLM 是经过训练来预测 token 的。虽然微调和对齐可以提高其性能并为其能力增加不同的维度,但仍存在一些重要的限制,特别是在天真地使用它们的情况下。其中一些包括:
- 它们没有状态/记忆。 LLM 本身甚至无法记住上一个提示中发送给它们的内容。对于许多需要某种形式状态的用例来说,这是一个重要的限制。
- 它们是随机/概率的。 如果你多次向 LLM 发送相同的提示,你很可能会得到不同的响应。虽然有一些参数(特别是温度)可以限制响应的变化,但这是他们训练的固有属性,可能会产生问题。
- 它们拥有过时的信息,而且无法访问外部数据。 LLM 本身甚至不知道当前时间或日期,也无法访问其训练集中不存在的任何信息。
- 它们通常非常大。 这意味着需要许多昂贵的 GPU 机器进行训练和服务。在某些情况下,最大的模型的 SLA 很差,特别是在延迟方面。
- 它们会产生幻觉。 LLMs 没有"真相"的概念,他们通常接受过好坏参半的训练。他们可以给出非常合理但不真实的答案。
虽然之前的局限性对于某些应用来说都很重要,但值得我们深入研究最后一个局限性,即幻觉,因为它在过去几个月中引起了很多兴趣,并且还引发了许多我们稍后将描述的提示方法和 LLM 增强方法。
幻觉 :在大型语言模型 (LLM) 领域,"幻觉"现象引起了广泛关注。文献中对幻觉的定义,尤其是在《自然语言生成中的幻觉调查》论文中,LLM 中的幻觉被描述为"生成无意义或不忠于所提供来源的内容"。这个术语虽然源于心理学用语,但已被人工智能领域所采用。
LLM 中的幻觉大致可分为两类:
- 内在幻觉:这些幻觉与源材料直接冲突,导致事实不准确或逻辑不一致。
- 外在幻觉:这些幻觉虽然不矛盾,但无法与源材料相核实,包含推测或无法证实的元素。
LLM 语境中"来源"的定义因任务而异。在基于对话的任务中,它指的是"世界知识",而在文本摘要中,它涉及输入文本本身。这种区别在评估和解释幻觉方面起着至关重要的作用。幻觉的影响也高度依赖于环境。例如,在诗歌创作等创造性活动中,幻觉可能被认为是可以接受的,甚至是有益的。
LLM 经过各种数据集(包括互联网、书籍和维基百科)的训练,基于概率模型生成文本,而没有对真假的固有理解。 最近的进展,如指令调整和从人类反馈中强化学习 (RLHF),试图引导 LLM 产生更符合事实的输出,但基本的概率性质及其固有的局限性仍然存在。最近的一项研究"大型语言模型在推理任务中的幻觉来源"强调了导致 LLM 幻觉的两个关键方面:真实性先验和相对频率启发式,强调了 LLM 训练和输出生成固有的复杂性。
有效自动测量LLMs中的幻觉需要结合统计和基于模型的指标:
- 统计指标:
- ROUGE [147] 和 BLEU [148] 等指标常用于评估文本相似性,侧重于内在幻觉。
- 当有结构化知识源可用时,使用 PARENT、PARENTT 和 Knowledge F1等高级指标。这些指标虽然有效,但在捕捉句法和语义细微差别方面存在局限性。
- 基于模型的指标:
- 基于 IE 的指标:利用信息提取模型将知识简化为关系元组,然后将其与源进行比较。
- 基于 QA 的指标:通过问答框架评估生成内容与源之间的重叠。
- 基于 NLI 的指标:使用自然语言推理数据集评估基于给定前提生成的假设的真实性。
- 忠实度分类指标:通过创建特定于任务的数据集进行细致的评估,提供精细的评估。
尽管自动化指标取得了进展,但人类判断仍然是至关重要的因素。它通常涉及两种方法:
1)评分 :人类评估者在预先定义的范围内对幻觉程度进行评分。
2)比较分析:评估者将生成的内容与基线或真实参考进行比较,增加了一个重要的主观评估层。
FactScore 是近期一个可用于人工和基于模型的评估的指标示例。该指标将 LLM 生成分解为"原子事实"。最终得分计算为每个原子事实准确度的总和,并赋予每个事实相同的权重。准确度是一个二进制数,它只是表明原子事实是否得到源的支持。作者实施了使用 LLM 来估计此指标的不同自动化策略。
最后,缓解 LLM 中的幻觉是一项多方面的挑战,需要制定适合各种应用的定制策略。这些包括:
- 产品设计和用户交互策略,例如用例设计、构建输入/输出或提供用户反馈机制。
- 数据管理和持续改进。 维护和分析一组幻觉跟踪对于持续改进模型至关重要。
- 提示工程和元提示设计。IV-B 中描述的许多高级提示技术(如检索增强生成)直接解决了幻觉风险。
- 缓解幻觉的模型选择和配置。例如,温度设置较低的较大模型通常表现更好。此外,RLHF 或特定领域微调等技术可以缓解幻觉风险。