从 Transformer 到 LLM:一文读懂大语言模型的前世今生

4 阅读17分钟

写在前面:这篇文章要解决什么问题?

你可能每天都在用 ChatGPT、Claude、文心一言,但你有没有想过:

  • 它是怎么"理解"你说的话的?
  • 它的回答是怎么一个字一个字蹦出来的?
  • 它真的在"思考"吗?

这篇文章会用最直白的语言,带你从零理解这一切背后的技术原理。不需要数学基础,不需要编程经验。我们从最基本的问题开始。


第一章:机器怎么"读懂"文字?

1.1 计算机只认数字

计算机不认识"你好"这两个字。它只认识数字——0 和 1。

所以第一个问题是:怎么把文字变成数字?

最朴素的做法是给每个字编个号:

编号
1
2
3
苹果4

"我爱吃苹果" → [1, 2, 3, 4]

但这有个大问题:编号 1 和编号 2 之间的"距离"是 1,编号 1 和编号 4 之间的"距离"是 3。可是"我"和"爱"的关系,真的比"我"和"苹果"更近吗?单纯的编号无法表达词语之间的含义关系。

1.2 词向量:用一组数字描述一个词的"含义"

解决方案是:不用一个数字,而是用一组数字(向量)来表示一个词。

想象一个简化的例子,我们用两个维度来描述食物:

     甜度
      ↑     · 西瓜
      |   苹果 ·       
      |
      |            · 蛋糕
      |              
      |       牛排 ·
    ──┼──────────────→ 热量
      |
  • "苹果"可以表示为 [甜度=0.7, 热量=0.3]
  • "西瓜"可以表示为 [甜度=0.8, 热量=0.2]
  • "牛排"可以表示为 [甜度=0.1, 热量=0.8]

苹果和西瓜在这个"空间"里靠得很近,因为它们含义相似。这就是词向量(Word Embedding)的核心思想。

实际的大语言模型中,每个词的向量不是 2 维,而是几千维(比如 4096 维)。维度越多,能捕捉的语义细节越丰富。

💡 核心概念:词向量(Embedding)

把每个词映射成一个高维空间中的点。含义相近的词,在空间中距离相近。这是所有现代语言模型的第一步。


第二章:注意力机制——语言理解的核心突破

2.1 一个关键问题:同一个词在不同句子里意思不同

看这两个句子:

  • "苹果很好吃" → 苹果 = 水果
  • "苹果发布了新手机" → 苹果 = Apple 公司

如果每个词只有一个固定的向量,就无法区分这两种含义。我们需要一种机制,让一个词的表示随上下文而变化

这就是注意力机制(Attention)要解决的问题。

2.2 注意力机制的直觉

想象你在读一篇文章,读到"它"这个字:

"小猫跳上了桌子,因为很好奇。"

你的大脑会自动回头看——"它"指的是谁?你的目光会重点关注"小猫",而不是"桌子"。

这就是注意力:在处理当前词的时候,去"看"句子中的其他词,决定应该重点关注谁。

2.3 注意力的工作方式(不用公式版)

对于句子中的每个词,注意力机制做三件事:

第一步:提问

当前词生成一个"问题"(Query):"我是'它',我想知道我应该关注谁?"

第二步:亮身份牌

句子中每个词都亮出自己的"身份牌"(Key):"我是'小猫'" "我是'桌子'" "我是'好奇'"

第三步:给信息

根据问题和身份牌的匹配程度,每个词按比例贡献自己的"信息"(Value)

用一个打分的过程来理解:

"它" 的问题 vs "小猫" 的身份牌  →  匹配度 0.7  ← 高度关注!
"它" 的问题 vs "桌子" 的身份牌  →  匹配度 0.1  ← 不太相关
"它" 的问题 vs "好奇" 的身份牌  →  匹配度 0.2  ← 有点相关

最终,"它"的新表示 = 70% 的"小猫"信息 + 10% 的"桌子"信息 + 20% 的"好奇"信息。

这样,"它"这个词就"吸收"了上下文的信息,变成了一个带有上下文含义的表示

💡 核心概念:注意力机制(Attention)

每个词都会"看"句子中的所有其他词,根据相关程度分配不同的关注权重,然后把相关词的信息融合到自己的表示中。这让同一个词在不同上下文中获得不同的含义。

