LESSON · 02
LLM
只做
一件事
预测下一个词。仅此而已。
"猜
下
一个"
为什么这件小事,能产生看起来像智能的东西?
Token 是什么
- 不是字、不是词,是 BPE 子词单元
- "unbelievable" → ["un", "believ", "able"]
- 中文一个字常常 = 1-2 个 token
- 英文一个单词常常 = 1-3 个 token
- ⚠ 计费按 token 算,不是字数
tokenizer demo
from tiktoken import encoding_for_model
enc = encoding_for_model("gpt-4")
text = "我爱 AI"
tokens = enc.encode(text)
print(tokens)
# [37046, 102, 11, 15836] ← 4 个 token
print([enc.decode([t]) for t in tokens])
# ['我', '爱', ' ', 'AI']
🎮 试试:你的话有几个 Token?
每个 token
=
一个向量
维度 768 / 4096 / 12288 不等。语义相近 → 向量相近。
上下文窗口
- 4K · GPT-3.5 时代标配
- 128K · GPT-4 / Claude 3.5 主流
- 1M+ · Gemini 长上下文之王
- 2M+ · 实验性,性价比待考
- 长上下文 ≠ 真的看完了。"中间丢失"问题真实存在。
→
一个 token
一个 token 吐
autoregressive
prompt = "今天天气"
# 第 1 步: 模型看 "今天天气" → 概率最高 "真"
# 第 2 步: 模型看 "今天天气真" → 概率最高 "好"
# 第 3 步: 模型看 "今天天气真好" → 概率最高 "。"
# ...直到生成 < EOS > 或达到 max_tokens
三段式
训练
Pretrain → SFT → RLHF/DPO
① Pretrain · 预训练
- 数据:互联网 + 书籍 + 代码,万亿级 token
- 任务:预测下一个 token(最朴素)
- 目标:把世界知识"压缩"进权重
- 代价:算力消耗 99% 都在这里
- 类比:让一个人通读了人类大半的书
② SFT · 监督微调
- 数据:高质量 (指令, 答案) 对
- 规模:从万到百万级
- 目标:把"续写"改造成"对话"
- 类比:教 ta 怎么"对话",而不是"续写小说"
③ RLHF / DPO · 偏好对齐
- 数据:人类对两个回答打分(好/坏)
- RLHF · 训奖励模型 → PPO 强化学习
- DPO · 直接偏好优化,更简单
- 目标:有用、无害、诚实
- 类比:让 ta 学会"得体"地回答
幻觉
不是 bug,
是特性。
概率采样的代价
幻觉为什么存在
- 本质:LLM 永远在"概率最高的下一个词"
- 知识截断:训练数据有日期
- 压缩损失:参数有限,细节会丢
- 自信错误:流畅 ≠ 正确
- → 解药:RAG、Tool Use、引用核对
🎮 温度实验室
prompt: "今天天气真"
0 · 确定性1.0 · 创造性2.0 · 混沌
→ 低温:每次输出几乎一样 | 高温:输出随机多样
本课收获
Token / Embedding
自回归
Pretrain → SFT → RLHF
幻觉根源
采样参数
下一课 · Transformer 架构:Attention is All You Need