llm综述——通过一篇综述全面了解大模型

Large Language Models: A Survey 精读

https://arxiv.org/abs/2402.06196

通过一篇综述,全面了解大模型。

INTRODUCTION

  • LLM的定义: A large-scale, pre-trained, statistical language models based on neural networks. (大模型:基于神经网络的大规模预训练统计语言模型。)

  • 语言模型的发展可以被分为四个阶段:统计模型、神经网络语言模型、预训练模型。

  • 与PLMs(预训练语言模型)相比,LLMs不仅仅在模型参数量上大,在语言理解、生成能力上也展现出更强的实力。更重要的是,“涌现能力” 在小模型上没有体现。

其中,涌现能力包括:

  1. in-context learning: LLM可以根据一些少样本or零样本去学习新的任务。
  2. instruction following: 大模型经过指令微调后,在没有明确的示例(甚至少样本提示)的情况下,仅根据自然语言指令,执行新任务的能力。这使得模型的灵活性更高,能适应广泛的任务场景。
  3. multi-step reasoning: LLM可以通过将复杂的任务拆解为中间推理步骤从而完成任务,例如chain-of-thought。LLM也可以通过外接知识库或者工具获得增强。

Large language models

本节将阐述大模型的发展历程,以及当今主流的开、闭源模型。

  • 早期预训练神经网络语言模型

    Bengio等人开发了第一个与n-gram模型相媲美的神经语言模型(NLMs)。接着,Mikolov发布的RNNLM(一个开源的NLM工具包)显著地推广了NLMs。之后,基于循环神经网络(RNN)及其变体,如长短期记忆(LSTM)和门控循环单元(GRU)的NLMs被广泛用于多种自然语言应用,包括机器翻译、文本生成和文本分类。

    随即进入了Transformer时代:self-attention并行计算句子或文档中每个词的“注意力得分”,以模拟每个词对另一个词的影响,Transformers 允许比 RNNs 更多的并行化处理,这使得在 GPU 上高效预训练非常大的语言模型成为可能。

    Transformer-based的预训练模型分为三类:encoder-only, decoder-only, encoder-decoder models

    • Encoder-only: 这些模型最初是为语言理解任务而开发的,比如文本分类,其中模型需要预测输入文本的类标签。具有代表性的Encoder-only结构的模型如:RoBERTa, ALBERT,DeBERTa, XLM, XLNet, UNILM. BERT:由三个模块组成:

      1) 一个embedding模型,将输入文本转为embedding vectors。

      2)Transformers的encoder结构。将嵌入向量转换为上下文表示向量的变压器编码器堆栈。

      3)一个全连接的层,它将表示向量(在最后一层)转换为一个one-hot向量。BERT是预训练使用两个目标:掩蔽语言建模(MLM)和下一个句子预测。

    微调的预训练Bert模型可以通过增添一个分类层去微调以完成许多语言理解的任务。从文本分类、问题回到到语言推理。

    • Decoder-only: 两种最常见的decoder-only模型是GPT-1与GPT-2。GPT-1首次展示了通过在多样化的未标记文本语料库上以自监督学习方式(next word/token prediction)对decoder-only Transformer模型进行生成式预训练(GPT),然后对每个特定下游任务进行判别性微调(样本数量要少得多),可以在广泛的自然语言任务上获得良好的性能,如图7所示。GPT-1为后续的GPT模型铺平了道路,每个版本都在架构上进行了改进,并在各种语言任务上取得了更好的性能。

    • Encoder-Decoder: T5 是一种文本到文本转换的变换器(Text-to-Text Transfer Transformer)模型,它通过引入一个统一框架有效地利用迁移学习来处理自然语言处理(NLP)任务,在这个框架中,所有的NLP任务都被看作是一个文本到文本的生成任务。mT5是T5的多语言变体,它在一个新的基于Common Crawl的数据集上进行预训练,该数据集包含了101种语言的文本。

    • Large language Model Families:

      GPT-1与GPT-2已经在前面讨论,下面对GPT-3进行讨论。GPT3是一个预训练的自回归语言模型,有1750亿个参数构成。GPT3被认作是第一个大语言模型,不仅仅在于参数量上的大,也体现在在之前参数量较小的预训练模型上没有的涌现能力。GPT-3展现了在In-context learning上的能力,这意味着GPT-3在无需微调或梯度更新的情况下可以被应用于任何下游任务。GPT-3在许多NLP任务上取得了不错的表现,这包括翻译、问答、完形填空等。以及需要即时推理或领域适应的任务,例如解乱词、在句子中使用新词、三位数的算术运算等。

      为确保LLMs能够遵循人类预期的指令,InstructGPT被设计用来使大型语言模型(LLMs)能够遵循人类的预期指令,它通过人类反馈进行微调,以在广泛的任务上与用户意图保持一致。这个过程开始于一组标注者编写的提示和通过OpenAI API提交的提示,收集了一组标注者展示的期望模型行为的数据集。然后,在这个数据集上对GPT-3进行微调。之后,收集了一组人类对模型输出进行排名的数据集,以进一步使用强化学习对模型进行微调。这种方法被称为基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,简称RLHF)。由此产生的InstructGPT模型在真实性和减少有害输出生成方面都有所改进,同时在公共NLP数据集上的性能几乎没有下降。

      GPT-4是 GPT 家族中最新且最强大的大型语言模型(LLM)。该模型于2023年3月推出,是一个多模态的 LLM,能够接受图像和文本作为输入,并生成文本输出。尽管在一些最具挑战性的现实世界场景中仍不如人类,但 GPT-4 在多个专业和学术基准测试中表现出人类水平的能力,包括在模拟律师考试中获得大约前10%考生的成绩,如图11所示。与早期的 GPT 模型类似,GPT-4 首先通过大规模文本语料库进行预训练,预测下一个标记,然后通过基于人类反馈的强化学习(RLHF)进行微调,以使模型行为与人类期望对齐。

    • The LLaMA Family:

      LLaMA是由Meta开发的一些列开源语言模型,模型的权重在社区中公开。其开源模型被许多开源组织广泛应用,以和闭源模型抗衡。

      LLaMA的第一个模型在2023年发布,参数范围从7B到65B之间。这些模型是从公开的数据集中收集到的数万亿个tokens进行预训练的。LLaMA采用GPT-3的架构,做了些小的架构调整,包括:

      1. 使用 SwiGLU 激活函数代替 ReLU,

      2. 使用旋转位置嵌入(rotary positional embeddings)代替绝对位置嵌入,

      3. 使用均方根层归一化(root-mean-squared layer-normalization)代替标准层归一化。开源的 LLaMA-13B 模型在大多数基准测试中表现优于专有的 GPT-3(175B)模型,使其成为大型语言模型研究的良好基准。

      2023年7月,Meta 与微软合作发布了 LLaMA-2 系列,其中包括基础语言模型和为对话微调的 Chat 模型,称为 LLaMA-2 Chat。据报道,LLaMA-2 Chat 模型在许多公开基准测试中表现优于其他开源模型。图12展示了 LLaMA-2 Chat 的训练过程。该过程首先使用公开可用的在线数据对 LLaMA-2 进行预训练。然后,通过有监督微调构建 LLaMA-2 Chat 的初始版本。随后,模型通过基于人类反馈的强化学习(RLHF)、拒绝采样和近端策略优化(PPO)进行迭代优化。在 RLHF 阶段,收集人类反馈来调整奖励模型至关重要,以防奖励模型变化过大,从而影响 LLaMA 模型训练的稳定性。

      Alpaca是从 LLaMA-7B 模型微调而来的,使用了 52,000 条由 GPT-3.5(text-davinci-003)生成的指令跟随示例,采用自指令(self-instruct)的方式进行训练。Alpaca 在训练方面非常具有成本效益,尤其适用于学术研究。在自指令评估集上,尽管 Alpaca 规模要小得多,但其表现与 GPT-3.5 相似。

      Vicuna 团队开发了一个 13B 参数的聊天模型 Vicuna-13B,使用 LLaMA 在用户共享对话数据上进行微调。与 Alpaca 和 Vicuna 类似,Guanaco 模型也是基于 LLaMA 的指令跟随数据进行微调的。但 Guanaco 的微调过程使用了非常高效的 QLoRA 技术,使得微调 65B 参数模型可以在单块 48GB GPU 上完成。QLoRA 通过将梯度反向传播至冻结的、4 位量化的预训练语言模型,并应用低秩适配器(LoRA)。Guanaco 的最佳模型在 Vicuna 基准测试中表现优于之前发布的所有模型,达到了 ChatGPT 性能水平的 99.3%,而仅需在单块 GPU 上进行 24 小时的微调。

      Koala [64] 是另一个基于 LLaMA 构建的指令跟随语言模型,但特别侧重于包含用户输入和由高度能力的闭源聊天模型(如 ChatGPT)生成的响应的交互数据。根据基于真实用户提示的人类评估,Koala-13B 模型在与当前最先进的聊天模型竞争时表现出色。

      Mistral-7B 是一个拥有 70 亿参数的语言模型,专为卓越的性能和效率而设计。Mistral-7B 在所有评估的基准测试中,性能优于最好的开源 130 亿参数模型(LLaMA-2-13B),并在推理、数学和代码生成方面超过了最好的开源 340 亿参数模型(LLaMA-34B)。该模型利用分组查询注意力(grouped-query attention)来实现更快的推理速度,并结合滑动窗口注意力(sliding window attention)以更低的推理成本有效处理任意长度的序列。

      LLaMA 家族正在快速增长,越来越多的指令跟随模型基于 LLaMA 或 LLaMA-2 构建,包括 Code LLaMAGorillaGiraffeVigogneTulu 65BLong LLaMAStable Beluga2,仅列举一部分。

      • The PaLM Family(Pathways Language Model)家族由谷歌开发。第一个 PaLM 模型于 2022 年 4 月发布,但一直保持私有,直到 2023 年 3 月才公开。它是一个拥有 5400 亿参数的基于 Transformer 架构的大型语言模型(LLM)。该模型通过一个高质量文本语料库进行预训练,包含 7800 亿个标记,覆盖了广泛的自然语言任务和使用场景。PaLM 使用 6144 个 TPU v4 芯片并借助 Pathways 系统进行预训练,该系统支持在多个 TPU Pods 之间进行高效的训练。

        PaLM 展示了扩展模型规模的持续优势,在数百个语言理解和生成基准测试上实现了最新的少样本学习结果。PaLM-540B 不仅在多步推理任务的表现上超越了现有的最先进的微调模型,还在最近发布的 BIG-bench 基准测试中与人类表现相当。

    How LLMs ARE BUILT

    在本节中,我们首先回顾了大型语言模型(LLM)中常用的架构,然后讨论了从数据准备、分词到预训练、指令微调以及对齐的各种数据和建模技术。

    一旦模型架构确定,训练 LLM 主要涉及以下步骤:数据准备(包括数据收集、清洗、去重等)、分词、模型预训练(以自监督学习的方式)、指令微调和对齐。我们将在下面的各个小节中分别解释这些步骤。

    • 数据清洗:
      数据质量对于模型表现来书至关重要。数据清洗技术如:过滤、去重等,已被证明对模型性能产生了重要影响。
      以Falcon40B为例子,Penedo等人展示了仅通过对网页数据的过滤和去重便可以训练出强大的模型。甚至超过了在The Pile上训练的SOTA。尽管经过了过滤,他们仍然能够从 CommonCrawl 获得五万亿个标记。他们还发布了从 REFINEDWEB 数据集中提取的 6000 亿个标记,以及基于该数据集训练的 13 亿和 75 亿参数的语言模型。
    1. Data Filting: 数据过滤旨在提高训练数据的质量和训练后的llm的有效性。常用的数据过滤技术包括:

      • Removing Noise: 这指的是消除可能影响模型良好泛化能力的无关或噪声数据。例如,可以考虑从训练数据中去除虚假信息,以降低模型生成错误响应的几率。两种主流的质量过滤方法包括:基于分类器的框架和基于启发式的方法。

      • Handling Outliers: 识别和处理数据中的异常值或异常值,以防止它们不成比例地影响模型。

      • Addressing Imbalances: 平衡数据集中的类或类别的分布,以避免偏差,并确保公平的表示。这对于负责任的模型培训和评估特别有用。

      • Text Preprocessing: 通过去除停用词、标点符号或其他可能对模型学习没有显著贡献的元素,来清理和标准化文本数据。

      • Dealing with Ambiguities: 解决或排除可能在训练过程中混淆模型的模棱两可或矛盾的数据。这可以帮助模型提供更明确和可靠的答案。

    2. Deduplication: 去重(De-duplication)是指在数据集中去除重复实例或相同数据的重复出现的过程。重复的数据点可能在模型训练过程中引入偏差,并降低多样性,因为模型可能多次从相同的示例中学习,这可能导致对这些特定实例的过拟合。一些研究表明,去重能够提高模型对新、未见数据的泛化能力。
      去重过程在处理大型数据集时尤为重要,因为重复数据可能无意中夸大某些模式或特征的重要性。这在自然语言处理(NLP)任务中尤其相关,因为多样且具有代表性的训练数据对于构建稳健的语言模型至关重要。
      具体的去重方法可以根据数据的性质和正在训练的特定语言模型的要求而有所不同。去重过程可能涉及比较整个数据点或特定特征,以识别和消除重复项。在文档级别,现有的研究主要依赖于文档之间高层特征的重叠率(例如 n-gram 重叠)来检测重复样本。

    3. Tokenizations: 指将一个句子转换为更小的parts,虽然最简单的分词工具仅仅是基于空格将文本切割成标记,但大多数分词工具依赖于词典。然而,在这种情况下,词汇表外(OOV)是一个问题,因为分词器只知道其词典中的单词。为了增加词典的覆盖范围,流行的用于大型语言模型(LLMs)的分词器基于子词,这些子词可以组合成大量单词,包括在训练数据中未见的单词或不同语言的单词。

      接下来,我们将描述三种流行的分词器。

      • BytePairEncoding: 最初是一种数据压缩算法,它使用字节级的频繁模式来压缩数据。根据定义,该算法主要试图保留频繁出现的单词的原始形式,并拆分不常见的单词。这种简单的范式使得词汇表不会过大,但同时足够好以表示常见单词。此外,如果常见的后缀或前缀也出现在算法的训练数据中,那么频繁单词的形态变化(如不同的词形)也可以很好地表示。

      • WordPieceEncoding: 该算法主要用于一些非常知名的模型,如 BERT 和 Electra。在训练开始时,算法从训练数据中提取所有字母,以确保训练数据集中没有任何内容会被标记为 UNK(未知)。这种情况发生在模型接收到无法被分词器处理的输入时,通常出现在某些字符无法被分词器处理的情况下。与字节对编码(Byte Pair Encoding)类似,该算法尝试基于频率最大化将所有标记纳入词汇表的可能性。

      • SentencePieceEncoding: 尽管之前描述的两种分词器相较于基于空格的分词具有很多优势,但它们仍然假设单词总是由空格分隔。这个假设并不总是成立,实际上在某些语言中,单词可能受到许多噪声元素的干扰,例如多余的空格或甚至是虚构的单词。SentencePiece Encoding 旨在解决这个问题。

      1. Positional Encoding:
      • Absolute Positional Embeddings APE。在原始 Transformer 模型中被用于保留序列顺序的信息。因此,单词的位置信息在编码器和解码器堆栈的底部添加到输入嵌入中。位置编码有多种选项,既可以是学习得出的,也可以是固定的。在传统的 Transformer 中,为此使用了正弦和余弦函数。使用 APE的主要缺点是对特定数量的标记的限制。此外,APE 还无法考虑标记之间的相对距离。
      • Relative Positional Embeddings: (RPE)
      • Rotary Position Embeddings
      • Relative Positional Bias
      1. Model Pre-training:

        预训练是大语言模型训练流程中的第一步,它帮助大语言模型获取语言的理解能力,在大范围的语言相关的任务中将会起作用。

        预训练过程中,LLM通过在大量的无标签文本上进行自监督训练。

        有不同的模型预训练方法如:

        • next token prediction(autoregressive language modeling):

        在自回归语言建模框架中,给定一个由 n 个标记组成的序列 ( x 1 x_1 x1, …, x n x_n xn),模型试图以自回归的方式预测下一个标记 ( x n + 1 x_{n+1} xn+1)(有时也预测下一个标记序列)。在这种情况下,一个常用的损失函数是预测标记的对数似然,如公式 (1) 所示:

        L A L M ( x ) = ∑ i = 1 N p ( x i + n ∣ x i , . . . , x i + n − 1 ) L_{ALM}(x) = \sum_{i=1}^{N} p(x_{i+n} | x_{i}, ..., x_{i+n-1}) LALM(x)=i=1Np(xi+nxi,...,xi+n1)

        由于该框架的自回归特性,仅解码器模型自然更适合学习如何完成这些任务。

        • In Masked Language Modeling: 在这个方法中,序列中的某些单词被掩盖,模型被训练以根据周围的上下文预测被掩盖的单词。有时,人们也将这种方法称为去噪自编码(denoising autoencoding)。如果我们将序列中的被掩盖/损坏样本表示为 \tilde{x},那么该方法的训练目标可以写成:

        L M L M ( x ) = ∑ i = 1 N p ( x ~ ∣ x \ x ~ ) L_{MLM}(x) = \sum_{i=1}^{N} p(\tilde{x} | x \backslash \tilde{x}) LMLM(x)=i=1Np(x~x\x~)

    4. Fine-tuning and Instruction Tuning: 早期的语言模型,如 BERT, 使用自监督学习进行训练(如第 III-E 节所述),无法执行特定任务。为了使基础模型具有实用性,必须通过带标签的数据进行微调,以适应特定任务(称为有监督微调,简称 SFT)。例如,在原始 BERT 论文中,模型被微调以完成 11 个不同的任务。虽然最近的 LLM 不再需要进行微调即可使用,但它们仍然可以从任务或数据特定的微调中受益。例如,OpenAI 报告称,体量更小的 GPT-3.5 Turbo 模型在使用特定任务数据微调后,表现优于 GPT-4。

      微调并不一定只针对单一任务,还有多种多任务微调的方法(参见例如 Mahabi et al.)。针对一个或多个任务进行微调已被证明可以提高结果,并减少提示工程的复杂性,同时也可以作为增强检索生成(retrieval augmented generation)的替代方案。此外,还有其他原因使得微调是值得考虑的。例如,可能希望通过微调让模型接触到在预训练期间未曾接触的新数据或专有数据。

      对大型语言模型(LLMs)进行微调的一个重要原因是使其响应与人们通过提示提供指令时的期望保持一致,这被称为指令微调。我们将在第 IV-B 节详细讨论如何设计和优化提示,但在指令微调的背景下,重要的是要理解指令是一种提示,指定了 LLM 应该完成的任务。像 Natural Instructions这样的指令微调数据集不仅包括任务定义,还包含其他组件,如正/负示例或应避免的事项。

    5. Alignment: AI 对齐(AI Alignment)是指引导人工智能系统朝着符合人类目标、偏好和原则的方向发展。预训练用于词预测的大型语言模型(LLMs)常常表现出一些意料之外的行为。例如,它们可能生成有害、误导、带有偏见或具有攻击性的内容。

      • RLHF(基于人类反馈的强化学习)和 RLAIF(基于 AI 反馈的强化学习)是两种常见的对齐方法。RLHF 使用一个奖励模型从人类反馈中学习对齐。该奖励模型经过微调后,能够对不同的输出进行评分,根据人类提供的对齐偏好进行打分。奖励模型会向原始 LLM 提供反馈,这些反馈用于进一步调整 LLM。另一方面,RLAIF 直接将一个预训练且对齐良好的模型与 LLM 连接,帮助其从更大且更对齐的模型中学习。

      • 在最近的一项研究中(称为 DPO),Rafailov 等人指出,RLHF 是一个复杂且常常不稳定的过程,并试图通过一种新方法来解决这个问题。他们利用奖励函数与最优策略之间的映射,展示了这个受约束的奖励最大化问题可以通过一次策略训练阶段精确优化,本质上是在人类偏好数据上解决一个分类问题。他们将这种算法称为直接偏好优化(Direct Preference Optimization, DPO),该算法稳定、性能优越且计算开销较低,消除了拟合奖励模型、微调期间从语言模型中采样或进行大量超参数调整的需求。

      研究人员发现,使用 DPO 微调在控制生成内容的情感和提高摘要的响应质量方面优于 RLHF。图 30 显示了 DPO 与 RLHF 的高层次对比。

    6. Decoding Strategies: 解码(Decoding)是指使用预训练的大型语言模型(LLM)进行文本生成的过程。给定输入提示后,分词器将输入文本中的每个标记转换为对应的标记 ID。然后,语言模型将这些标记 ID 作为输入,预测下一个最有可能的标记(或一系列标记)。最后,模型生成的 logits 会通过 softmax 函数转换为概率。

    • Greedy search

    • Beam Search

    • Top-k Sampling: Top-k抽样是一种使用语言模型生成的概率分布从k个最有可能的选项中随机选择一个令牌的技术。假设我们有 6 个标记(A, B, C, D, E, F)且 k=2,其中 P ( A ) = 30 P(A)= 30% P(A)=30 P ( B ) = 20 P(B)= 20% P(B)=20 P ( C ) = P ( D ) = P ( E ) = P ( F ) = 12.5 P(C)= P(D)= P(E)= P(F)= 12.5% P(C)=P(D)=P(E)=P(F)=12.5。在 Top-k 采样 中,标记 C、D、E 和 F 被忽略,模型 60% 的情况下输出 A,40% 的情况下输出 B。这种方法确保我们优先选择最可能的标记,同时在选择过程中引入了一定的随机性。(A、B、C、D 代表的是模型生成的标记(tokens),它们可以是任何形式的文本单元,包括单词、子词或其他标记。)

      提一下Temperature的概念:

      随机性通常通过温度(temperature)的概念引入。温度 ( T ) 是一个在 0 到 1 之间的参数,它会影响 softmax 函数生成的概率,使得最有可能的标记更加具有影响力。在实际应用中,温度的作用是将输入的 logits 除以温度值:

      softmax ( x i ) = e x i / T ∑ j e x j / T (3) \text{softmax}(x_i) = \frac{e^{x_i/T}}{\sum_j e^{x_j/T}} \tag{3} softmax(xi)=jexj/Texi/T(3)

      低温度设置显著改变了概率分布(通常用于文本生成中控制生成内容的 “创造性”),而高温度则优先选择概率较高的标记。

    • Top-p Sampling: 也称为核采样(Nucleus Sampling),与 Top-k 采样采用了稍微不同的方法。它不是选择概率最高的 k 个标记,而是选择一个阈值 p,使得所选标记的概率总和超过 p。这形成了一个“核”标记的集合,从中随机选择下一个标记。换句话说,在 Top-p 采样中,语言模型按降序检查最可能的标记,并不断将它们添加到列表中,直到概率总和超过阈值 p。可以想象,这在 Top-k 标记没有大概率质量的情况下可能会更好。与 Top-k 采样不同,核采样中包含的标记数量不是固定的。这种可变性通常导致输出更加多样和富有创造性,使得核采样在与文本生成相关的任务中受到广泛欢迎。

    Cost-Effective Training/Inference/Adaptation/Compression

    在本部分中,我们将回顾一些用于更具成本效益的友好型(和计算友好型)训练和llm使用的流行方法。

    1. 为大型语言模型(LLMs)开发了许多用于优化训练的框架,这里我们介绍一些主要的框架。

      • ZeRO

      • RWKV

    2. Low-Rank Adaption (LoRA):

      低秩适应(Low-Rank Adaptation)是一种流行且轻量级的训练技术,它显著减少了可训练参数的数量,并且基于一个关键的洞察:

      针对特定任务微调后的权重与初始预训练权重之间的差异通常具有“低内在秩”——这意味着它可以被一个低秩矩阵很好地近似。使用LoRA(Low-Rank Adaptation)进行训练速度更快,内存效率更高,并且产生的模型权重更小(几百兆字节),更容易存储和共享。低秩矩阵的一个特性是它们可以表示为两个更小矩阵的乘积。这个认识导致了这样一个假设:微调权重与初始预训练权重之间的这个差异可以表示为两个更小矩阵的矩阵乘积。通过专注于更新这两个更小的矩阵而不是整个原始权重矩阵,可以大幅提高计算效率。

      对于一个预训练的权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0Rd×k ,LoRA 通过低秩分解来限制其更新,表示为: W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA W0+ΔW=W0+BA,其中 B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r A ∈ R r × k A \in \mathbb{R}^{r \times k} ARr×k,且秩 ( r ) 远小于 min ⁡ ( d , k ) \min(d, k) min(d,k)

      在训练过程中,$W_0 $被冻结,不会接收梯度更新,而 A A A B B B 包含可训练参数。值得注意的是, W 0 W_0 W0 D e l t a W = B A Delta W = BA DeltaW=BA都与相同的输入相乘,并且它们各自的输出向量是逐元素相加的。对于 h = W 0 x h = W_0x h=W0x,它们修改后的前向传播得到: h = W 0 x + Δ W x = W 0 x + B A x h = W_0x + \Delta Wx = W_0x + BAx h=W0x+ΔWx=W0x+BAx

      通常 $A $ 使用随机高斯初始化,而 B B B 使用零初始化,所以训练开始时$Delta W = BA $ 为零。然后它们通过 a l p h a r alpha r alphar 来缩放 D e l t a W x Delta Wx DeltaWx,其中 a l p h a alpha alpha 是 $ r $ 的常数。

      值得提及的是,LoRA可以应用于神经网络中任何一组权重矩阵,以减少可训练参数的数量。在Transformer架构中,自注意力模块有四个权重矩阵 ( W q ) , ( W k ) , ( W v ) , ( W o ) (W_q ),( W_k),( W_v ), ( W_o ) (Wq),(Wk),(Wv),(Wo),以及多层感知器(MLP)模块有两个。大多数情况下,LoRA专注于仅针对下游任务适应注意力权重,并冻结MLP模块,因此它们在下游任务中既不训练也为了参数效率。

    3. Knowledge Distillation

      知识蒸馏是一个从更大的模型学习的过程。早期的最佳性能模型发布证明,即使采用 API 蒸馏的方法,这种方法也非常有用。它还被称为一种将多个模型的知识蒸馏到一个较小模型中的方法。通过这种方法创建的较小模型,模型尺寸更小,可以在边缘设备上使用。

      知识可以通过不同形式的学习进行转移:响应蒸馏、特征蒸馏和API蒸馏。响应蒸馏仅关注教师模型的输出,旨在教会学生模型如何与教师模型在预测上表现得相同或至少相似。特征蒸馏不仅使用最后一层,还利用中间层来为学生模型创建更好的内部表示。这有助于较小的模型拥有与教师模型相似的表示。

      API蒸馏指的是使用API(通常是LLM的提供商如OpenAI)训练更小的模型,在大型语言模型的情况下,它是通过直接使用较大模型的输出来训练模型,这使其与响应蒸馏非常相似。这种类型的蒸馏带来很多担忧,因为通常情况下模型本身不能公开。通常会公开一个付费的API接口,对用户的每次调用收取费用。如何使用模型的输出也受到限制,如OpenAI禁止使用API去创建与其竞争的大模型。这种情况下的主要价值是训练数据。

    4. Quantization(量化):

      deep learning的核心是一组应用于矩阵的数学函数,对模型的权重有特定精度。 降低权重的精度可以减小模型的大小,也可以使其变得更快。例如,Float-32Int-8 相比速度更慢。这个过程被称作量化,可被应用于任何阶段。模型的量化可被分为:可被分为动态与静态。动态后训练量化在运行时计算量化范围,因此相较于静态量化速度较慢。量化感知训练则在训练过程中加入量化标准,使得量化模型在训练时被训练和优化。这种方法确保最终模型具有良好的性能,并且不需要在训练后进行量化。