2.4 多头注意力:从多个角度看问题

一个词和另一个词的关系可能是多方面的:

  • 语法关系:"它"和"小猫"是指代关系
  • 语义关系:"好奇"描述的是"小猫"的状态
  • 位置关系:相邻的词往往有更直接的语法联系

一组 Query/Key/Value 只能捕捉一种关系。所以 Transformer 用了多头注意力(Multi-Head Attention)——同时用多组 Query/Key/Value,每组关注不同类型的关系,最后把结果合并。

就像看一幅画:一个人看构图,一个人看色彩,一个人看光影,最后综合起来才是完整的理解。


第三章:Transformer——改变一切的架构

3.1 Transformer 之前的世界

在 2017 年 Transformer 出现之前,处理语言的主流方法是 RNN(循环神经网络)。

RNN 的工作方式像逐字阅读

"我" → 记住 → 读"爱" → 更新记忆 → 读"吃" → 更新记忆 → 读"苹果" → 更新记忆

问题很明显:

  1. 必须一个字一个字处理,无法并行,速度很慢
  2. 记忆会衰减——读到第 100 个字时,第 1 个字的信息已经很模糊了("长距离依赖"问题)

3.2 Transformer 的核心思想:所有词同时互相看

Transformer 的革命性在于:不再逐字处理,而是让句子中的所有词同时互相关注。

RNN(串行):    我 → 爱 → 吃 → 苹果     (一个接一个)

Transformer(并行):
    我  ←→  爱  ←→  吃  ←→  苹果        (所有词同时互相看)

这带来两个巨大优势:

  1. 并行计算:所有词同时处理,训练速度大幅提升,可以利用 GPU 的并行能力
  2. 无距离限制:第 1 个词和第 1000 个词可以直接互相关注,不存在记忆衰减

3.3 Transformer 的结构

Transformer 的完整结构分为编码器(Encoder)和解码器(Decoder)两部分:

┌─────────────────────────────────────────────────────┐
│                    Transformer                      │
│                                                     │
│   输入文本                          输出文本           │
│     ↓                                ↑              │
│  ┌──────────┐                  ┌──────────┐         │
│  │          │                  │          │         │
│  │  编码器   │ ──── 信息传递 ──→ │  解码器   │         │
│  │ Encoder  │                  │ Decoder  │         │
│  │          │                  │          │         │
│  └──────────┘                  └──────────┘         │
│                                                     │
│  理解输入内容                    生成输出内容           │
└─────────────────────────────────────────────────────┘

但在大语言模型(如 GPT、Claude)中,只用了解码器部分。为什么?我们在第四章解释。

3.4 一个 Transformer 层内部长什么样

每一层 Transformer 做两件事:

输入词向量
    ↓
┌─────────────────────┐
│  多头注意力           │  ← 每个词看看其他词,融合上下文信息
│  (Multi-Head Attn)  │
└─────────┬───────────┘
          ↓
┌─────────────────────┐
│  前馈神经网络         │  ← 对融合后的信息做进一步加工
│  (Feed-Forward)     │
└─────────┬───────────┘
          ↓
输出词向量(含上下文信息)

这两步之间还有残差连接层归一化,但核心就是这两步。

一个大语言模型会堆叠几十层甚至上百层这样的结构。每过一层,词的表示就融入了更深层次的上下文理解。

⚠️ 类比:如果把理解语言比作读一本书——

  • 第 1 层:认识每个字
  • 第 5 层:理解词组和短语
  • 第 20 层:理解句子含义
  • 第 50 层:理解段落逻辑和隐含意思
  • 第 96 层:理解全文主旨、风格、意图

3.5 位置编码:告诉模型词的顺序

注意力机制有一个问题:它是"无序"的。"我爱你"和"你爱我"在纯注意力看来没有区别——都是"我""爱""你"三个词互相看。

但语序显然很重要!所以 Transformer 引入了位置编码(Positional Encoding):给每个词的向量加上一个表示"我在第几个位置"的信号。

"我"的最终输入 = "我"的词向量 + 位置 1 的编码
"爱"的最终输入 = "爱"的词向量 + 位置 2 的编码
"你"的最终输入 = "你"的词向量 + 位置 3 的编码

