Transformer 揭秘:从词元到语义,大语言模型的核心原理

3 阅读18分钟

Transformer 揭秘:从词元到语义,大语言模型的核心原理

摘要

Transformer 架构自 2017 年提出以来,已成为所有主流大语言模型(如 GPT、Llama、ChatGLM)的核心基础。本文以通俗易懂但专业严谨的方式,系统讲解 Transformer 的六大关键组件:Tokenization(词元化)、Embedding(向量化)、Positional Encoding(位置编码)、Encoder & Decoder(编码器与解码器)、Linear & Softmax(输出层)。每部分均配有生活类比、术语解释和常见疑问解答,并附有完整的参考文献。读者不需要深厚的机器学习背景,即可理解大语言模型“如何读懂文字、如何思考、如何逐词生成答案”的基本原理。


目录

  1. 引言:为什么需要 Transformer
  2. Tokenization —— 把句子拆成积木块
  3. Embedding —— 给每个词一个高维坐标
  4. Positional Encoding —— 让模型知道谁前谁后
  5. Encoder & Decoder —— 阅读与写作的协作
  6. Linear & Softmax —— 从想法到说出的词
  7. 总结:Transformer 工作流程全景图

附录
A. 术语表(小白友好版)
B. 生活类比表
C. 常见疑问解答(Q&A)
D. 参考文献


1. 引言:为什么需要 Transformer

在 Transformer 出现之前,自然语言处理主要依赖循环神经网络(RNN)和长短期记忆网络(LSTM)。这些模型按顺序逐个处理单词,无法并行计算,且难以捕捉长距离依赖(比如句首和句尾的关系)。2017 年,Google 团队发表了论文《Attention Is All You Need》[1],提出了完全基于**自注意力(Self-Attention)**的 Transformer 架构,彻底抛弃了循环结构。

Transformer 的优势在于:

  • 高度并行:一次性处理整个序列,训练速度快。
  • 长距离建模:任意两个位置直接计算关联,不受距离影响。
  • 可扩展性:堆叠更多层、增加隐藏维度即可提升性能,现代大模型正是沿着这条路演进的。

如今,ChatGPT、Llama、文心一言等大语言模型都基于 Transformer 架构。理解它的工作原理,是深入掌握 AI 语言能力的第一步。


2. Tokenization —— 把句子拆成积木块

计算机不认识文字,只认识数字。第一步就是把文本切分成若干个小单元,每个小单元称为 Token(词元)。这个过程就是 Tokenization

2.1 子词切分(Subword Tokenization)

  • 英文:将单词拆成更小的有意义的片段。例如:
    "playing"["play", "ing"]
    "subword"["sub", "word"]
    "encoded"["encode", "ed"]
    这样做的好处是:词表不用包含所有完整单词(英语有几十万),而只需包含常见的子词,还能处理未见过的新词(比如把 "ChatGPT" 拆成 ["Chat", "G", "PT"])。

  • 中文:由于汉字数量庞大,且 UTF-8 下一个汉字占 3 个字节,一些为英文优化的分词器(如 OpenAI 的 tiktoken)会按字节切分,导致“海南麒麟瓜”这样的短语被切成 11 个 Token。而专门的中文模型(如 ChatGLM)会使用包含常见汉字和词语的专用词表,使中文的 Token 数量更合理 [6]。

2.2 Token 数量示例

根据知乎用户“暗月魔术师”的实测数据(《哈利波特与魔法石》中英版本):

  • GPT(tiktoken):英文版约 44.6 万 Token,中文版约 83.6 万 Token(中文多 87%)。
  • ChatGLM(专用中文词表):英文版约 47.4 万 Token,中文版约 40.5 万 Token(中文反而更少)。

由此可见,分词器的设计对特定语言的效率影响巨大。

2.3 词表大小的演变

  • GPT-3(2020):50,257 个 Token [2]
  • GPT-4(2023):约 100,256 个 Token [3]
  • Llama 3(2024):128,256 个 Token [5]

更大的词表可以缩短序列长度(同一句话需要的 Token 更少),但也会增加模型的 Embedding 层参数量。

