大模型是怎么工作的:从 Token 到思考

深入解析 ChatGPT/Gemini/Claude 背后的核心技术,让你真正理解 AI 是如何"生成"文字的

📑 文章目录

  1. 从"接龙"游戏说起
  2. Token:AI 的"词汇"
  3. Embedding:把文字变成数字
  4. Transformer:注意力Transformer
  5. 训练:让模型学会"说话"
  6. 涌现能力:1+1>2
  7. 总结

1. 从"接龙"游戏说起

想象一下,如果你要玩一个文字接龙游戏,规则是:给你一段话的开头,你来猜下一个词最可能是什么。

比如我给你:"今天天气真__"

你会怎么填?根据你的语言经验,你大概率会填"好"、"不错"、"晴朗"……但不太可能是"电脑"、"量子"或者"区块链"。

这就是大语言模型(LLM)的核心机制:预测下一个词(Next Token Prediction)

💡 关键洞察

ChatGPT 并没有在"思考"或"理解",它只是在不断预测:给定前面的词序列,下一个最可能出现的词是什么。这是一个统计学游戏。

但问题是:人类语言如此复杂,词语之间的关联如此微妙,模型是怎么学会这种"预感"的?

答案藏在三个关键技术中:Token、Embedding、Transformer

2. Token:AI 的"词汇"

人类说"词",AI 说"Token"。但它们不完全是一回事。

2.1 什么是 Token?

Token 是模型处理文本的最小单元。一个 Token 可以是:

Token 示例 类型 说明
"好" 完整单词 常见汉字
"特" 汉字 独字也可能是 token
"ing" 词根/词缀 英语单词的常见后缀
" 懂" 带空格 英文单词前的空格
"123" 数字片段 连续数字作为一个 token

📝 Token 的划分规则

以 GPT-4 使用的 Tiktoken 分词器为例:

中文:通常 1-2 个汉字 = 1 个 Token("学习"是一个token,但生僻字可能单独成token)

英文:平均 1 个单词 ≈ 1.3 个 Token("learning" 可能被拆成 "learn" + "ing")

代码:特殊处理,常见符号组合作为独立 Token

2.2 为什么不用"词"?

你可能会问:为什么不直接用人类理解的"词"?

因为语言太不规则了!

英语有超过 100 万个单词,中文常用字 3500 个、但组合无限。如果按词分,词表会爆炸式增长。

Token 是一种平衡:不是太细(字级别计算量太大)、也不是太粗(词级别词表太大)。

📊 Token 数量估算对照表
┌─────────────────────────────────────────────────┐
│  中文文本          Token 数        示例          │
├─────────────────────────────────────────────────┤
│  1 个汉字          ~1 Token      "我"           │
│  1 个英语单词      ~1.3 Token    "hello"       │
│  1 个标点符号      ~0.3 Token    "。"           │
│  1 个表情符号      ~2 Token      "😂"          │
│  1000 字中文       ~500-800 Token               │
│  750 个英语单词    ~1000 Token                  │
└─────────────────────────────────────────────────┘
            
粗略估算:1 Token ≈ 0.75 个中文汉字 ≈ 0.75 个英文单词

2.3 Token 的限制

理解 Token 对使用 AI 非常重要:

3. Embedding:把文字变成数字

模型只能处理数字,不能处理文字。所以我们需要把 Token 转换成数字向量——这就是 Embedding。

3.1 什么是 Embedding?

Embedding 本质上是一个查表操作

🔢 Token → Embedding 转换过程
Token: "猫"  ──→ 查表 ──→ [0.21, -0.34, 0.87, 0.12, ...]
                  (词表)        (1536维向量)

Token: "狗"  ──→ 查表 ──→ [0.19, -0.31, 0.92, 0.08, ...]
                            ↑
                       相似的向量!
            

每个 Token 都被转换成一个高维向量(GPT-4 用 1536 维)。"猫"和"狗"的向量很接近,因为它们都是"动物"。

3.2 词向量的魔力

更有趣的是,词向量可以进行数学运算