这样模型就能区分"我爱你"和"你爱我"了。


第四章:从 Transformer 到 GPT——"只保留解码器"

4.1 两种 Transformer 的用法

原始 Transformer 论文(2017 年 Google 的 "Attention Is All You Need")设计了编码器+解码器的结构,用于机器翻译。但后来研究者发现,可以只用其中一部分:

架构代表模型用途核心特点
只用编码器BERT理解文本(分类、问答)能同时看到前后文
只用解码器GPT、Claude、LLaMA生成文本只能看到前面的词
编码器+解码器T5、原始 Transformer翻译、摘要先理解再生成

今天的大语言模型(ChatGPT、Claude、Gemini)几乎都是只用解码器的架构。

4.2 为什么只用解码器?

因为大语言模型的核心任务是生成文本——给定前面的内容,预测下一个词。

这个任务天然适合解码器:

输入:  "今天天气"
模型看到:  "今""今天""今天天""今天天气"
预测:                                    → "真"

解码器有一个关键特性:因果遮罩(Causal Mask)。在处理每个词时,它只能看到这个词之前的内容,看不到后面的

处理"今"时:  能看到 [今]
处理"天"时:  能看到 [今, 天]
处理"气"时:  能看到 [今, 天, 天, 气]
预测下一个:  能看到 [今, 天, 天, 气] → 输出"真"

这和人类写作的过程一模一样:你写下一个字的时候,只能基于已经写过的内容,不能"偷看"还没写的部分。

4.3 GPT 的含义

GPT = Generative Pre-trained Transformer

  • Generative(生成式):它的任务是生成文本
  • Pre-trained(预训练的):先在海量文本上训练,再针对具体任务微调
  • Transformer:基于 Transformer 架构

这三个词精确概括了现代大语言模型的本质。


第五章:LLM 是怎么"学会"语言的?

5.1 预训练:读遍互联网

大语言模型的训练分两个阶段。第一阶段叫预训练(Pre-training)。

方法极其简单粗暴:给模型看海量文本,让它不断预测下一个词。

训练数据:互联网上的书籍、网页、论文、代码、对话……(万亿级别的词)

训练过程(反复进行数万亿次):
┌──────────────────────────────────────────────┐
│  输入:  "法国的首都是"                         │
│  模型预测:  "伦敦"  (概率 0.1)               │
│  正确答案:  "巴黎"                            │
│  模型:  哦,我错了,调整一下内部参数……           │
│                                              │
│  下一次看到类似内容:                           │
│  输入:  "法国的首都是"                         │
│  模型预测:  "巴黎"  (概率 0.8)  ✓            │
└──────────────────────────────────────────────┘

就是这么简单。没有人教它语法规则,没有人告诉它什么是主谓宾,没有人给它编百科全书。 它只是在预测下一个词的过程中,自己"领悟"了语言的规律。

💡 为什么"预测下一个词"能学会这么多?

要准确预测下一个词,模型必须理解:

  • 语法("我吃了一个___" → 名词)
  • 事实("地球绕着___转" → 太阳)
  • 逻辑("如果 A>B 且 B>C,那么 A___C" → 大于)
  • 情感("这部电影太感人了,我___" → 哭了)
  • 代码("for i in range(10):___" → print(i))

预测下一个词看似简单,实际上是一个需要深度理解语言和世界知识的任务。

5.2 模型的"参数"是什么?

你经常听到"千亿参数""万亿参数"。参数到底是什么?

简单说:参数就是模型内部的数字旋钮。 每个参数是一个可以调节的数字,控制着信息在模型中如何流动和变换。

类比:一台巨大的调音台

┌─────────────────────────────────────┐
│  ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○      │
│  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │      │
│  ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○      │
│  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │      │
│  ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○      │
│                                     │
│  每个旋钮 = 一个参数                  │
│  GPT-4 ≈ 1.8 万亿个旋钮              │
│  Claude 3.5 ≈ 数千亿个旋钮            │
└─────────────────────────────────────┘

训练的过程就是:不断微调这些旋钮,让模型的预测越来越准。

5.3 对齐训练:从"预测机器"到"有用的助手"

预训练完成后,模型已经很"聪明"了,但它只会续写文本,不会对话

比如你输入"什么是光合作用?",预训练模型可能会续写:

"什么是光合作用?这是一个常见的生物学考试题目。以下是参考答案模板……"

它在续写一个"考试题目"的文本,而不是在回答你的问题。

所以需要第二阶段:对齐训练(Alignment),让模型学会"当一个有用的助手"。

对齐训练通常包括:

第一步:监督微调(SFT)

人类标注员写出高质量的问答对:

问:什么是光合作用?
答:光合作用是植物利用阳光、水和二氧化碳,
    合成有机物并释放氧气的过程……

用这些数据继续训练模型,让它学会"问答"的格式。

第二步:人类反馈强化学习(RLHF)

让模型对同一个问题生成多个回答,人类标注员给这些回答排序(哪个更好),然后用这个排序信号继续优化模型。

问题:"如何学习编程?"

回答 A:去学 Python。                          ← 人类评分:一般
回答 B:建议从 Python 入手,因为语法简洁,       ← 人类评分:好
        社区资源丰富。可以从官方教程开始……
回答 C:编程很难,你可能学不会。                  ← 人类评分:差

模型学到:应该给出详细、有帮助、积极的回答

总结:LLM 的两阶段训练

  1. 预训练:读遍互联网,学会语言和知识(预测下一个词)
  2. 对齐训练:学会当一个有用、安全、诚实的助手(SFT + RLHF)

第六章:LLM 是怎么生成回答的?

6.1 核心真相:一次只预测一个词

这是理解 LLM 最重要的一点:它每次只预测一个词(token),然后把这个词加到输入中,再预测下一个词。

当你问"中国的首都是哪里?"时,模型内部发生的事情是:

1 步:
  输入:  [中国的首都是哪里?]
  模型计算 → 下一个词的概率分布:
    "中"  0.01
    "北"  0.85  ← 最高!
    "上"  0.05
    "南"  0.03
    ...
  选择 → "北"2 步:
  输入:  [中国的首都是哪里? 北]
  模型计算 → 下一个词的概率分布:
    "京"  0.97  ← 最高!
    "方"  0.01
    "边"  0.01
    ...
  选择 → "京"3 步:
  输入:  [中国的首都是哪里? 北京]
  模型计算 → 下一个词的概率分布:
    "是"  0.60
    "。"  0.25
    ","  0.10
    ...
  选择 → "是"

……如此反复,直到模型输出一个"结束"标记。

这就是为什么 ChatGPT 的回答是一个字一个字蹦出来的——因为它确实是一个字一个字生成的。

6.2 Token:模型真正处理的单位

模型实际处理的不是"字",而是 Token。Token 是模型把文本切分后的最小单位。

英文示例:
  "I love programming" → ["I", " love", " program", "ming"]
                           4token

中文示例:
  "我爱编程" → ["我", "爱", "编", "程"]
                 4token

代码示例:
  "print('hello')" → ["print", "('", "hello", "')"]
                       4token

为什么不直接用字?因为 Token 是在大量文本上统计出来的最高效的切分方式——常见的词保持完整,罕见的词被拆成更小的片段。这样可以用有限的"词汇表"(通常 3-10 万个 token)覆盖几乎所有文本。

6.3 温度(Temperature):控制创造力

模型预测出每个词的概率后,怎么选?这由温度参数控制:

温度 = 0(确定性) — 总是选概率最高的词。"北京是中国的首都。" 适合:事实问答、代码。

温度 = 0.7(平衡) — 大概率选高概率词,偶尔选低概率词。"北京,这座古老而现代的城市,是中国的首都。" 适合:日常对话。

温度 = 1.5(高创造力) — 更多随机性,可能选出意想不到的词。"北京,一座在时光长河中沉浮的巨兽……" 适合:创意写作。

6.4 上下文窗口:模型的"工作记忆"

模型每次预测时,能"看到"的文本长度是有限的,这叫上下文窗口(Context Window)。

┌──────────────────────────────────────────────┐
│              上下文窗口(比如 128K tokens)      │
│                                              │
│  [系统提示] [历史对话] [当前问题][生成回答]  │
│                                              │
│  ← ─ ─ ─ ─ 模型能看到的范围 ─ ─ ─ ─ →         │
└──────────────────────────────────────────────┘
模型上下文窗口大约相当于
GPT-3(2020)4K tokens约 3000 字
GPT-4(2023)128K tokens约 10 万字(一本小说)
Claude 3.5(2024)200K tokens约 15 万字
Gemini 1.5(2024)1M tokens约 75 万字(几本书)