生活类比:Tokenization 就像把一篇文章拆成几万块乐高积木,每块积木都是标准大小的“语义颗粒”。不同厂家生产的积木颗粒大小不同(词表不同),拼装同一座城堡所需的积木数量也就不一样。


3. Embedding —— 给每个词一个高维坐标

有了 Token 序列,还需要把每个 Token 转换成一串数字(向量),计算机才能进行数学运算。这个映射过程就是 Embedding

3.1 什么是向量和维度?

  • 1 维向量[3] —— 数轴上的一个点
  • 2 维向量[2, 5] —— 平面上的一个点
  • 3 维向量[-1, 4, -2.5] —— 立体空间中的一个点
  • 12288 维向量:我们无法直观想象,但数学上就是 12288 个坐标组成的点。

3.2 为什么需要高维度?

维度越高,向量能承载的语义信息就越丰富。不同规模模型的 Embedding 维度(即隐藏层维度 d_model)如下:

模型年份隐藏层维度
Transformer (base)2017512
GPT-12018768
GPT-2 (最大版本)20191600
GPT-3 (175B)202012288
Llama 3 (405B)202416384

生活类比:低维空间像一张只有几条主干道的地图,只能标注大方向;高维空间像一张极精细的卫星图,每条小巷、每棵树都能标出来。模型因此能捕捉到细微的语义差异——例如,“国王”与“王后”的向量关系满足:向量(国王) - 向量(男人) + 向量(女人) ≈ 向量(王后)

3.3 高维空间到底有多大?

以 GPT-3 的 12288 维为例,假设每个坐标只能取 0~10000 的整数(实际是连续浮点数,范围更大),那么所有可能的向量总数为:

10000 × 10000 × …(12288 次相乘)= 10^(4×12288) = 10^49152

这个数写作 1 后面跟 49152 个 0,共有 49153 位。这个数字比全宇宙的原子总数(约 10^80)大无数倍。而整个词表只有大约 10 万个 Token,所以这些 Token 在空间中极其稀疏——每个 Token 几乎都有自己独一无二的“专属坐标”,模型能轻松区分它们。

注意:10^49152 是一个 49153 位的数字(1 后面 49152 个 0),不要误写成 49152 位。


4. Positional Encoding —— 让模型知道谁前谁后

Transformer 的自注意力机制有一个特性:它不关心输入的顺序。如果把“狗咬了猫”中的“狗”和“猫”互换,自注意力计算出的结果完全相同,但句子的语义却完全相反。因此,必须在输入中显式加入位置信息

4.1 基本做法

对于序列中第 pos 个位置的 Token,我们生成一个与 Embedding 维度相同的向量 PE(pos),然后加到 Embedding 上:

Input[pos] = Embedding[pos] + PE(pos)

4.2 正弦余弦位置编码(Sinusoidal Encoding)

原始 Transformer 使用三角函数来生成 PE [1]:

  • 偶数维度:PE(pos, 2i) = sin( pos / 10000^(2i/d) )
  • 奇数维度:PE(pos, 2i+1) = cos( pos / 10000^(2i/d) )

其中 d 是 Embedding 维度,i 的范围是 0d/2-1

这个设计的优点:

  • 不需要额外学习参数。
  • 理论上可以计算任意长度的位置编码(即使比训练时更长)。
  • 任意两个位置的编码可以通过线性变换相互得到,有利于模型学习相对位置

注意:理论上可以外推更长序列,但实践中未经微调的外推效果通常会下降。现代模型多改用 RoPE(旋转位置编码)来获得更好的长文本外推能力 [9]。

4.3 其他位置编码方式

  • 可学习位置编码(GPT 系列):将位置编码作为可训练的参数矩阵,让模型自己学习每个位置的最佳表示。
  • RoPE(旋转位置编码)(Llama、ChatGLM、Qwen):在复数空间中对 Query 和 Key 向量施加旋转矩阵,以绝对位置编码的方式表达相对位置关系,对长序列外推更友好 [9]。
  • ALiBi(Attention with Linear Biases):在注意力分数中添加与 token 距离成正比的线性偏置,无需显式位置编码,也能高效外推 [8]。

5. Encoder & Decoder —— 阅读与写作的协作

Transformer 的经典结构由编码器解码器 两部分组成。

5.1 编码器(Encoder):一次性读懂全部输入

