人工智能
基于解码器的大型语言模型:完整指南
大型语言模型 (LLM) 通过展示在生成类似人类的文本、回答问题和帮助广泛的语言相关任务方面的卓越能力,彻底改变了自然语言处理 (NLP) 领域。这些强大的模型的核心是 解码器仅变换器架构,这是对原始变换器架构的变体,该架构由 Vaswani 等人在具有里程碑意义的论文 “注意力就是你需要的所有” 中提出。
在这份综合指南中,我们将探索基于解码器的 LLM 的内部工作原理,深入研究基本构建块、架构创新和实现细节,这些细节使这些模型推动了 NLP 研究和应用的前沿。
变换器架构:复习
在深入研究基于解码器的 LLM 之前,回顾变换器架构至关重要,这是这些模型的基础。变换器引入了一种新颖的序列建模方法,仅依赖于注意力机制来捕获数据中的长距离依赖,而无需使用循环或卷积层。
原始变换器架构由两个主要组件组成:编码器和解码器。编码器处理输入序列并生成上下文化表示,然后由解码器消费以生成输出序列。该架构最初是为机器翻译任务设计的,其中编码器处理源语言中的输入句子,解码器生成目标语言中的相应句子。
自注意力:变换器成功的关键
变换器的核心是自注意力机制,一种强大的技术,允许模型加权和聚合输入序列中不同位置的信息。与传统的序列模型不同,传统模型按顺序处理输入标记,自注意力使模型能够捕获任何标记对之间的依赖关系,无论它们在序列中的位置如何。
自注意力操作可以分解为三个主要步骤:
- 查询、键和值投影:输入序列被投影到三个单独的表示中:查询 (Q)、键 (K) 和 值 (V)。这些投影是通过将输入与学习到的权重矩阵相乘获得的。
- 注意力得分计算:对于输入序列中的每个位置,通过将对应的查询向量与所有键向量的点积计算注意力得分。这些得分表示每个位置与当前处理位置的相关性。
- 值的加权和:注意力得分被 softmax 函数归一化,得到的注意力权重用于计算值向量的加权和,生成当前位置的输出表示。
多头注意力是一种自注意力机制的变体,允许模型通过并行计算多个“头”上的注意力得分来捕获不同类型的关系,每个头都有其自己的查询、键和值投影。
架构变体和配置
虽然基于解码器的 LLM 的核心原理保持一致,研究人员已经探索了各种架构变体和配置,以提高性能、效率和泛化能力。在本节中,我们将深入研究不同的架构选择及其含义。
架构类型
基于解码器的 LLM 可以大致分为三种类型:编码器-解码器、因果解码器和前缀解码器。每种架构类型都表现出不同的注意力模式。
编码器-解码器架构
基于原始变换器模型,编码器-解码器架构由两个堆栈组成:编码器和解码器。编码器使用堆叠的多头自注意力层来编码输入序列并生成潜在表示。然后,解码器对这些表示执行交叉注意力以生成目标序列。虽然这种架构在各种 NLP 任务中有效,但很少有 LLM,如 Flan-T5,采用这种架构。
因果解码器架构
因果解码器架构包含一个单向注意力掩码,允许每个输入标记仅关注过去的标记和自身。输入标记和输出标记都在同一个解码器中处理。值得注意的模型,如 GPT-1、GPT-2 和 GPT-3,是基于这种架构构建的,GPT-3展示了令人瞩目的上下文学习能力。许多 LLM,包括 OPT、BLOOM 和 Gopher,都广泛采用了因果解码器。
前缀解码器架构
也称为非因果解码器,前缀解码器架构修改了因果解码器的掩码机制,以启用对前缀标记的双向注意力和对生成标记的单向注意力。与编码器-解码器架构类似,前缀解码器可以对前缀序列进行双向编码,并使用共享参数自回归地预测输出标记。基于前缀解码器的 LLM 包括 GLM130B 和 U-PaLM。
所有三种架构类型都可以使用 专家混合 (MoE) 缩放技术扩展,该技术对每个输入稀疏激活神经网络的子集权重。这一方法已在 Switch Transformer 和 GLaM 等模型中采用,增加专家数量或总参数大小显示出显著的性能改进。
解码器仅变换器:拥抱自回归性质
虽然原始变换器架构是为序列到序列任务(如机器翻译)而设计的,但许多 NLP 任务(如语言建模和文本生成)可以被视为自回归问题,其中模型一次生成一个标记,条件为之前生成的标记。
这就是解码器仅变换器的由来,这是变换器架构的一个简化变体,仅保留解码器组件。这种架构特别适合自回归任务,因为它一次生成一个输出标记,利用之前生成的标记作为输入上下文。
解码器仅变换器和原始变换器解码器之间的关键区别在于自注意力机制。在解码器仅设置中,自注意力操作被修改为防止模型关注未来标记,这是一种称为“因果性”的属性。这是通过一种称为“掩码自注意力”的技术实现的,其中对应于未来位置的注意力得分在 softmax 归一化步骤中设置为负无穷大,有效地将它们屏蔽出来。
基于解码器的 LLM 的架构组件
虽然自注意力和掩码自注意力的核心原理保持不变,现代基于解码器的 LLM 已经引入了几种架构创新,以提高性能、效率和泛化能力。让我们探索一些状态-of-the-art LLM 中使用的关键组件和技术。
输入表示
在处理输入序列之前,基于解码器的 LLM 使用标记化和嵌入技术将原始文本转换为模型可以处理的数值表示。
标记化:标记化过程将输入文本转换为标记序列,可以是单词、子词,甚至是单个字符,具体取决于使用的标记化策略。LLM 中流行的标记化技术包括字节对编码 (BPE)、句子片段和单词片段。这些方法旨在在词汇表大小和表示粒度之间取得平衡,使模型能够有效地处理罕见或超出词汇表的单词。
标记嵌入:标记化后,每个标记都映射到一个密集的向量表示,称为标记嵌入。这些嵌入是在训练过程中学习的,并捕获标记之间的语义和句法关系。
位置嵌入:Transformer 模型同时处理整个输入序列,缺乏循环模型中标记位置的内在概念。为了纳入位置信息,位置嵌入被添加到标记嵌入中,允许模型根据标记在序列中的位置区分它们。早期的 LLM 使用基于正弦函数的固定位置嵌入,而更最近的模型已经探索了可学习的位置嵌入或替代位置编码技术,如旋转位置嵌入。
多头注意力块
基于解码器的 LLM 的核心构建块是多头注意力层,它执行前面描述的掩码自注意力操作。这些层被堆叠多次,每层都关注前一层的输出,允许模型捕获越来越复杂的依赖关系和表示。
注意力头:每个多头注意力层由多个“注意力头”组成,每个头都有其自己的查询、键和值投影。这允许模型同时关注输入的不同方面,捕获多样化的关系和模式。
残差连接和层归一化:为了促进深度网络的训练并减轻梯度消失问题,基于解码器的 LLM 采用残差连接和层归一化技术。残差连接将层的输入添加到其输出,允许梯度在反向传播期间更容易地流动。层归一化有助于稳定激活和梯度,进一步提高训练稳定性和性能。
前馈层
除了多头注意力层外,基于解码器的 LLM 还包含前馈层,它对序列中的每个位置应用一个简单的前馈神经网络。这些层引入非线性,使模型能够学习更复杂的表示。
激活函数:前馈层中的激活函数选择会显著影响模型的性能。虽然早期的 LLM 依赖于广泛使用的 ReLU 激活,但更最近的模型采用了更复杂的激活函数,如高斯误差线性单元 (GELU) 或 SwiGLU 激活,它们表现出改进的性能。
稀疏注意力和高效变换器
虽然自注意力机制强大,但它具有相对于序列长度的二次计算复杂度,使其对于长序列来说计算成本高昂。为了解决这个挑战,已经提出了几种技术来减少自注意力的计算和内存要求,实现长序列的高效处理。
稀疏注意力:稀疏注意力技术,例如 GPT-3 模型中使用的技术,选择性地关注输入序列中的一个子集位置,而不是为所有位置计算注意力得分。这可以在保持合理的性能的同时显著减少计算复杂度。
滑动窗口注意力:在 Mistral 7B 模型中引入的滑动窗口注意力 (SWA) 是一种简单而有效的技术,它限制了每个标记的注意力范围到一个固定窗口大小。这一方法利用变换器层跨多个层传输信息的能力,有效地增加了注意力范围,而无需完全自注意力的二次复杂度。
滚动缓冲区缓存:为了进一步减少内存要求,特别是对于长序列,Mistral 7B 模型采用了滚动缓冲区缓存。这种技术存储和重用计算的键和值向量,针对固定窗口大小,避免了冗余计算并最小化内存使用。
分组查询注意力:在 LLaMA 2 模型中引入的分组查询注意力 (GQA) 是多查询注意力机制的一种变体,它将注意力头分成组,每组共享一个共同的键和值矩阵。这一方法在多查询注意力的效率和标准自注意力的性能之间取得平衡,提供了改进的推理时间,同时保持高质量的结果。