King - Man + Woman ≈ Queen

这个经典例子说明:词向量捕获了词语之间的语义关系。当模型学会这种表示,"理解"就变成了可计算的数学操作。

3.3 上下文 Embedding

但这里有个问题:同样的词在不同语境下意思不同。

"苹果"可以是水果(吃),也可以是公司(用 iPhone)。

所以现代模型使用的是上下文感知 Embedding:根据上下文动态调整词向量。

🔄 上下文如何影响 Embedding
"我吃了一个苹果"
         ↓
"吃" → [0.1, 0.5, ...] (动词语境)
"苹果" → [0.8, 0.2, ...] (水果向量)

─────────────────────────────

"我用苹果手机"
         ↓
"用" → [0.3, 0.7, ...] (使用语境)
"苹果" → [0.9, 0.1, ...] (公司向量)
            
同一个词"苹果",在两个句子中得到完全不同的向量

4. Transformer:注意力Transformer

这是最核心的部分。Transformer 是 2017 年 Google 论文《Attention Is All You Need》提出的架构革新。

4.1 为什么需要"注意力"?

考虑这句话:

"小王对小李说:'谢谢你'。"

是谁在说谢谢?是小王还是小李?要理解这个句子,模型需要知道"谢谢"指的是什么。

传统方法( RNN/LSTM )需要逐字处理,很难捕捉长距离依赖。Transformer 的解决方案是:让每个词都能"看到"所有其他词

4.2 注意力机制的本质

Attention(注意力)的计算过程:

🧠 Self-Attention 计算示意
┌─────────────────────────────────────────────────┐
│                 Query / Key / Value             │
├─────────────────────────────────────────────────┤
│                                                 │
│  "小王" ──→ Q(查询) ──┐                         │
│                     │                           │
│                     ├──→ 注意力权重 ──→ 输出向量 │
│                     │                           │
│  "小李" ──→ K(键)  ──┘      ↑                  │
│                     │      │                   │
│  "说了" ──→ V(值) ──────────┘                   │
│                                                 │
│  每个词都问其他词:"你和我的相关性有多高?"        │
│  然后根据相关性加权求和,得到新的表示              │
└─────────────────────────────────────────────────┘
            

每个词会产生三个向量:Query(Query)Key(键)Value(值)

计算注意力权重 = Query 和 Key 的"匹配程度",然后用它来加权 Value。

4.3 多头注意力(Multi-Head Attention)

单个注意力头只能捕捉一种关系。实际上模型使用多个注意力头并行计算:

🔀 多头注意力
输入序列 ─┬─→ Head 1 (捕捉 语义相似性)
          ├─→ Head 2 (捕捉 句法关系)
          ├─→ Head 3 (捕捉 指代关系)
          ├─→ Head 4 (捕捉 位置关系)
          ...
          └─→ Head h → concat → 线性变换 → 输出
        
GPT-4 有 96 个注意力头,每个头独立学习不同的关联模式

这就像同时从多个角度分析一个句子,每个头专注于一种类型的关联。

4.4 完整的 Transformer 架构

Transformer 不只是注意力机制,而是一个完整的处理管道:

🏗️ Transformer 编码器/解码器结构
输入: "今天天气很好"
         │
         ▼
┌─────────────────────────────────────────┐
│  Token 化: [今][天][天][气][很][好]      │
└─────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────┐
│  Embedding + 位置编码                    │
│  (词向量 + 位置信息)                     │
└─────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────┐
│         ┌─────────────────┐            │
│         │  Multi-Head     │            │
│         │  Self-Attention │            │
│         └────────┬────────┘            │
│                  ↓                      │
│         ┌─────────────────┐            │
│         │   Add & Norm    │            │
│         │  (残差+归一化)   │            │
│         └────────┬────────┘            │
│                  ↓                      │
│         ┌─────────────────┐            │
│         │      FFN        │            │
│         │ (前馈神经网络)   │            │
│         └────────┬────────┘            │
│                  ↓                      │
│         ┌─────────────────┐            │
│         │   Add & Norm    │            │
│         └─────────────────┘            │
│                  ↑                      │
│         ─────── N层重复 ───────          │
└─────────────────────────────────────────┘
         │
         ▼