假设用户问:“我这种情况,法院会怎么判?”

  1. 这句话被 Tokenization 成若干 Token(例如 1300 个,示例长度,实际取决于输入)。
  2. 每个 Token 经过 Embedding + Positional Encoding,变成 1300 个高维向量。
  3. 编码器通常由多个相同的层堆叠而成(如 6 层、12 层或更多)。每一层包含:
    • 多头自注意力:每个 Token 查看序列中所有 Token,计算它们之间的关联强弱。例如,“法院”和“判”之间的注意力权重会很高。
    • 前馈网络:对每个 Token 独立进行非线性变换,增强表达能力。
    • 残差连接 + 层归一化:帮助训练更深的网络,缓解梯度消失。
  4. 编码器最终输出与输入数量相同的语义增强向量(仍然是 1300 个,每个维度为 d_model),每个向量都融合了整个句子的上下文信息。

5.2 解码器(Decoder):自回归地逐词生成

解码器的任务是根据编码器的输出和已经生成的单词,逐个预测下一个单词。

  • 初始状态:解码器输入只有一个特殊的开始标记(如 <s>),它也是一个 Token,同样经过 Embedding 和位置编码。
  • 第 1 步:解码器根据编码器输出的 1300 个向量和 <s>,预测第一个词的概率分布,选出最可能的词——“法”。
  • 第 2 步:将“法”加入解码器输入,预测第二个词——“院”。
  • 第 3 步:当前已有“法”“院”,预测第三个词——“会”。
  • 如此重复,直到生成一个结束标记</s>)或达到最大长度。

示例(来自 PDF 中的演示):
“法院” → “法院会” → “法院会倾” → “法院会倾向” → …… → “法院会倾向于冷静期,除非你有特别确凿的证据。”

解码器内部有两个关键机制:

  • 掩码自注意力:生成第 t 个词时,不允许看到第 t+1 及之后的词(避免作弊)。
  • 交叉注意力:每一层解码器都会“查询”编码器的输出,让解码器能时刻参考输入序列的信息。

生活类比:编码器像一位高级秘书,听完客户的需求后,在脑中形成一份详细的“要点笔记”;解码器像一位写手,根据笔记和已经写好的句子,一字一句地往下写。


6. Linear & Softmax —— 从想法到说出的词

解码器最后输出的向量(维度 = d_model,例如 12288)不能直接当作一个词。还需要两个步骤将其转换成词表上的概率分布。

6.1 Linear 层(线性变换)

  • 作用:将 d_model 维的向量通过一个可学习的权重矩阵,映射成词表大小的向量(例如 100256 维)。
  • 输出:一个 logits 向量,里面的每个实数代表对应 Token 的“原始分数”(可正可负)。
  • 参数规模:d_model × vocab_size,对于大模型非常大(例如 12288 × 100256 ≈ 1.23B 个参数)。

6.2 Softmax 层

  • 作用:将 logits 转换成概率分布(所有值介于 0~1,且总和为 1)。
  • 公式:p_i = e^(z_i) / Σ e^(z_j)
  • 结果:词表中每个 Token 被选为“下一个词”的概率。

6.3 如何决定下一个词?

  • 贪心解码:直接选择概率最高的 Token。
  • 随机采样:按概率分布随机抽取,可以增加回答的多样性。
  • 温度调节:通过缩放 logits(除以温度 T)来控制概率分布的平滑度——T 越小,分布越尖锐(更确定);T 越大,分布越平缓(更随机)。

生活类比:Linear 层像是你的大脑把“想法”(高维思考)转换成“想说每个候选词的冲动程度”;Softmax 层则是把这些冲动程度变成“我真正说出这个词的百分比”。最后,你根据百分比选一个词说出来。


7. 总结:Transformer 工作流程全景图

阶段组件任务输出示例
1Tokenization文本 → Token 序列["我","这种情况","法院","会","怎么判"]
2EmbeddingToken → 向量[[0.1, -2.3, ...], ...]
3Positional Encoding向量中加入位置信息input = emb + pos
4Encoder融合上下文语义语义增强的向量序列
5Decoder自回归生成下一个 Token 的 logits每一步输出词表大小的向量
6Softmax转换成概率,选取下一个 Token["法"]["法院"] → ……

