Appearance
大模型原理简介
理解大模型如何"思考",才能更好地驾驭它
从GPT说起
GPT的全称是 Generative Pre-trained Transformer(生成式预训练变换器),这个名字揭示了它的三个核心特征:
GPT = Generative + Pre-trained + Transformer
↓ ↓ ↓
生成能力 预训练基础 架构基础Transformer架构:大模型的心脏
注意力机制
Transformer的核心创新是自注意力机制(Self-Attention),它让模型能够理解词与词之间的关系。
传统处理方式:
"苹果" → 单独处理 → 无法理解上下文
注意力机制:
"我吃了一个苹果" → "苹果"与"吃"建立强关联 → 理解为水果
"我买了一个苹果手机" → "苹果"与"手机"建立强关联 → 理解为品牌注意力计算过程:
输入序列 → Q(Query) + K(Key) + V(Value)
↓
Attention(Q,K,V) = softmax(QK^T/√d)V
↓
加权求和得到输出| 概念 | 类比 | 作用 |
|---|---|---|
| Query (Q) | 查询问题 | "我要找什么?" |
| Key (K) | 索引标签 | "这里有什么?" |
| Value (V) | 实际内容 | "具体是什么?" |
多头注意力
一个注意力头可能关注不同类型的关系,多头注意力让模型同时关注多个角度:
多头注意力 = 多个独立的注意力头并行计算
头1:关注语法结构
头2:关注语义关系
头3:关注指代关系
...
头N:关注其他特征
最终输出 = 拼接所有头的输出 → 线性变换编码器-解码器结构
原始Transformer包含两部分:
┌─────────────────────────────────────────┐
│ Transformer │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Encoder │ → │ Decoder │ │
│ │ (编码器) │ │ (解码器) │ │
│ │ │ │ │ │
│ │ 理解输入文本 │ │ 生成输出文本 │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────┘
GPT系列:只使用Decoder(解码器)
BERT系列:只使用Encoder(编码器)
T5系列:Encoder + Decoder大模型是如何训练的?
训练三阶段
阶段一:预训练
────────────────────────────
目标:学习语言的统计规律
数据:海量无标注文本(TB级)
方法:预测下一个词
成本:极高(数百万美元)
阶段二:监督微调 (SFT)
────────────────────────────
目标:学习遵循指令
数据:人工标注的问答对
方法:在指令数据上微调
成本:中等
阶段三:人类反馈强化学习 (RLHF)
────────────────────────────
目标:对齐人类价值观
数据:人类偏好排序
方法:强化学习优化
成本:较高预训练:预测下一个词
输入:"今天天气真"
↓
模型预测下一个词的概率分布
↓
"好": 0.35
"不错": 0.25
"差": 0.15
"热": 0.10
...
↓
选择概率最高的词:"好"
↓
继续预测:"今天天气真好"为什么预测下一个词能学到知识?
要准确预测下一个词,模型需要理解:
- 语法规则:"他___" → 预测动词而非名词
- 常识知识:"太阳从___升起" → 预测"东方"
- 专业领域:"Python中print是___" → 预测"函数"
- 逻辑推理:"1+1等于___" → 预测"2"RLHF:让模型更"听话"
RLHF流程:
1. 生成多个回答
问题:"如何学习编程?"
回答A:详细的学习路径...
回答B:编程很难,放弃吧...
回答C:建议从Python开始...
2. 人类排序
A > C > B
3. 训练奖励模型
学习人类的偏好
4. 强化学习优化
让模型生成更符合人类偏好的回答涌现能力:量变到质变
当模型规模达到一定程度,会出现训练时未曾明确训练过的能力:
模型规模与能力涌现:
参数量
│
│ ████████ 推理能力
│ ██████
│ █████
│ █████
│ █████
│ █████
│██████ ████████ 代码能力
│ ██████
│ █████
│ █████
└─────────────────────────────────────────────→
1B 10B 100B 1T 参数规模典型的涌现能力:
| 能力 | 描述 | 涌现规模 |
|---|---|---|
| 上下文学习 | 从示例中学习新任务 | ~100B参数 |
| 思维链推理 | 分步骤解决复杂问题 | ~100B参数 |
| 指令遵循 | 理解并执行复杂指令 | ~10B参数 |
| 代码生成 | 编写可执行代码 | ~10B参数 |
Token:模型的"词汇单元"
什么是Token?
Token是模型处理文本的最小单位:
英文处理:
"Hello world" → ["Hello", " world"] → 2 tokens
中文处理:
"你好世界" → ["你好", "世界"] → 2 tokens
或
"你好世界" → ["你", "好", "世", "界"] → 4 tokens
混合文本:
"Hello世界" → ["Hello", "世", "界"] → 3 tokensToken与成本
Token计算规则:
- 1个英文单词 ≈ 1.3 tokens
- 1个中文字符 ≈ 1-2 tokens
- 代码的token密度更高
成本估算示例:
GPT-4: $0.03/1K input tokens
处理10万字中文 ≈ 15万tokens ≈ $4.5Token优化建议
- 使用简洁的表达
- 避免重复内容
- 合理设计上下文窗口
- 选择合适的模型版本
上下文窗口
上下文窗口决定了模型一次能处理的最大文本长度:
上下文窗口示意:
┌─────────────────────────────────────────────────────┐
│ 上下文窗口 (8K tokens) │
│ ┌─────────────────────────────────────────────────┐│
│ │ 用户输入 + 历史对话 + 系统提示 + 模型输出 ││
│ └─────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────┘
超出窗口 → 早期内容被"遗忘"主流模型的上下文窗口:
| 模型 | 上下文窗口 | 适用场景 |
|---|---|---|
| GPT-4 Turbo | 128K | 长文档分析 |
| Claude 3 | 200K | 超长文本处理 |
| GPT-3.5 | 16K | 一般对话 |
| DeepSeek | 64K | 代码分析 |
推理过程
温度参数
温度控制输出的随机性:
温度 = 0:确定性输出
────────────────────
输入:"1+1等于"
输出:"2"(100%选择概率最高的)
温度 = 0.7:适度随机
────────────────────
输入:"写一首关于春天的诗"
输出:有创意但相关的内容
温度 = 1.0:高度随机
────────────────────
输入:"今天天气"
输出:可能产生意想不到的内容温度选择建议:
| 任务类型 | 推荐温度 | 原因 |
|---|---|---|
| 数学计算 | 0 | 需要确定性答案 |
| 代码生成 | 0.2 | 需要准确语法 |
| 内容创作 | 0.7-0.9 | 需要创意 |
| 头脑风暴 | 1.0+ | 需要多样性 |
Top-P 采样
Top-P (核采样):
只从累计概率达到P的最可能词汇中选择
P = 0.9 示例:
候选词概率:A(0.4), B(0.3), C(0.2), D(0.05), E(0.05)
累计概率:A+B+C = 0.9
→ 只从A、B、C中选择模型能力边界
大模型能做什么?
✅ 擅长的任务:
- 文本生成与改写
- 代码编写与解释
- 知识问答与总结
- 翻译与本地化
- 创意内容生成
- 数据分析与洞察大模型不能做什么?
❌ 不擅长的任务:
- 精确数学计算(可能出错)
- 实时信息获取(知识有截止日期)
- 访问外部系统(需要工具支持)
- 长期记忆(每次对话独立)
- 保证100%准确性(可能产生幻觉)幻觉问题
幻觉:
模型生成看似合理但实际错误的内容
示例:
问题:"《红楼梦》的作者是谁?"
正确答案:曹雪芹
幻觉回答:《红楼梦》的作者是鲁迅...
原因:
- 训练数据中的噪声
- 模型的"创造性"倾向
- 对不确定问题的强行回答减少幻觉的方法
- 提供明确的上下文
- 要求模型"不确定时说不知道"
- 使用RAG检索增强
- 人工验证关键信息
学习检验
概念理解
- Transformer的核心创新是什么?
- 为什么大模型会出现涌现能力?
- 温度参数如何影响模型输出?
实践思考
- 在什么场景下应该使用低温度?什么场景使用高温度?
- 如何设计Prompt来减少模型的幻觉?
下一步学习
📖 AI应用开发概述💬 开始Prompt工程🔌 OpenAI API实践
💡 核心要点:大模型本质上是"预测下一个词"的统计模型,理解这一点有助于你更好地使用它。
