前置知识
阅读本文前,建议先了解:
- 01-大语言模型概述 - 了解 LLM 基本概念
一、概述
概率预测(Probability Prediction)是 LLM 的核心工作机制。LLM 的所有能力——无论是回答问题、编写代码还是创作文章——都建立在一个简单但强大的基础之上:根据上文预测下一个词。
二、Token 与分词
2.1 什么是 Token
Token(词元)是 LLM 处理文本的基本单位。它可以是:
| Token 类型 | 示例 |
|---|---|
| 完整的词 | ”苹果” → [苹果] |
| 词的一部分 | ”机器学习” → [机器][学习] |
| 单个字符 | ”a” → [a] |
| 标点符号 | ”。” → [。] |
| 特殊标记 | <EOS>(句子结束) |
2.2 分词过程
分词(Tokenization)是将输入文本转换为 Token 序列的过程:
输入: "今天天气很好"
分词器处理:
┌──────┬──────┬──────┬──────┐
│ 今天 │ 天气 │ 很好 │ <EOS>│
└──────┴──────┴──────┴──────┘
│ ID:123│ ID:456│ ID:789│ID: 0 │
每个 Token 都有一个唯一的 ID,LLM 实际处理的是这些数字 ID。
2.3 词汇表
词汇表(Vocabulary)是模型认识的所有 Token 的集合:
| 模型 | 词汇表大小 |
|---|---|
| GPT-4 | ~100,000 |
| LLaMA 2 | 32,000 |
| ChatGLM | 130,528 |
词汇表大小的影响
词汇表越大,单个 Token 能承载的信息越多,序列长度越短;但模型参数也会相应增加。
三、Next Token Prediction
3.1 核心任务
LLM 的核心任务可以用一个公式概括:
即:给定前面的所有词,预测下一个词的条件概率。
3.2 工作流程
第 1 步:输入上文
↓
"今天天气"
第 2 步:模型计算概率分布
↓
┌─────────────────────────────────────┐
│ 很好 ████████████████████ 40% │
│ 不错 ████████████ 20% │
│ 晴朗 ████████ 15% │
│ ... │
└─────────────────────────────────────┘
第 3 步:采样一个 Token
↓
选择 "很好"
第 4 步:将结果加入上文,继续预测
↓
"今天天气很好" → 重复上述过程
3.3 概率分布的计算
模型内部通过以下步骤计算概率分布:
- 嵌入层:将 Token ID 转换为向量表示
- Transformer 层:通过多层注意力机制处理上下文
- 输出层:将最终向量映射到词汇表大小的向量
- Softmax:将向量转换为概率分布
Token ID → Embedding → Transformer → Logits → Softmax → 概率分布
四、自回归生成
4.1 什么是自回归
自回归(Autoregressive)是指模型根据自己的输出继续生成后续内容。
初始输入: "什么是 AI?"
生成过程:
┌─────────────────────────────────────────────────┐
│ 步骤 │ 当前输入 │ 预测输出 │ 新输入 │
├──────┼─────────────────┼──────────┼────────────────┤
│ 1 │ "什么是 AI?" │ "人工" │ "什么是 AI?人工"│
│ 2 │ "什么是 AI?人工"│ "智能" │ "什么是 AI?人工智能"│
│ 3 │ "...人工智能" │ "是" │ "...人工智能是" │
│ 4 │ "...人工智能是" │ "一种" │ "...人工智能是一种"│
│ ... │ ... │ ... │ ... │
└──────┴─────────────────┴──────────┴────────────────┘
4.2 停止条件
生成过程在以下条件满足时停止:
| 停止条件 | 说明 |
|---|---|
| EOS Token | 模型生成句子结束标记 |
| 最大长度 | 达到预设的最大 Token 数 |
| 停止词 | 生成特定的停止词(如用户指定的结束符) |
五、采样策略
从概率分布中选择下一个 Token 的过程叫做采样(Sampling)。不同的采样策略会产生不同风格的输出。
5.1 贪婪解码(Greedy Decoding)
最简单的策略:每次都选概率最高的 Token。
概率分布:
天气 40% │ 不错 20% │ 晴朗 15% │ ...
贪婪解码 → 选择 "天气"
| 优点 | 缺点 |
|---|---|
| 输出稳定、可重现 | 可能过于单调、重复 |
| 适合代码、数学等确定性任务 | 缺乏创造性 |
5.2 温度采样(Temperature Sampling)
温度(Temperature,记作 )参数控制概率分布的”尖锐”程度:
| 温度值 | 效果 | 适用场景 |
|---|---|---|
| (低温) | 概率分布更尖锐,高概率词更可能被选 | 代码生成、事实问答 |
| 原始概率分布 | 通用场景 | |
| (高温) | 概率分布更平滑,低概率词有机会被选 | 创意写作、头脑风暴 |
原始分布:天气 40% │ 不错 20% │ 晴朗 15%
T=0.5(低温):天气 65% │ 不错 25% │ 晴朗 7%
T=1.5(高温):天气 30% │ 不错 25% │ 晴朗 18%
5.3 Top-k 采样
Top-k 只保留概率最高的 个 Token,其他置为 0。
原始分布:天气 40% │ 不错 20% │ 晴朗 15% │ 很好 10% │ ...
Top-3 采样后:天气 40% │ 不错 20% │ 晴朗 15% │ (其他=0%)
然后在 remaining 3 个中重新归一化采样
| 优点 | 缺点 |
|---|---|
| 去除低概率噪声 | 值固定,不够灵活 |
5.4 Top-p 采样(核采样)
Top-p(Nucleus Sampling)动态选择累积概率超过 的最小 Token 集合。
概率分布:天气 40% │ 不错 20% │ 晴朗 15% │ 很好 10% │ 一般 8% │ ...
Top-p=0.75:
- 天气 40% (累积 40%)
- 不错 20% (累积 60%)
- 晴朗 15% (累积 75%) ✓ 达到阈值
保留这 3 个,其他置为 0
| 优点 | 缺点 |
|---|---|
| 根据模型置信度动态调整 | 参数 需要调优 |
5.5 参数组合策略
实际应用中,通常组合使用多个参数:
处理顺序:Top-k → Top-p → Temperature
典型配置:
┌─────────────────────────────────────────┐
│ 场景 │ Temperature │ Top-p │ Top-k │
├─────────────────────────────────────────┤
│ 代码生成 │ 0.0-0.2 │ 0.95 │ 40 │
│ 知识问答 │ 0.3-0.5 │ 0.85 │ - │
│ 创意写作 │ 0.7-0.9 │ 0.95 │ - │
│ 头脑风暴 │ 1.0-1.2 │ 0.95 │ - │
└─────────────────────────────────────────┘
六、为什么 LLM 能”理解”语言
6.1 统计规律 → 语义理解
通过海量数据的训练,LLM 学到了:
| 学习层次 | 示例 |
|---|---|
| 词法 | ”苹果”常与”水果”、“吃”等词共现 |
| 句法 | 主谓宾结构的排列规律 |
| 语义 | ”猫坐在垫子上”与”垫子在猫下面”表达相似含义 |
| 世界知识 | ”巴黎是法国的首都” |
| 推理能力 | ”小明比小红高,小红比小刚高” → 小明最高 |
6.2 涌现能力
当模型规模和训练数据达到一定程度后,LLM 会”涌现”出意想不到的能力:
- 零样本学习:无需示例就能完成新任务
- 思维链推理:能将复杂问题拆解为多步
- 自我纠错:能够检查并修正自己的错误
七、总结
概率预测是 LLM 的核心机制:
- Token 化:将文本转换为模型可处理的数字序列
- Next Token Prediction:根据上文预测下一个词的概率分布
- 自回归生成:逐词生成,每生成一个词就加入上下文继续预测
- 采样策略:通过 Temperature、Top-k、Top-p 等参数控制生成风格
理解概率预测机制,是深入理解 LLM 工作原理的基础。
延伸阅读
- 01-大语言模型概述 - LLM 基础知识回顾
- 03-Transformer 架构 - 了解概率预测的技术实现
- 提示词 Prompt - 学习如何通过 Prompt 影响 LLM 的输出