输出: 对下一个 token 的概率分布

关键组件:

5. 训练:让模型学会"说话"

了解了架构,现在看看模型是怎么"学会"预测下一个词的。

5.1 预训练:预测下一个词

预训练阶段,模型在海量文本上做"预测下一个词"的任务:

📚 预训练过程
┌─────────────────────────────────────────────────┐
│                 训练数据示例                     │
├─────────────────────────────────────────────────┤
│                                                 │
│  输入: "今天天气真"  ──→ 模型 ──→ 输出: "好"     │
│                        ↑                         │
│                     预测对了✓                    │
│                                                 │
│  输入: "世界上最高的" ──→ 模型 ──→ 输出: "峰"     │
│                          ↑                       │
│                       预测对了✓                  │
│                                                 │
│  输入: "太阳从"  ──→ 模型 ──→ 输出: "东"          │
│                     ↑                            │
│                  预测错了✗                      │
│                  (应该输出"西")                  │
│                  → 调整参数,降低"东"的概率       │
└─────────────────────────────────────────────────┘
            
GPT-4 在数万亿词元的文本上训练,耗时数月,花费数千万美元

这个过程叫语言建模(Language Modeling)。模型被迫学习语言的各种规律——语法、语义、世界知识。

5.2 后训练:Alignment(对齐)

预训练模型会说话,但不一定"说人话"。它可能:

后训练(Post-training)通过两个阶段解决这个问题:

阶段 方法 目的
SFT
(监督微调)
用人类标注的问答对训练 让模型学会"怎么回答"
RLHF
(人类反馈强化学习)
训练 Reward 模型,用强化学习优化 让模型"更符合人类偏好"

🔑 为什么 ChatGPT 的回答更有"人情味"?

RLHF 阶段会雇佣大量人工标注员,对模型的不同输出进行排序打分。模型通过强化学习机制学会:什么样的回答是人类喜欢的。

6. 涌现能力:1+1>2

最神奇的部分来了。随着模型规模增大,某些能力会"突然"出现——这被称为涌现能力(Emergent Abilities)

6.1 什么是涌现?

在物理系统中,涌现指单个粒子没有、但粒子集体表现出的性质。比如:

大模型也有类似现象:

📈 模型规模 vs 能力曲线
能力
  │                                    ╭───────── 涌现
  │                                  ╱
  │                                ╱   ← 突然学会
  │                              ╱
  │                            ╱
  │                          ╱
  │─────────────────────────╱───────────── 小模型表现
  │                     ╱
  │────────────────╱
  └───────────────────────────────────→ 模型规模
          GPT-2   GPT-3  GPT-4
某些能力在小模型上完全不存在,到达某个规模后突然出现

6.2 典型的涌现能力

能力 描述 出现规模
思维链(Chain-of-Thought) 能够一步步推理,展示思考过程 ~100B 参数
零样本学习(Zero-shot) 不需要示例就能执行新任务 ~10B 参数
代码编写 能写复杂程序并自我 debug ~GPT-3.5 级别
多语言能力 能处理未专门训练的语言 ~7B 参数

6.3 为什么会出现涌现?

这仍是活跃的研究领域。可能的解释:

  1. 量变到质变:模型需要足够的"容量"才能存储和组合复杂知识
  2. 任务分解:大模型能隐式地将复杂任务分解为子任务
  3. 涌现能力可能是假象:某些"涌现"可能是评估指标的问题,小模型其实也在做对的事,只是没有做对到能通过测试

"我们不知道智能什么时候会出现,但我们知道当它出现时,它会是意想不到的。" —— 这句话同样适用于大模型。

7. 总结

🎯 核心要点回顾

理解了这些,你就能明白:

下一篇文章我们将深入探讨:如何通过提示工程让 AI 输出质量翻倍