核心优势回顾

  • 相比 RNN/LSTM,Transformer 可以并行处理整个序列,训练效率大幅提升。
  • 自注意力机制直接连接任意两个位置,长距离依赖不再是难题。
  • 通过堆叠更多层、增加隐藏维度,可以构造出 GPT-3、Llama 3 等超大规模模型,实现惊人的语言能力。

附录 A:术语表(小白友好版)

术语通俗解释
Token文本被切分后的小单元,可以是词的一部分、一个汉字或几个字节。
Tokenization把句子切成 Token 的过程。
词表所有可能 Token 的集合,大小通常几万到十几万。
Embedding把一个 Token 映射成一串数字(向量),代表它在高维空间中的“坐标”。
向量一串有序的数字,可以表示空间中的一个点。
维度向量中数字的个数。1维是数轴,2维是平面,3维是立体。
空间稀疏性高维空间中可容纳的点极多,而实际 Token 很少,所以每个 Token 都占据几乎独一无二的位置。
Positional Encoding给 Token 加上位置信息,让模型知道顺序。
Encoder读取整个输入并输出语义向量的模块(阅读理解)。
Decoder逐字生成输出序列的模块(写作),每次依赖之前生成的字。
自回归生成序列时,每一步都用之前生成的结果作为输入。
Linear 层一个简单的数学变换(矩阵乘法+偏置),把高维向量映射到词表大小。
Softmax把任意实数变成概率(0~1 之间且总和为1)的公式。
注意力(Attention)Transformer 内部机制,让每个 Token 自动关注序列中其他 Token 的相关程度。
自注意力同一个序列内的 Token 互相看。
交叉注意力解码器看编码器输出的序列。

附录 B:生活类比表

概念日常类比
文本 → Token把一篇文章拆成几万个“词语积木”。
Token → Embedding给每块积木贴上一个 GPS 坐标(高维空间位置)。
Positional Encoding在积木上再贴一个数字标签(第1块、第2块…)。
Encoder一个读者,读完整个故事后在脑中形成情节向量。
Decoder一个作家,根据情节向量和已经写下的句子,一个字一个字地写下去。
Linear + Softmax作家脑中有几个候选字,犹豫一下,选最合适的写出来。

附录 C:常见疑问解答(Q&A)

Q1:为什么 GPT 只用解码器,没有编码器?
A:GPT 属于自回归语言模型,它的任务是根据上文预测下一个词,输入和输出是同一个序列(只是把已经生成的部分当作上文)。GPT 的结构是仅解码器(decoder‑only),它移除了传统 Transformer 解码器中的交叉注意力层,只保留了掩码自注意力层 [3][7]。Encoder‑Decoder 结构主要用于机器翻译、文本摘要等输入输出不同的任务。

Q2:12288 维这么高,不会导致过拟合吗?
A:过拟合的风险确实存在,但大规模训练数据可以抵消这个风险。GPT‑3 使用了约 45TB 文本数据,足够学习高维空间中的有效特征。同时,现代模型会使用 Dropout、权重衰减等正则化技术。对于小数据集,小维度模型(如 512 维)更合适。

Q3:为什么中文模型 Token 数量有时比英文还多?
A:这是分词器的设计选择。如果使用为英文优化的 BPE(如 OpenAI 的 tiktoken),每个中文字符的 UTF-8 三个字节可能被拆成多个 Token。而专门的中文模型(如 ChatGLM)会构建包含常见汉字和词语的词表,使中文 Token 数下降到合理水平 [6]。

Q4:位置编码为什么不用简单的 1,2,3… 数字?
A:Embedding 向量中每个维度已经表达了复杂的语义,直接加上绝对数字(1, 2, 3)会破坏向量的分布,而且模型难以外推更长的序列。正弦余弦编码或 RoPE 都能提供更平滑且可扩展的位置表示 [1][9]。

Q5:训练和推理时,Decoder 的行为有什么不同?
A:训练时,解码器采用 Teacher Forcing:直接提供真实的目标序列(例如标准答案的每个词),让模型一次性预测所有位置,并行计算损失。推理时,模型必须自己一步步生成,每一步依赖上一步的输出,无法并行。

