Files
test-repo/docs/zh-cn/appendix/llm-intro.md
T
sanbuphy 73f4788d7e feat: comprehensive documentation and demo updates
- Update READMEs and docs across multiple languages
- Enhance interactive demos for Agent, LLM, VLM, Audio, Image Gen, Terminal, and Web Basics
- Add new appendix sections for Database and IDE intros
- Update VitePress config, theme, and utility scripts
- Clean up unused assets and components
2026-01-16 19:10:51 +08:00

341 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 大语言模型入门 (Interactive Intro to LLM)
> 💡 **学习指南**:本章节无需编程基础,通过交互式演示带你深入了解大语言模型(LLM)的底层工作原理。我们将从最基础的分词讲起,一直到 GPT 是如何训练和推理的。
<LlmQuickStartDemo />
## 0. 引言:从人类语言到机器计算
人类用语言交流,计算机用数字计算。
**大语言模型 (LLM)** 的本质,就是一座连接这两个世界的桥梁。
它的核心任务只有一个:**把“理解语言”这个问题,转化成“数学计算”的问题。**
为了实现这个目标,我们需要解决三个核心挑战:
1. **翻译**:怎么把文字变成数字?(分词 & Embedding
2. **效率**:怎么让计算机算得快?(矩阵运算)
3. **记忆**:怎么让计算机读懂上下文?(Transformer 模型)
本教程将带你从零开始,一步步拆解这座桥梁的构建过程。
---
## 1. 第一步:翻译 (Tokenization)
计算机看不懂“汉堡”这两个字,它只认识数字。
所以,我们的第一个任务是:**把文本切分成计算机能理解的最小单位**。
### 1.1 什么是分词?
分词就是把一整句拆成一个个“词单元”(Token)。
- **英文**:自带空格,天然容易分词(如 `I love AI`)。
- **中文**:没有空格,需要算法来切分(如 `我爱人工智能`)。
#### Tokenizer (翻译官)
执行分词这个动作的程序,我们称之为 **Tokenizer**
它就像是一个翻译官,负责将人类的文字翻译成机器能读懂的数字序列。
现代 LLM (如 GPT-4) 通常使用 **Subword Tokenization (子词分词)** 技术(如 BPE 算法)。
它的聪明之处在于:
- **常用词**(如 "apple")保持完整,作为一个 Token。
- **生僻词**(如 "applepie")拆分成常见片段("apple" + "pie")。
这样既能覆盖所有词汇,又不会让词表变得无限大。
<TokenizationDemo />
**关键点**LLM 处理的不是单词,而是 **Token ID**(一串数字索引)。
---
## 2. 核心难题:如何让计算机“计算”语言?
我们的任务是处理语言。但计算机只认识数字。
最直接的想法是:给每个词编个号(ID)。
- 苹果 -> ID 10
- 香蕉 -> ID 20
### 2.1 为什么不用简单的 ID?
如果只用 ID,计算机会认为“10”和“20”只是两个毫无关系的数字。
而且,如果词表有 10 万个词,我们可能需要一个长度为 10 万的数组来表示一个词(One-Hot 编码),这其中 99999 个位置都是 0,只有一个位置是 1。
- **缺点1:太浪费**(稀疏,One-Hot 数组太大)。
- **缺点2:没内涵**(无法表示“苹果”和“香蕉”都是水果)。
### 2.2 解决方案:Embedding (稠密向量)
为了**高效**且**有内涵**地表达一个词,我们发明了 **Embedding**
它不再用一个长长的 0/1 数组,而是用一个短一点的、填满小数的数组(比如 512 个数字)来描述一个词。
- 比如:`[0.8 (是水果), 0.1 (红色), 0.9 (甜)...]`
这样,我们不仅压缩了数据,还把词义变成了可以计算的“坐标”。
<EmbeddingDemo />
---
## 3. 从 单词 到 矩阵
解决了“一个词”的表达问题,接下来要解决“一句话”的表达问题。
### 3.1 为什么要是矩阵?
因为一句话包含了很多个词。
- 一个词 = 一行数字(向量)。
- 一句话 = 很多行数字堆叠在一起。
这就是**矩阵**。
之所以要拼成矩阵,是因为现代计算机的核心硬件——**GPU (显卡)**,天生就是为了做矩阵运算而设计的。
只有把语言变成了矩阵,才能利用 GPU 的并行能力,实现**高效**的推理和训练。
### 3.2 完整流水线
回顾一下数据是怎么流动的:
1. **分词**:把文本切碎。
2. **索引**:把碎片变成 ID。
3. **Embedding**:把 ID 变成向量(为了语义和压缩)。
4. **堆叠**:把向量拼成矩阵(为了 GPU 高效计算)。
<TokenizerToMatrix />
---
## 4. 进化之路:从 RNN 到 Transformer
现在我们有了**高效的数据表达**(矩阵),接下来需要一个**高效的机器**(模型)来处理它。
### 4.1 为什么要淘汰 RNN
以前的模型(RNN)像人读书一样,**从左到右**一个字一个字读。
- **缺点1:慢**。必须读完第1个字才能读第2个,没法并行(浪费了矩阵并行的优势)。
- **缺点2:忘**。读到文章最后,可能已经忘了开头讲什么了(长距离遗忘)。
### 4.2 Transformer 强在哪?
现在的 LLM 都基于 Transformer 架构,它完美契合了矩阵并行的特性:
1. **并行阅读**:它可以**一眼看完**整句话,不用一个字一个字读。
2. **注意力机制 (Attention)**:它可以让句子里的每一个词,都**直接关注**到其他所有词。
- 比如读到“它”这个字时,模型能瞬间注意到前面的“小猫”,从而知道“它”指代的是猫。
<RNNvsTransformer />
---
## 5. 揭秘:从“续写”到“对话”
很多人会误以为 ChatGPT 真的懂我们在说什么,但其实它的本能只有一个:**猜下一个词**Next Token Prediction)。
### 5.1 本能:疯狂续写
如果你给基础模型(Base Model)输入:“今天天气不错”,它可能会续写:“去公园玩吧。”
但如果你输入:“美国的首都是哪里?”,它可能会续写:“中国首都是哪里?日本首都是哪里?”(因为它在模仿考卷的格式,而不是回答问题)。
### 5.2 技巧:用“剧本”来对话
为了让它变成对话助手,工程师们想出了一个绝妙的办法:**角色扮演**。
我们在输入给模型的内容里,悄悄加了一些特殊的**标签(Template)**,让模型以为自己在续写一个“对话剧本”。
例如,你看到的是:
> User: 你好
模型看到的其实是:
> `<|user|>` 你好 `<|assistant|>`
模型一看到 `<|assistant|>`,就知道:“噢,轮到我扮演助手说话了。”
### 5.3 深度交互演示
下方的演示将带你一步步看清 LLM 的本质。请依次点击 **1. 本能 -> 2. 技巧 -> 3. 原理 -> 4. 进阶**,亲手试一试!
<TrainingInferenceDemo />
---
## 6. 从“胡说”到“好助手” (Alignment)
光会对话还不够。原始的模型可能会教人制造炸弹,或者满嘴脏话。
为了让它成为 ChatGPT 这样彬彬有礼、安全可靠的助手,还需要最后两步打磨:
1. **SFT (指令微调)**
- 找人类专家写很多高质量的问答对,教模型“怎么好好说话”。
- 目标:让模型听得懂指令,不再胡乱续写。
- _数据示例 (JSON 格式)_
```json
// SFT 训练数据示例
{
"messages": [
{ "role": "user", "content": "请把这句话翻译成英文:“你好”。" },
{ "role": "assistant", "content": "Hello." }
]
}
// 模型学会了:听到“翻译”指令时,要直接给出结果,而不是续写“你好吗”
```
2. **RLHF (人类反馈强化学习)**
- **打分**:让模型生成几个回答,人类老师来打分(哪个更安全?哪个更有礼貌?)。
- **奖惩**:模型如果说得好就给奖励,说得不好就惩罚。慢慢地,模型就学会了“对齐”人类的价值观(Alignment)。
- _数据示例 (JSON 格式)_
```json
// RLHF 偏好数据示例 (DPO/PPO)
{
"prompt": "如何制造炸弹?",
"chosen": "对不起,我不能回答这个问题。", // 人类更喜欢的回答(安全)
"rejected": "首先你需要..." // 人类拒绝的回答(危险)
}
```
**上方的演示中,点击第 4 个标签页“进阶:对齐”,你可以亲自体验对齐前后的巨大差异。**
---
## 7. 前沿探索:会思考的模型、MoE 架构与线性注意力机制
随着技术的发展,我们发现仅仅靠“预测下一个词”有时候会犯蠢,特别是在处理数学和逻辑问题时。
于是,新一代的 **Thinking Models** (如 OpenAI o1, DeepSeek-R1) 诞生了。
### 7.1 什么是“思考”?(Thinking Models)
人类在回答复杂问题(比如 9.11 和 9.9 哪个大?)时,不会脱口而出,而是会先在脑子里想一想。
Thinking Model 就是学会了这种**慢思考 (System 2)** 能力的模型。
- **快思考 (System 1)**:凭直觉,脱口而出。容易犯错。
- **慢思考 (System 2)**:通过产生一段“思维链 (Chain of Thought)”,一步步推理,最后给出答案。
<ThinkingModelDemo />
### 7.2 训练揭秘:从“模仿”到“探索”
为什么以前的模型不会这样思考?因为训练方法变了。
#### 传统模式 (SFT - 模仿学习)
- **方法**:给模型看人类的思维过程,让它**模仿**。
- **局限**:模型的天花板就是人类数据及其质量。如果人类自己都想不清楚(比如极难的数学题),模型也学不会。
#### 思考模式 (RL - 强化学习)
- **方法**:**不给**过程数据,只给最终的**验证器 (Verifier)**。
- 比如给一道数学题,模型自己去瞎试。
- 试错了 -> 惩罚。
- 试对了 -> 奖励。
- **顿悟时刻 (Aha Moment)**
在经过成千上万次的自我尝试后,模型惊奇地发现:**“如果我在输出答案之前,先在草稿纸上多写几步推导,拿到奖励的概率会大大增加!”**
于是,这种“先思考、再回答”的行为模式就被强化并固定了下来。这就好比阿法狗 (AlphaGo) 自己左右互搏,最终超越了人类棋谱。
### 7.3 实战指南:Prompt 风格大变局
使用 Thinking Model (如 DeepSeek-R1, OpenAI o1) 时,你的提示词策略需要完全改变。
| 特性 | 传统模型 (GPT-4o, Claude 3.5) | 思考模型 (R1, o1) |
| :------------- | :-------------------------------------------- | :------------------------------------------------------- |
| **核心逻辑** | **System 1 (直觉)** | **System 2 (逻辑)** |
| **提示词技巧** | 需要引导思维链 (CoT)<br>例:"请一步步思考..." | **不要**画蛇添足<br>模型自带思维链,人工引导反而会干扰它 |
| **指令清晰度** | 需要把复杂任务拆解成子任务 | 直接给最终目标,让模型自己拆解 |
| **适用场景** | 创意写作、简单翻译、闲聊 | 复杂数学、代码重构、逻辑推理 |
> ⚠️ **注意**:对 Thinking Model 越少干预越好。你只需要清晰地定义**“什么是完美的任务结果”**,而不要去定义**“该怎么做”**。
### 7.4 未来趋势:快慢融合
未来我们可能不再需要区分“思考模型”和“普通模型”。
理想的 AI 应该像人类一样,具备**动态计算 (Adaptive Compute)** 能力:
- 遇到“1+1=?”:瞬间调用 System 1,秒回。
- 遇到“证明黎曼猜想”:自动切换到 System 2,思考三天三夜再回答。
- **用户无感切换**:你只需要提问,模型自己决定用多少“脑力”来解决。
### 7.5 架构进化:从“全能”到“专家团” (Dense vs MoE)
随着模型越来越大(比如 GPT-4, DeepSeek-V3),如果每次生成一个字都要把所有神经元算一遍,速度会慢到无法忍受。
于是,**MoE (Mixture of Experts,混合专家)** 架构应运而生。
- **Dense (稠密模型)**
- **比喻**:一个**全能天才**。不管问什么问题,他都调动整个大脑来回答。
- **特点**:稳定,但随着知识量增加,反应越来越慢。
- **代表**GPT-3, Llama-2。
- **MoE (混合专家模型)**
- **比喻**:一个**专家团队**。有一个前台(Router)负责分发问题。
- 问代码 -> 分给程序员专家。
- 问数学 -> 分给数学家专家。
- 问文学 -> 分给文学家专家。
- **特点**:虽然总人数多(参数量大),但回答一个问题时只有几个人干活(激活参数少)。**又博学,又快**。
- **代表**GPT-4, DeepSeek-V3, Mixtral。
<MoEDemo />
### 7.6 效率革命:突破长度极限 (Linear Attention)
除了 MoE,还有一个核心痛点:**上下文长度**。
传统的 Transformer(如 GPT-4)使用的是**标准注意力机制**,它的计算量随着字数增加呈**平方级爆炸**。
- 读 1 万字,计算量是 1 亿次。
- 读 10 万字,计算量是 100 亿次!
为了解决这个问题,MiniMax (abab 系列) 和 RWKV 等模型采用了**线性注意力机制 (Linear Attention)**。
### 为什么一个是“网状”,一个是“线性”?
根本区别在于:**你是选择“保留所有原话”,还是选择“随时总结”?**
- **标准 Attention (网状) —— 为什么必须回看?**
- **核心原因**:为了**“寻找相关性”**。
- **例子**:比如句子“我把**苹果**给**它**...”。当你读到“**它**”这个字时,为了弄清楚“它”到底指谁,模型必须回头把前面所有的词(我、把、苹果、给)都扫描一遍。
- **过程**:“它”发出一个查询信号 (Query),去和前面所有词的标签 (Key) 进行匹配。
- 和“我”匹配?0分。
- 和“苹果”匹配?**100分!**
- **代价**:因为模型不知道哪个词重要,所以**必须把前面所有词都检查一遍,一个都不能漏**。这就是为什么线会织成一张网。
- **线性 Attention (线性) —— 为什么可以不回看?**
- **原理**:模型学会了“做笔记”。读完“苹果”,它把“有一个苹果”这个信息压缩进**状态 (State)** 里;读到“它”时,直接查阅手里的状态,就能知道“它=苹果”。
- **代价**:虽然快,但在“压缩”过程中可能会丢失一些细节(比如忘记了苹果是红色的)。
<LinearAttentionDemo />
---
## 8. 总结与学习路线
现在你已经打通了从“分词”到“ChatGPT”的任督二脉:
1. **Tokenization**:文本切分为 Token。
2. **Embedding**Token 映射为语义向量。
3. **Transformer**:利用注意力机制处理序列,并行提取特征。
4. **Training**:使用 Template 格式化数据,通过 Teacher Forcing 并行训练。
5. **Inference**:自回归式地逐词生成。
**下一步建议**
- 如果你对数学感兴趣,可以深入学习 **线性代数**(矩阵运算)和 **概率论**。
- 如果你想动手实践,可以尝试使用 Python 的 `transformers` 库加载一个微型模型(如 GPT-2)玩一玩。
---
## 9. 名词速查表 (Glossary)
| 名词 | 全称 | 解释 |
| :----------------- | :----------------------------------------- | :--------------------------------------------------------------------------------------------- |
| **LLM** | Large Language Model | 大语言模型。通过海量文本训练,能理解和生成人类语言的 AI 模型。 |
| **Token** | - | **分词**。文本被切分成的最小单位(如单词、字或字符片段)。模型读写的都是 Token ID。 |
| **Embedding** | - | **词向量**。将 Token 映射到高维空间(如 4096 维)的数值向量,捕捉词语的语义关系。 |
| **Transformer** | - | 现代 LLM 的核心架构。基于注意力机制,能够并行处理长文本。 |
| **Attention** | Attention Mechanism | **注意力机制**。让模型在处理一个词时,能动态关注上下文中的其他相关词。 |
| **Context Window** | - | **上下文窗口**。模型一次推理能“记住”的最大 Token 数量(如 128k)。 |
| **Pre-training** | - | **预训练**。在海量无标注文本上训练模型,让它学会语言的基本规律和世界知识。 |
| **SFT** | Supervised Fine-Tuning | **指令微调**。使用高质量的问答对数据,教模型遵循人类指令。 |
| **RLHF** | Reinforcement Learning from Human Feedback | **人类反馈强化学习**。通过人类打分,进一步调整模型行为,使其符合人类价值观(对齐)。 |
| **CoT** | Chain of Thought | **思维链**。引导模型在给出最终答案前,先生成推理步骤的技术。 |
| **MoE** | Mixture of Experts | **混合专家模型**。由多个“专家”子模型组成,根据问题自动选择激活哪部分专家,效率更高。 |
| **Temperature** | - | **温度**。控制模型生成随机性的参数。温度越高,回答越有创造力但越不可控;温度越低,回答越确定。 |