大型语言模型是如何工作的(26分钟阅读)

TLDR AI 新闻

摘要

详细讲解基于Transformer的大型语言模型的工作原理,涵盖分词、嵌入、注意力机制和下一个词元预测,无需复杂数学。

现代大型语言模型大多通过反复堆叠Transformer模块构建而成——差异在于各自的训练数据、规模与配置选择,以及在此基础上进行的后训练过程。
查看原文
查看缓存全文

缓存时间: 2026/06/08 15:13

# 大语言模型实际工作原理 原文来源:https://www.0xkato.xyz/how-llms-actually-work - 首页 (https://www.0xkato.xyz/) - 博客 (https://www.0xkato.xyz/blog) - 研究 (https://www.0xkato.xyz/projects) - 关于 (https://www.0xkato.xyz/about) - 作品集 (https://github.com/0xkato/Portfolio/tree/main) 2026年6月1日·周一·26分钟 本文将对大语言模型的工作原理进行深入剖析。现代大语言模型大多通过反复堆叠 Transformer 模块构建而成,因此理解 Transformer 机制就掌握了核心要点。 我将介绍现代基于 Transformer 的大语言模型内部核心机制,避免繁琐的数学公式。别误会,你确实应该学习数学,但本文可作为入门引导。 大多数现代大语言模型共享同一套 Transformer 家族骨架。差异源于训练数据、规模与配置选择以及后续的微调。读完本文后,你应该能够阅读众多现代大语言模型论文或模型卡,并理解每个部分对应架构中的哪个组件。 以下是探索路径: 1. 词元(Token):文本字符串如何转化为整数序列 2. 嵌入(Embedding):这些整数如何获得语义 3. 位置编码(Positional Encoding):模型如何知道词元的顺序 4. 注意力(Attention):词元之间如何共享信息 5. 多头注意力(Multi-head Attention):模型如何同时追踪多种关系 6. 前馈网络(Feed-Forward Network):模型存储结构的主要部分 7. 残差流与层归一化(Residual Stream & Layer Normalization):深层堆叠为何可训练 8. 预测下一个词元(Next Token Prediction):模型实际输出什么,生成循环如何运作 9. 架构与训练权重(Architecture vs Trained Weights):现代大语言模型间的广泛共享点与差异点 从词元化到下一个词元预测的 Transformer 流程 文中穿插了小解释,方便不同背景的读者理解。 --- ## 词元化 模型不直接读取文本,它们读取整数 ID。这个将你的提示词转换为整数序列的步骤被称为词元化。词元化器接收一个字符串,输出一个整数序列,每个整数指向固定词表中的一项。现代大语言模型的词表通常包含数万到数十万个条目。 > **小解释:词元 ID** 词元 ID 是模型用来表示某个词表条目的整数。模型处理的是数字,而非书写的文字本身。 词元通常不是完整的单词,而是子词片段。例如“tokenization”可能被拆分为 ["token", "ization"],“running”可能被拆分为 ["run", "ning"]。原因在于效率:整词词表太大且无法泛化到新词;字符级词表太小,迫使模型从头学习最简单的模式。子词词元化处于中间地带。最常用的片段成为单个词元,罕见或新颖的单词则由更小的片段组成。 > **小解释:词表** 词表是词元化器中固定的片段列表。每个片段有一个 ID,模型只能直接接收该列表中的 ID。 这种权衡表现在意想不到的地方。经典例子:问LLM“strawberry”中有多少个R?LLM过去常常答错。这不是模型计数失败,而是模型不直接处理字母,只处理恰好拼出人类会逐字母拆分单词的词元ID。 词元化将文本转换为词元ID 不同模型家族使用不同的词元化器。GPT 模型使用 Byte Pair Encoding 变体,LLaMA 风格模型常用 SentencePiece。选择会影响计算量(词元越少,计算量越小)以及多语言覆盖等因素,但基本形态相同:文本输入,整数输出。 现在提示词已转换为整数序列,下一步是赋予这些整数意义。 --- ## 嵌入 像 `1024` 这样的词元 ID 只是一个行索引,本身不表示任何含义。赋予它含义的是一张巨大的表格,称为嵌入矩阵。 每个模型都有一张嵌入矩阵。它对应词表中的每个条目有一行,每行是一个由数字组成的长向量。每行的长度是模型的隐藏层大小。在许多7B类模型中,这意味着每个词元有4096个数字。更大的模型通常使用更宽的向量。 > **小解释:向量** 向量是一个数字列表。在 Transformer 中,每个词元被转换为一个向量,以便模型对其进行数学运算。 当词元化器将整数交给模型时,模型查找该行并使用对应的向量。这个向量就是该词元的嵌入,是模型在训练中学习到的对该词元“含义”的表示。 > **小解释:嵌入矩阵** 嵌入矩阵是一张查找表。输入词元 ID,输出学习到的向量。 这些嵌入的一个有趣特性是,语义相似的词元最终会得到相似的向量。“king”的向量在空间中靠近“queen”的向量,“Paris”的向量靠近“France”的向量。这些都不是硬编码的,而是在大量文本训练中自然涌现的,模型学习这些位置是因为这有助于预测文本。 你甚至可以对嵌入进行算术运算,有时结果有效。著名的例子是 `king - man + woman ≈ queen`。嵌入空间的几何结构承载着真实的语义结构,尽管没有人告诉模型要这样构建。 嵌入空间类比:语义关系 需要明确一点:在这个阶段,每个词元已被其嵌入替换,但嵌入本身并不表示词元在序列中的位置。无论“dog”是你的提示词中的第一个词还是第五个词,它的向量都是相同的。这就是问题所在。 这正是位置编码要填补的空白。 --- ## 位置编码 普通的自注意力机制没有内置的词序表示。如果没有位置信号,它无法直接知道“dog”出现在“bites”之前还是之后。 词序改变含义,因此模型需要额外信息。它需要一种将每个词元的位置信息注入数学运算的方法。 > **小解释:位置编码** 位置编码是模型获取顺序信息的方式。它告诉模型每个词元在序列中的位置。 最初的 Transformer 论文(Vaswani et al. 2017)通过为每个位置赋予自己独特的数字模式,并将其直接加到每个词元的嵌入上(在任何其他处理之前)来实现这一点。位置1有一种模式,位置5有另一种模式,位置100又有另一种模式。这些模式来自不同频率的正弦和余弦波。现在,位置1的“dog”的嵌入与位置5的“dog”的嵌入不同,只是因为添加的位置模式不同。 这种方法有效,并且正弦编码的部分原因是它们可以外推到训练中见过的确切序列长度之外。但随着模型规模扩大,加性位置方案仍然存在两个重要问题。 首先,嵌入必须在同一组数字中同时携带含义和位置信息。可容纳的内容有限。 其次,学习到的绝对位置嵌入尤其难以干净地泛化。如果你在最多2048个词元的提示词上训练,模型在训练中从未见过位置5000,该位置的嵌入也无法以相同方式学习。 现代模型大多采用一种不同的方案,称为旋转位置编码(Rotary Position Embeddings, RoPE),由 Su 等人于2021年提出,现在被 LLaMA、Mistral、Gemma、Qwen 以及大多数其他开源权重家族所使用。直观理解:RoPE 不是将位置信息加到每个词元的向量中,而是根据词元的位置角度旋转 Query 和 Key 向量。位置1的词元获得微小旋转,位置100的词元获得较大旋转。当两个词元随后在注意力中进行比较时,重要的是它们的 Query 和 Key 旋转之间的差异,这编码了它们之间的距离。 > **小解释:RoPE** RoPE 代表旋转位置编码。它不是添加位置向量,而是旋转 Query 和 Key 向量,使得相对距离在注意力中显现出来。 旋转位置编码根据位置旋转向量 实际优势是显而易见的。RoPE 自然地编码了相对位置(这更接近注意力实际需要的),能更好地泛化到更长的上下文,并且不向模型添加新参数。 即使有了良好的位置编码,现代大语言模型仍然存在文献中记载的“中间迷失”问题(Liu et al. 2023)。它们更可靠地使用长提示词开头和结尾的信息,而对埋在中间的信息使用效果较差。这就是为什么像“把重要上下文放在开头”或“在末尾重复关键信息”这样的提示工程技巧确实有效。模型并不是同等有效地使用提示词的每一部分。 有了词元含义和位置编码,接下来的问题是词元之间如何实际交换信息? --- ## 注意力 这是赋予该架构名称的机制:注意力。 在每个 Transformer 层内部,注意力只做一件事。它让每个词元查看它被允许看到的其他词元,并决定哪些词元对下一步预测最重要。 它通过赋予每个词元三个角色来做到这一点。每个词元被转换为三个新的向量,称为 Query、Key 和 Value(Q、K、V)。 > **小解释:Q、K、V** Query 表示“我在寻找什么”,Key 表示“我与什么匹配”,Value 是当匹配强烈时被复制的信息。 - Query 问:“我从其他词元那里寻找什么?” - Key 说:“这是我向正在查看我的词元提供的内容。” - Value 携带:“当匹配发生时,这是被传递的内容。” 同一个词元同时扮演所有三个角色。Q、K、V 的变换是学习到的矩阵,因此模型在训练过程中会弄清楚每个词元应该寻找什么以及应该提供什么。 匹配通过相似度分数进行。每个词元的 Query 与它被允许看到的每个词元的 Key 进行比较,使用缩放点积。直观上,这衡量了两个向量对齐的程度。缩放操作在 softmax 之前保持数字稳定。 > **小解释:点积** 点积是一种简单的评分方式,衡量两个向量的对齐程度。对齐程度越高,匹配越强。 然后匹配分数通过 softmax 转化为权重。Softmax 将任意一组数字转化为和为1的类似概率的分布。匹配分数高的词元获得更高的权重,然后用这些权重对 Value 向量进行加权平均。 > **小解释:softmax** Softmax 将原始分数转化为总和为1的权重。大分数获得大权重,小分数获得小权重。 举个例子。考虑句子“我昨天看到的那只猫正在睡觉”。当模型处理“正在”时,它需要找出是谁在睡觉。“正在”的 Query 向量与被允许看到的词元的 Key 向量进行比较。与“猫”的点积很高,因为模型已经学会像“正在”这样的动词需要主语,而像“猫”这样的主语产生的 Key 向量与 Query 对齐良好。与“昨天”的点积很低。Softmax 将这些分数转化为权重,“猫”获得高权重,“昨天”获得低权重。然后模型对相应的 Value 向量进行加权求和,因此“猫”的 Value 主导结果。“正在”的新表示现在主要由“猫”的 Value 塑造。这就是相隔几个位置的词元如何成为指代对象。 对于 GPT 风格的语言模型有一个特定约束:它们是从左到右生成文本。位置5的词元只能关注位置1到5,不能关注位置6、7、8,因为这些词元尚未生成。这称为因果掩码。实现很简单:未来词元获得的匹配分数非常低,以至于 softmax 后它们的权重实际上为零。 > **小解释:因果掩码** 因果掩码隐藏未来词元。它确保仅解码器语言模型在预测下一个词元时无法看到后面内容。 注意力热图:因果掩码与对“猫”的高关注 可解释性研究中最有趣的发现之一是关于称为“归纳头”(Induction Heads)的特殊注意力头,由 Anthropic 在2022年发现。这些头学会在提示词中识别形式为“A B ... A”的模式,并预测接下来是 B。当模型第二次看到“A”时,归纳头会回看之前出现“A”的位置,看到其后跟的是什么,然后复制那个词。它们是上下文学习(LLM 从提示词中捕捉模式并继续下去的能力)背后最清晰的已知机制之一。 > **小解释:归纳头** 归纳头是一种注意力头,它注意到提示词中的重复模式并帮助继续这些模式。 注意力有一个巨大的成本。在全注意力中,每个词元与它被允许看到的所有词元进行比较,因此将提示词长度加倍会使工作量大致增加四倍。这就是为什么长提示词运行成本高,也是为什么最近很多研究致力于使注意力更高效(FlashAttention、稀疏注意力、线性注意力)。 但一个注意力头只给模型提供一种学习到的视图来观察这些关系。 --- ## 多头注意力 单次注意力传递只给模型提供一种决定哪些词元对哪些词元重要的方式。这还不够。语言中有多种关系同时发生:主语和动词的一致性、代词及其指代的名字、句子之间的长距离引用、词序和局部短语。 多头注意力通过并行运行多次注意力来解决这个问题,每次并行传递在自己的较小空间中操作。每次并行传递称为一个头。 > **小解释:注意力头** 注意力头是一次独立的注意力传递,拥有自己学习到的投影。 这里有一个常见误解,许多教程也会搞错。每个头不是获得原始词元向量的字面切片。每个头拥有自己学习到的投影矩阵,将完整词元向量映射到自己的较小 Q、K、V 向量上。因此,如果一个模型每个词元有4096个数字,有32个头,每个头通常工作在128维空间中,但这128个数字是完整4096维的学习投影,而不是固定切片。它们是同一个词元的不同“视图”,而不是不同片段。 每个头独立运行其注意力传递。然后所有头的输出被拼接起来,并通过一个最终的线性层混合回一个全尺寸向量。模型也学习这个最终的混合。 多头注意力:组合专门化的注意力头 有趣之处在于,不同的头往往最终部分专门化。模型从未被告知每个头应该做什么。专门化是在训练过程中自然涌现的。研究人员发现了追踪语法(将动词与其宾语、冠词与其名词联系起来)的头、弄清楚哪个代词指代哪个名字的头、追踪位置模式的头、归纳头,以及更多。单个 Transformer 层可能就有32个头。一个现代前沿模型有几十层。因此典型的大语言模型总共有数千个注意力头,每个头添加自己学习到的视图。 存在一个实际成本问题,这推动了最近的架构变革。每个头需要将其 Key 和 Value 向量保存在记忆中。

相似文章

大语言模型实际工作原理

Lobsters Hottest

深入剖析现代大语言模型的工作原理,涵盖从分词到下一个词预测的核心机制,无需复杂数学知识。

LLMs 101:实用指南(2026年版)

X AI KOLs

一份关于LLMs的全面实用指南,涵盖推理机制、令牌、Transformer、KV缓存、本地部署硬件和量化,截至2026年5月。

@Potatoloogs: LLM 内部究竟怎么运作:从 token 到 next-token,九个核心机制完整梳理 a)Tokenization:模型读的不是文字,是整数 · 文本先被切成 subword 片段,再映射成整数 ID;现代 LLM 词表通常有数万到数…

X AI KOLs Timeline

本文从 tokenization 到 next-token 预测,系统梳理了现代 LLM 内部的九个核心机制,包括 tokenization、embedding、位置编码、注意力、多头注意力、前馈网络等,并比较了不同模型的架构差异。