Q6:Linear + Softmax 之后,怎么确保生成不重复或符合语法?
A:单独的 Linear+Softmax 只保证局部最优(每一步概率最高)。要保证整体连贯,通常需要 Beam Search(保留多个候选序列)或配合外部规则(如重复惩罚、长度惩罚)。大型模型也能通过大量训练学到隐式的语法和常识约束。


附录 D:参考文献

Transformer 基础核心论文

[1] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention Is All You Need. Advances in Neural Information Processing Systems (NIPS), 30, 5998–6008. arxiv.org/abs/1706.03…

大语言模型架构与参数

[2] Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., et al. (2020). Language Models are Few-Shot Learners. Advances in Neural Information Processing Systems (NeurIPS), 33, 1877–1901. arxiv.org/abs/2005.14…
(GPT‑3 原始技术报告,公开了 175B 版本的架构参数:96 层,12288 隐藏维度,50257 词表)

[3] OpenAI. (2023). GPT-4 Technical Report. arxiv.org/abs/2303.08…
(GPT‑4 技术报告。注意:词表大小约 100256,并非官方直接公布,主要来自社区分析)

[4] Touvron, H., Lavril, T., Izacard, G., Martinet, X., Lachaux, M. A., Lacroix, T., Rozière, B., Goyal, N., Hambro, E., Azhar, F., et al. (2023). LLaMA: Open and Efficient Foundation Language Models. arXiv preprint. arxiv.org/abs/2302.13…
(LLaMA 原始论文,LLaMA 2 词表为 32,000)

[5] Grattafiori, A., Dubey, A., Jauhri, A., Pandey, A., Kadian, A., Al-Dahle, D., Letman, A., Mathur, A., Schelten, A., Vaughan, A., et al. (2024). The Llama 3 Herd of Models. arXiv preprint. arxiv.org/abs/2407.21…
(Llama 3 原始技术报告:词表大小 128,256,405B 版本隐藏维度 16,384,使用 RoPE)

分词器(Tokenizer)

[6] Zeng, A., Liu, X., Du, Z., Wang, Z., Lai, H., Ding, M., Yang, Z., Xu, Y., Zheng, W., Xia, X., et al. (2023). GLM-130B: An Open Bilingual Pre-trained Model. International Conference on Learning Representations (ICLR). arxiv.org/abs/2210.02…
(ChatGLM 的 Tokenizer 设计:在 25 GB 中英双语数据上训练 SentencePiece,词表大小 130,528)

位置编码(Positional Encoding)

[7] Shaw, P., Uszkoreit, J., & Vaswani, A. (2018). Self-Attention with Relative Position Representations. Proceedings of NAACL-HLT, 464–468. arxiv.org/abs/1803.02…
(首次系统性地在 Transformer 中引入相对位置表示)

[8] Press, O., Smith, N. A., & Lewis, M. (2022). Train Short, Test Long: Attention with Linear Biases (ALiBi) Enables Input Length Extrapolation. International Conference on Learning Representations (ICLR). arxiv.org/abs/2108.12…
(ALiBi 原始论文)

[9] Su, J., Lu, Y., Pan, S., Murtadha, A., Wen, B., & Liu, Y. (2024). RoFormer: Enhanced Transformer with Rotary Position Embedding. Neurocomputing, 568, 127063. arxiv.org/abs/2104.09…
(RoPE 旋转位置编码原始论文)

[10] Dai, Z., Yang, Z., Yang, Y., Carbonell, J., Le, Q. V., & Salakhutdinov, R. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. Proceedings of ACL, 2978–2988. arxiv.org/abs/1901.02…
(Transformer‑XL 引入片段级递归和相对位置编码)

扩展说明(非标准学术引用)

  • 中英文 Token 数量对比数据:来源于知乎用户“暗月魔术师”的独立测试(《哈利波特与魔法石》中英版本)。该数据为非学术机构的实测结果,用于说明分词器差异。
  • “1000 Tokens ≈ 750 英文单词”:来源于 OpenAI 官方 API 文档。
  • GPT-4 词表约 100,256:来源于社区分析,OpenAI 未在官方报告中精确公布,使用时请注意其非官方性质。

文档结束 | 最后更新:2026-04-28


本文档欢迎转载,但请注明出处并保留参考文献列表。