HOW LLMS ARE USED AND AUGMENTED

本节讨论LLM的缺陷以及对幻觉 现象进行一些深入讨论

大语言模型经过训练后,我们可以用其为多种任务生成所需的输出。然而,为了充分发掘它的潜力或解决一些它的缺点。我们需要使用一些外部手段去增强模型。

  1. LLM limitations

    大语言模型是为预测一个token而训练的。微调与对齐提高了大语言模型的性能并为它们的能力增加了不同的维度,但仍然有一些局限性:

    • 它们没有状态/记忆。大型语言模型(LLMs)无法记住之前提示中发送的内容。这对于许多需要某种形式状态的使用案例来说是一个重要的限制。

    • 它们是随机的/概率性的。如果你多次向大型语言模型(LLM)发送相同的提示,你很可能会得到不同的响应。虽然可以通过调整参数,特别是温度,来限制响应的变化性,但这仍然是它们训练的固有特性,可能会导致一些问题。

    • 它们的信息是过时的,并且本身无法访问外部数据。大型语言模型(LLM)甚至不知道当前的时间或日期,也无法获取训练集中未包含的任何信息。

    • 它们通常非常庞大。这意味着在训练和服务时需要许多昂贵的GPU机器。在某些情况下,较大的模型在服务水平协议(SLA)方面表现较差,特别是在延迟方面。

    • 它们会出现幻觉。大型语言模型(LLMs)没有“真理”的概念,通常是在良好与不良内容的混合上训练的。它们可能会生成非常可信但不真实的答案。

  2. Hallucination(幻觉):

    在大型语言模型(LLMs)领域,“幻觉”现象引起了广泛关注。在文献中,特别是在《自然语言生成中的幻觉调查》一文中,幻觉被定义为“生成与提供源内容不符或无意义的内容。”这一术语虽然源于心理学,但在人工智能领域得到了广泛应用。在大语言模型领域,幻觉可被分为两种类型:

    • 内在幻觉: 这些内容与源材料直接冲突,导致事实不准确或逻辑不一致。

    • 外在幻觉: 这些内容虽然不直接矛盾,但无法与源材料进行验证,包含了推测或无法确认的元素。

    在大型语言模型(LLM)上下文中,“源”的定义随任务而异。在基于对话的任务中,它指的是“世界知识”,而在文本摘要中,则指输入文本本身。这一区分在评估和解释幻觉时至关重要。幻觉的影响也高度依赖于上下文。例如,在创意活动如诗歌创作中,幻觉可能被认为是可接受甚至有益的。

    大型语言模型(LLMs)在多样化的数据集上进行训练,包括互联网、书籍和维基百科,它们基于概率模型生成文本,但并不具备对真伪的内在理解。最近的进展,例如指令调优和基于人类反馈的强化学习(RLHF),试图引导LLMs朝着更准确的输出方向发展,但其基本的概率特性及固有的局限性仍然存在。最近的一项研究《大型语言模型在推理任务中的幻觉来源》强调了导致LLMs出现幻觉的两个关键因素:真伪先验和相对频率启发式,凸显了LLM训练和输出生成中固有的复杂性。有效的自动化幻觉测量需要结合统计指标和基于模型的指标。

  3. Using LLMs: Prompt Design and Engineering
    在生成性人工智能模型中,提示是用户提供的文本输入,用以引导模型的输出。这可以是简单的问题,也可以是详细的描述或特定的任务。提示通常由指令、问题、输入数据和示例构成。在实践中,为了从AI模型中引出期望的响应,提示必须包含指令或问题,其它元素则是可选的。高级提示涉及更复杂的结构,例如“思维链”提示,通过这种方式,引导模型遵循逻辑推理过程来得出答案。

    提示工程是一个快速发展的学科,塑造了大型语言模型(LLMs)和其他生成性人工智能模型的交互和输出。提示工程的核心在于设计最佳提示,以实现与生成模型特定目标的对接。这一过程不仅涉及对模型的指示,还需要对模型的能力和局限性以及其运作的上下文有一定的理解。

    提示工程超越了简单的提示构建;它需要结合领域知识、对人工智能模型的理解,以及在不同上下文中量身定制提示的系统方法。这可能涉及创建可以根据给定数据集或上下文进行程序化修改的模板。例如,基于用户数据生成个性化响应时,可能使用一个动态填充相关用户信息的模板。

    此外,提示工程是一个迭代和探索的过程,类似于传统机器学习实践中的模型评估或超参数调整。这个领域的快速发展表明,它有潜力彻底改变机器学习的某些方面,超越传统的特征工程或架构工程等方法。另一方面,像版本控制和回归测试这样的传统工程实践也需要适应这一新范式,正如它们曾适应其他机器学习方法一样。

    一些当前流行的提示词方法:

    • 思维链(CoT) 技术最初在谷歌研究人员的论文“思维链提示激发大型语言模型中的推理”中描述,代表了大型语言模型(LLMs)提示工程的一个重要进展。该方法的核心在于理解,尽管LLMs在标记预测方面表现出色,但它们并非天生设计用于显式推理。CoT通过引导模型经过必要的推理步骤来解决这一问题。

      CoT的基础在于将LLMs的隐性推理过程显性化。 通过列出推理所需的步骤,模型更接近于逻辑和有根据的输出,尤其是在需要的不仅仅是简单的信息检索或模式识别的场景中。

      CoT提示主要有两种形式:

      1. 零样本思维链(Zero-Shot CoT):这种形式要求大型语言模型(LLM)“逐步思考”,促使它拆解问题并清晰表达每个推理阶段。

      2. 手动思维链(Manual CoT):这是一个更复杂的变体,需要提供逐步推理的示例作为模型的模板。尽管这种方法能产生更有效的结果,但在可扩展性和维护性方面会带来挑战。

      手动思维链(Manual CoT)比零样本思维链(Zero-Shot CoT)更有效。然而,这种基于示例的思维链的有效性依赖于多样化示例的选择,而手动构建包含逐步推理示例的提示既困难又容易出错。这就是自动思维链(Automatic CoT)发挥作用的地方。自动化方法可以简化示例生成和选择的过程,从而提高效率和准确性。

    • 思维树(Tree of Thought) 思维树(ToT)提示技术受到在确定最合理的解决方案之前考虑各种替代方案或思维过程的概念启发。ToT的基础在于扩展成多个“思维树”,每个分支代表一种不同的推理路径。这种方法使大型语言模型(LLM)能够探索多种可能性和假设,类似于人类的认知过程,在确定最可能的情境之前,会考虑多种情况。

    • Self-Consistency: 要求大语言模型针对同一查询生成多个响应,这些响应之间的一致性作为其准确性和可靠性的指标。自一致性方法的基础在于,如果LLM对同一提示生成多个相似的响应,那么该响应更可能是准确的。 这一方法涉及多次请求LLM处理同一查询,并分析每次响应的一致性。该技术在事实准确性和精确性至关重要的场景中尤为有效。

      响应的一致性可以通过多种方法进行测量。一种常见的方法是分析响应内容的重叠情况。其他方法可能包括比较响应的语义相似性,或使用更复杂的技术,如BERT分数或n-gram重叠。这些测量有助于量化大型语言模型(LLM)生成的响应之间的一致程度。自一致性在信息真实性至关重要的领域具有重要应用,尤其是在像事实核查这样的场景中,确保AI模型提供信息的准确性是必不可少的。通过采用这一技术,提示工程师可以增强大型语言模型(LLMs)的可信度,使其在需要高度事实准确性的任务中更加可靠。

    • Reflection: 要求LLM根据响应的正确性和推理去评估它自己的输出,在生成初始响应后,模型会被提示反思自己的输出,考虑诸如事实准确性、逻辑一致性和相关性等因素。这一内省过程可以导致生成修订或改进的响应。

      Reflection的一个关键点是LLM的自我编辑能力,通过评估它自己的初始响应,LLM可以识别潜在的错误或者可以提升的区域。这种生成、反思和迭代的过程能够使得LLM改进其输出,提升响应的准确性和可靠性。

    • Expert Prompting: 通过模拟各个领域专家的响应来增强大型语言模型(LLMs)的能力。这种方法要求LLM假设专家的角色并相应地进行回答,从而提供高质量和信息丰富的答案。在专家提示中,一个关键策略是多专家方法。LLM被提示考虑来自多个专家视角的响应,然后将这些响应进行综合,形成全面而均衡的答案。这种技术不仅增强了响应的深度,还融合了多种观点,反映了对主题更全面的理解。

    • Chains: 指使用大语言模型去解决复杂任务的方法,这种方法涉及到创建一系列相互关联的步骤或过程,每个步骤都有助于实现最终的结果。这种方法涉及到创建一系列相互关联的workflow,每个步骤都有助于实现最终的结果。链中的每个组件都执行一个特定的功能,其中一个组件的输出作为下一个组件的输入。

    • Rails: 在高级提示工程中,Rails指的是通过预定义规则或模板引导和控制大型语言模型(LLMs)输出的一种方法。这种方法旨在确保模型的响应符合特定标准,从而增强输出的相关性、安全性和准确性。Rails的概念涉及建立一个框架或一套准则,LLM在生成响应时必须遵循。这些准则通常使用称为规范形式(Canonical Forms)的建模语言或模板来定义,规范形式标准化了自然语言句子的结构和表达方式。

    • Automatic Prompt Engineering (APE): 自动提示工程(APE)专注于自动化大型语言模型(LLMs)的提示创建过程。APE旨在简化和优化提示设计流程,利用LLMs自身的能力来生成和评估提示。APE涉及以自我引用的方式使用LLMs,其中模型用于生成、评分和完善提示。这种递归使用LLMs的方式能够创建出更高质量的提示,更有可能引发期望的响应或结果。

      APE可被拆分为以下几个关键步骤:

      1. prompt generating: LLM根据给定的目标或提示生成一系列潜在的提示。

      2. prompt scoring: 每个生成的提示随后会根据其有效性进行评估,通常使用清晰度、特异性和引发期望响应的可能性等标准。

      3. Refinement and Iteration: 基于这些评估,提示可以进行精炼和迭代,从而进一步提高其质量和有效性。

    1. Augmenting LLMs through external knowledge - RAG

      预训练的大型语言模型(LLMs)主要的限制之一是它们缺乏最新知识或无法访问私有或特定用例的信息。这就是检索增强生成(RAG)发挥作用的地方。RAG涉及从输入提示中提取查询,并使用该查询从外部知识源(例如搜索引擎或知识图谱)检索相关信息。然后,将相关信息添加到原始提示中,并传递给LLM,以便模型生成最终响应。RAG系统包括三个重要组件:检索、生成和增强。

      a) RAG感知提示技术:由于RAG在构建先进的大型语言模型(LLM)系统中的重要性,最近开发了几种RAG感知提示技术。其中一种技术是前瞻性主动检索增强生成(FLARE)。前瞻性主动检索增强生成(FLARE)通过迭代结合预测和信息检索,增强了大型语言模型(LLMs)的能力。FLARE代表了检索增强生成使用的一种演变,旨在提高LLM响应的准确性和相关性。

      前瞻性主动检索增强生成(FLARE)通过迭代结合预测和信息检索,增强了大型语言模型(LLMs)的能力。FLARE代表了检索增强生成使用的一种演变,旨在提高LLM响应的准确性和相关性。

      FLARE涉及一个迭代过程,其中大型语言模型(LLM)主动预测即将生成的内容,并将这些预测作为查询来检索相关信息。这种方法与传统的检索增强模型形成对比,后者通常只检索一次信息,然后进行生成。在FLARE中,这个过程在生成阶段是动态和持续的。在FLARE中,LLM生成的每个句子或段落都会进行置信度评估。如果置信度低于某个阈值,模型会使用生成的内容作为查询来检索相关信息,然后用于重新生成或完善该句子。

    2. Using External Tools

      从上述描述中可以看出,从外部知识源检索信息只是增强大型语言模型(LLM)的一种潜在方式。更一般来说,LLM可以访问任意数量的外部工具(例如,服务的API),以增强其功能。在这种情况下,RAG可以被视为更广泛的“工具”类别的特定实例。

      在这个背景下,工具指的是LLM可以利用的外部功能或服务。这些工具扩展了LLM能够执行的任务范围,从基本的信息检索到与外部数据库或API的复杂交互。通过整合这些工具,LLM能够处理更复杂的任务,提升其整体能力和应用场景。

      在论文Toolformer: Language Models Can Teach Themselves to Use Tools 中,作者通过训练LLM去决定选择什么样的工具,何时调用API, 甚至API选择什么样的参数?工具可以包括两个不同的搜索引擎或一个计算器。在以下示例中,LLM决定调用一个外部问答工具、一个计算器和一个维基百科搜索引擎。最近,伯克利的研究人员训练了一种名为Gorilla的新型LLM,它在使用API方面超过了GPT-4,这是一种特定但相当通用的工具。

      a) 工具感知提示技术:与之前描述的RAG类似,已经开发了几种工具感知提示方法,以使工具的使用更加可扩展。一种流行的技术被称为自动多步骤推理与工具使用(ART)。

      自动多步骤推理与工具使用(ART) 是一种提示工程技术,它将自动化的思维链提示与外部工具的使用相结合。ART代表了多种提示工程策略的融合,增强了大型语言模型(LLMs)处理需要推理和与外部数据源或工具互动的复杂任务的能力。

      ART采用系统化的方法,在给定任务和输入时,系统首先从任务库中识别类似任务。这些任务随后作为示例用于提示,指导LLM如何处理和执行当前任务。这种方法在任务需要内部推理与外部数据处理或检索的结合时特别有效。

    3. LLM Agents

      人工智能代理的概念在人工智能的历史上已经得到了充分探讨。Agent通常是一个自主实体,可以通过其传感器感知环境,基于当前状态做出判断,并根据可用的行动相应地采取行动。

      在LLM中,Agent 指的是一个基于增强的LLM的系统,能够去自动地执行一些特定任务。这些Agents 能够与用户和环境进行交流,随即做出基于input和预期目标的决定。

      基于LLM的代理的功能包括:

      • Tool Access

      • Decision Making

      例如,一个能够访问天气API的LLM,可以回答与特定地点天气相关的任何问题。换句话说,它可以利用API来解决问题。此外,如果该LLM能够访问一个允许进行购买的API,就可以构建一个采购代理,不仅能够从外部世界获取信息,还能够对此采取行动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值