上下文窗口越大,模型能处理的信息越多,但计算成本也越高。


第七章:LLM 的能力与局限

7.1 它能做什么(以及为什么能)

能力原因
流畅的自然语言对话训练数据中有海量对话文本
写代码、调试训练数据中有大量开源代码
翻译训练数据中有多语言平行文本
总结长文注意力机制能捕捉全文关键信息
逻辑推理训练数据中有数学证明、逻辑论述
角色扮演训练数据中有小说、剧本、对话

7.2 它不能做什么(以及为什么不能)

⚠️ LLM 的核心局限

1. 幻觉(Hallucination) 模型会自信地编造不存在的事实。因为它的本质是"预测最可能的下一个词",而不是"查找正确答案"。如果训练数据中某个模式出现频率高,模型就会倾向于生成它,即使在当前语境下是错误的。

2. 知识截止 模型只知道训练数据截止日期之前的信息。它不能上网搜索(除非给它搜索工具)。

3. 数学计算不可靠 "1234 × 5678 = ?" 模型可能算错,因为它不是在"计算",而是在"预测看起来像答案的数字"。

4. 没有真正的"记忆" 每次对话是独立的。上一次聊天的内容,下一次不会记得(除非系统特别设计了记忆机制)。

7.3 它是在"思考"吗?

这是一个哲学问题,但从技术角度可以明确说:

LLM 不是在"思考",它是在做极其复杂的模式匹配和概率预测。

它没有意识,没有理解,没有意图。它只是一个函数:输入一段文本,输出下一个词的概率分布。

但这个函数经过万亿级数据的训练后,其行为看起来非常像思考。这种"看起来像"是否等同于"真的是",是一个尚无定论的问题。


第八章:全景回顾

让我们把整个链条串起来:

文字
 ↓
词向量(Embedding)                    把文字变成数字向量
 ↓
+ 位置编码                             告诉模型词的顺序
 ↓
┌─────────────────────────────┐
│  Transformer 解码器层 × N    │
│                             │
│  ┌───────────────────────┐  │
│  │  因果注意力             │  │  ← 每个词关注它前面的所有词
│  │  (多头)              │  │     融合上下文信息
│  └───────────┬───────────┘  │
│              ↓              │
│  ┌───────────────────────┐  │
│  │  前馈神经网络           │  │  ← 进一步加工信息
│  └───────────┬───────────┘  │
│              ↓              │
│     重复 N 层(N=96 等)     │
└─────────────┬───────────────┘
              ↓
输出层:对词汇表中每个词打分
              ↓
概率分布:  "北" 0.85, "上" 0.05, "南" 0.03 ...
              ↓
采样(根据温度)
              ↓
输出一个 Token → 加入输入 → 重复上述过程
              ↓
最终输出完整回答

💡 一句话总结

大语言模型 = Transformer 解码器架构 + 海量数据预训练 + 对齐训练。它通过反复预测"下一个词"来生成回答,而注意力机制让它能理解上下文中词与词之间的关系。它不是在"思考",但它在万亿参数和万亿数据的加持下,展现出了惊人的语言能力。


附录:关键术语速查表

术语英文一句话解释
词向量Embedding把词变成一组数字,含义相近的词数字也相近
注意力机制Attention让每个词"看"其他词,融合上下文信息
多头注意力Multi-Head Attention多组注意力并行,从不同角度理解关系
TransformerTransformer基于注意力机制的神经网络架构,2017 年提出
编码器EncoderTransformer 中负责"理解"的部分
解码器DecoderTransformer 中负责"生成"的部分
TokenToken模型处理文本的最小单位
预训练Pre-training在海量文本上训练模型预测下一个词
微调Fine-tuning在特定任务数据上继续训练
RLHFRLHF用人类反馈来优化模型行为
上下文窗口Context Window模型一次能处理的最大文本长度
温度Temperature控制生成文本的随机性/创造力
幻觉Hallucination模型自信地生成错误信息
参数Parameters模型内部可调节的数字,决定模型行为

推荐阅读