Skip to content

第 1 讲:Transformer 与大模型基础原理

核心结论(15 条必记)

  1. Transformer 的核心是 Self-Attention -- 让所有词能"同时互相看"
  2. 自注意力在计算"谁和谁相关" -- 通过 Q、K、V 三个向量
  3. 位置编码让模型知道词的顺序 -- 否则"狗咬人"和"人咬狗"没区别
  4. 现在主流都是 Decoder-only 架构 -- GPT、LLaMA、通义千问、Claude
  5. 大模型是"自回归生成" -- 一个词一个词预测下一个词
  6. Token 是模型的基本单位 -- 不等于词,也不等于字符
  7. 1 个汉字 ≈ 1-2 个 Token -- 关系到成本和窗口管理
  8. Temperature 控制输出的随机性 -- 低=稳定,高=创造性
  9. Top-P 动态选择候选词 -- 比 Top-K 更灵活
  10. 幻觉是大模型的本质特性 -- 模型在"生成概率高的词",不是"检索事实"
  11. 上下文窗口是硬限制 -- 超过就报错或截断
  12. Embedding 把文本变成向量 -- 是 RAG、搜索、推荐的基础
  13. 语义相似的文本,向量也相似 -- 这是 Embedding 的核心价值
  14. 预训练学语言,微调学对话,对齐学价值观 -- 大模型训练的三个阶段
  15. 理解原理是优化应用的前提 -- 知道为什么,才知道怎么做

一、为什么要从 Transformer 开始?

很多人学大模型应用开发,直接就开始调 API、写 Prompt,看起来也能做出东西。

但你会很快遇到这些困惑:

  • 为什么模型有时候答得很好,有时候答得很差?
  • 为什么 Prompt 换个说法,效果就完全不一样?
  • 为什么模型会"编造"不存在的事实?
  • 为什么上下文窗口有限制?为什么超过就不行?
  • 为什么有的模型擅长对话,有的擅长文本生成?

这些问题的答案,都藏在 Transformer 架构和大模型的底层原理 里。

这一讲的目标:

  1. 建立对 Transformer 的直觉理解
  2. 理解大模型"生成"的本质
  3. 知道为什么会有幻觉、为什么有长度限制、为什么需要 Prompt
  4. 为后面的 RAG、Agent、微调打下坚实基础

二、从 RNN 到 Transformer:一场革命

1. RNN 时代的问题

在 Transformer 出现之前,处理文本序列的主流是 RNN(循环神经网络) 和它的变体 LSTM、GRU。

RNN 的核心思想:

  • 一个词一个词地处理
  • 每处理一个词,都把之前的"记忆"带上
  • 像这样:今天 -> 天气 -> 很 -> 好,逐个处理

RNN 的三个致命问题:

问题说明
梯度消失/爆炸反向传播时梯度连乘,越乘越小(消失)或越大(爆炸),导致远处信息无法学习
无法并行计算必须按顺序处理,无法利用 GPU 并行能力
信息瓶颈所有历史信息压缩到固定大小的隐状态向量,损失严重

梯度消失:为什么 RNN 学不到远处的信息?

训练神经网络的过程是:前向传播算预测 → 算误差 → 反向传播算梯度 → 更新参数

反向传播的核心是链式法则 -- 梯度是一层层乘过去的:

第1层的梯度 = 损失函数对第N层的梯度 × 第N层对第N-1层的梯度 × ... × 第2层对第1层的梯度

如果每一层的梯度都小于 1(比如 0.9),连乘 100 次:

0.9^100 ≈ 0.000026

第 1 层收到的梯度几乎为 0,参数几乎不更新,等于白学

直觉理解: 梯度就像"学习信号",每过一层就衰减一次,传到前面已经听不到了。

RNN 处理长序列时,时间步之间的梯度连乘导致远处的信息几乎无法影响当前参数,这就是"长距离依赖难学习"的根本原因。

Transformer 怎么解决? Self-Attention 让任意两个位置直接交互,不需要一层层传递,所以不存在梯度连乘消失的问题。但 Transformer 本身也有多层堆叠,层数很深时仍然会面临梯度问题,这需要残差连接来解决(后面讲)。


2. Transformer 的革命性突破

2017 年,Google 发表了论文 《Attention Is All You Need》,提出了 Transformer 架构。

核心思想:不再逐个处理,而是让所有词"同时互相看"。

打个比方:

  • RNN 像接力赛: 信息一棒一棒传,传到后面就模糊了
  • Transformer 像群聊: 所有人同时在线,任何两个人都能直接对话

三个巨大优势:

  1. 长距离依赖不再是问题 -- 第一个词和第 1000 个词可以直接"对话"
  2. 可以并行计算 -- 所有词同时处理,训练和推理速度大幅提升
  3. 表达能力更强 -- 每个词都能看到全局信息

现在几乎所有大模型(GPT、BERT、LLaMA、通义千问、文心一言)都基于 Transformer。


三、Transformer 的核心:自注意力机制(Self-Attention)

1. 自注意力在做什么?(直觉理解)

自注意力的核心任务:让每个词知道它应该关注句子中的哪些其他词。

例子:

句子:The animal didn't cross the street because it was too tired.

当模型处理 it 这个词时,自注意力机制会计算 it 和句子中每个词的"相关性分数":

  • itanimal:相关性高
  • itstreet:相关性低
  • ittired:有一定相关性

最终 it 的表示会融合其他词的信息,尤其是 animal 的信息。


2. 自注意力的计算过程(简化版)

步骤 1:每个词生成三个向量

  • Q(Query,查询):我要找什么信息?
  • K(Key,键):我能提供什么信息?
  • V(Value,值):我具体是什么信息?

步骤 2:计算相关性分数

用当前词的 Q 和所有词的 K 做点积,算出相关性分数。

步骤 3:用分数加权融合 V

把所有词的 V 按分数加权求和,得到融合了上下文信息的新表示。


3. 多头注意力(Multi-Head Attention)

Transformer 不是只做一次注意力,而是并行做多次(比如 8 次、12 次)。

不同的"头"关注不同的关系:

  • 第 1 个头关注语法关系(主谓宾)
  • 第 2 个头关注语义关系(同义词、上下位)
  • 第 3 个头关注指代关系(it 指向谁)

最后把所有头的结果拼接起来,让模型能同时捕捉多种信息。


4. 位置编码(Positional Encoding)

自注意力里所有词"同时"处理,模型怎么知道词的顺序

比如 狗咬人人咬狗 意思完全不同。

解决办法:位置编码 -- 在每个词的向量里加入位置信息(第 1 个词、第 2 个词……)。


四、Transformer 的完整结构

1. Encoder(编码器)-- 理解输入

多层 Self-Attention + 前馈神经网络,每层有残差连接和归一化。

典型应用:BERT -- 擅长文本分类、命名实体识别、问答

2. Decoder(解码器)-- 生成输出

Masked Self-Attention(只能看前面的词)+ Cross-Attention + 前馈神经网络。

典型应用:GPT -- 擅长文本生成、对话、续写

3. Encoder-Decoder -- 完整 Transformer

同时有 Encoder 和 Decoder。典型应用:机器翻译(T5、BART)

4. 深入:残差连接、Layer Normalization 与 Dropout

Transformer 的每一层不是简单堆叠,而是用了一个关键结构:Add & Norm

输入 x → [Self-Attention] → 残差加和 → [LayerNorm] → [前馈网络] → 残差加和 → [LayerNorm] → 输出
                 ↑                              ↑
            x + attention(x)             norm(x + ffn(x))

残差连接(Residual Connection)

做法: 把层的输入直接"跳"到输出,和层的输出相加:

output = x + Sublayer(x)

为什么需要? 还记得前面讲的梯度消失吗?深层网络反向传播时,梯度要一层层乘过去。有了残差连接,梯度可以直接跳过中间层传播:

没有残差:梯度 = 第N层梯度 × 第N-1层梯度 × ... × 第1层梯度(连乘衰减)
有残差:  梯度 = 第N层梯度 × (1 + 第N-1层梯度) × ... × (1 + 第1层层梯度)

括号里有 1 +,即使子层梯度很小,至少也有 1 保底,梯度不会消失。

直觉理解: 残差连接给梯度修了一条"高速公路",让学习信号可以直达每一层。

Layer Normalization(层归一化)

做法: 对同一个 token 的所有特征做归一化(均值为 0,方差为 1)。

为什么不用 Batch Normalization?

维度Batch NormLayer Norm
归一化方向同一特征跨样本同一样本跨特征
对序列长度敏感敏感,batch 小时不稳定不敏感
推理时需要保存运行均值不需要
适合 Transformer

Layer Norm 的作用:稳定每一层的输出分布,防止数值越来越大或越来越小,加速训练收敛。

Dropout(随机丢弃)

做法: 训练时随机把一部分神经元的输出置为 0(比如 50% 概率丢弃)。

为什么需要? 防止过拟合。如果模型太依赖某些特定神经元,就会死记硬背训练数据。Dropout 强迫模型学会"冗余表示",即使部分神经元被丢弃也能正常工作。

Transformer 中 Dropout 用在哪里:

位置说明
Self-Attention 的权重上随机丢弃部分注意力连接
每个子层的输出上在 Add & Norm 之前丢弃
Embedding + 位置编码输入层也会用

注意: 训练时才启用 Dropout,推理(使用模型)时关闭。

三者配合:Add & Norm 的完整流程

输入 x

  ├──→ [Self-Attention] → [Dropout] ──→ (+) 残差加和 ──→ [Layer Norm]
  │                                      ↑
  └──────────────────────────────────────┘

                        ┌─────────────────┘

  ──→ [前馈网络 FFN] → [Dropout] ──→ (+) 残差加和 ──→ [Layer Norm] ──→ 输出

                   ┌──────────────────┘
                   └── 上一步的输出直接跳过来

一句话总结: 残差连接解决梯度消失,Layer Norm 稳定训练,Dropout 防过拟合。三者配合让 Transformer 能堆叠到几十甚至上百层。


5. 为什么现在 Decoder-only 成为主流?

GPT 系列、LLaMA、通义千问、Claude 全是 Decoder-only。

  1. 生成任务更通用 -- 对话、写作、代码生成都是生成任务
  2. Decoder 也能做理解任务 -- 通过 Prompt 引导即可
  3. 训练效率更高 -- Decoder 的自回归训练更简单

五、大模型是怎么"生成"文本的?

1. 自回归生成(Autoregressive Generation)

一个词一个词地预测下一个词。

输入:今天天气

步骤 1: 预测下一个词 → "很"
步骤 2: 现在输入变成"今天天气很"
步骤 3: 预测下一个词 → "好"
步骤 4: 现在输入变成"今天天气很好"
... 重复直到生成结束符或达到最大长度

2. Token 是什么?

Token 不等于"词",也不等于"字符"。Token 是模型处理的最小单位。

语言示例Token 情况
中文"今天"可能是 1 个 Token
中文"很好"可能是 2 个 Token:"很" + "好"
英文"hello"1 个 Token
英文"ChatGPT"可能是 2 个 Token:"Chat" + "GPT"

常见 Tokenization 方法:

方法使用者
BPE(Byte Pair Encoding)GPT 系列
WordPieceBERT
SentencePiece很多开源模型

重要规律:

  • 1 个汉字 ≈ 1-2 个 Token
  • 1 个英文单词 ≈ 1-2 个 Token

为什么要关心 Token?

  1. API 按 Token 计费 -- 输入 + 输出的 Token 总数
  2. 上下文窗口按 Token 算 -- GPT-4 是 8K/32K/128K Token
  3. 生成速度按 Token 算 -- 每秒生成多少 Token

3. 概率分布与采样

模型不是"选最好的词",而是从概率分布中采样

输入:今天天气很

概率分布:
- 好:60%
- 棒:20%
- 不错:10%
- 糟糕:5%
- 其他:5%

怎么选取决于生成参数。


六、生成参数:Temperature、Top-K、Top-P

1. Temperature(温度)

控制概率分布的"平滑程度"。

Temperature行为
0完全确定性,永远选概率最高的词
0.1-0.3非常稳定、保守
0.7-0.9有一定创造性
1.0原始概率分布
> 1.5非常随机、可能不连贯
任务类型推荐 Temperature原因
客服问答0.1-0.3准确、稳定
代码生成0.2-0.5正确、可执行
翻译0.3精确
创意写作0.7-1.0多样性
头脑风暴0.8-1.2发散思维

2. Top-K 采样

只从概率最高的 K 个词中选择。

比如 Top-K = 50:只考虑概率最高的 50 个词,其他直接忽略。

问题: K 是固定的,不够灵活。


3. Top-P(Nucleus Sampling)

从累计概率达到 P 的最小词集中选择。

比如 Top-P = 0.9:按概率从高到低排序,累加直到总和 ≥ 0.9,只从这些词中选择。

比 Top-K 更灵活,动态调整候选词数量。

实战推荐:Top-P = 0.9-0.95,和 Temperature 配合使用。


4. 其他参数

参数说明范围
Frequency Penalty惩罚已出现的词,减少重复0-2
Presence Penalty惩罚已出现的主题,鼓励新话题0-2
Max Tokens限制生成 Token 数量-
Stop Sequences遇到特定字符串停止生成-

七、为什么会有"幻觉"(Hallucination)?

幻觉:模型生成看似合理但实际错误的信息。

1. 幻觉的本质原因

大模型不是在"检索"知识,而是在"生成"概率最高的下一个词。

例子:

问:鲁迅和周树人打架,谁会赢?

模型看到"鲁迅"和"周树人"经常一起出现,生成概率最高的回答 -- 但模型并不"知道"鲁迅就是周树人

更深层原因:

  1. 训练数据的统计规律 ≠ 事实 -- 模型学到"文本模式",不是"世界知识"
  2. 生成机制的本质 -- 每次生成都是"概率采样",不是"查询数据库"
  3. 没有真正的"理解" -- 模型不知道什么是真假,只知道什么"听起来合理"

2. 如何缓解幻觉?

方法说明
降低 Temperature输出更保守、确定
使用 RAG先检索真实文档,再基于文档回答(最有效)
Prompt 约束"不知道就直接说不知道,不要编造"
多轮验证生成后再让模型验证
引入外部工具搜索引擎、数据库(Agent 思路)
微调训练模型拒绝回答不知道的问题

根本认知:幻觉无法完全消除,只能缓解和控制。这是大模型的本质特性,不是 bug。


八、上下文窗口(Context Window)

1. 什么是上下文窗口?

模型一次能"看到"的最大 Token 数量。

包括:System Prompt + 对话历史 + 用户输入 + 模型输出

模型窗口大小
GPT-3.5-turbo4K / 16K
GPT-48K / 32K / 128K
Claude 3200K
通义千问8K / 32K
Kimi200K

2. 为什么有长度限制?

原因说明
计算复杂度Self-Attention O(n^2),序列翻倍计算量变 4 倍
显存限制长序列需要大量显存
位置编码训练时最大长度固定

3. 怎么管理上下文窗口?

方法说明
滑动窗口只保留最近 N 轮对话
对话摘要定期总结,用摘要替换原始历史
重要信息提取提取关键信息,丢弃细节
分段处理长文档分块处理,汇总
RAG检索相关片段按需注入

九、Embedding:连接传统系统和大模型的桥梁

1. Embedding 是什么?

把文本转换成向量(一串数字)。

"今天天气很好" → [0.2, -0.5, 0.8, 0.1, ...](1536 个数字)

2. 核心特性:语义相似性

语义相近的文本,向量也相近。

余弦相似度衡量:接近 1 = 相似,接近 -1 = 相反,接近 0 = 不相关

3. 应用

应用说明
语义搜索RAG 的核心
文本分类Embedding + ML 模型
去重计算文本相似度
聚类发现主题
推荐系统用户兴趣和内容的相似度

4. 常用 Embedding 模型

模型维度特点
text-embedding-3-small (OpenAI)1536通用,API 调用
BGE 系列 (智源)768/1024中文好,开源
M3E (Moka)768中文优化,开源

选型:英文 → OpenAI,中文 → BGE/M3E,私有部署 → 开源

5. 注意事项

  • 不同模型的 Embedding 不兼容,切换需重新生成
  • 有最大长度限制(512-8192 Token)
  • 需要向量数据库存储(Milvus、Chroma、FAISS)

十、预训练、微调、对齐:大模型怎么训练出来的?

总览:三个阶段

阶段目标数据量算力消耗结果
预训练学会语言本身TB 级原始文本极高(数千 GPU 月)基础模型:会续写,不会对话
SFT(监督微调)学会对话和遵循指令几千~几万条指令对中等指令模型:能听懂指令
RLHF/DPO(对齐)价值观和人类对齐几万~十几万条偏好数据中等对齐模型:有用、诚实、无害

流程: 基础模型(预训练) → 指令模型(SFT) → 对齐模型(RLHF/DPO)


1. 预训练:让模型学会"语言"

目标

从海量文本中学会语法、常识、推理能力,但不追求特定任务表现。

数据从哪来?

数据来源占比(典型)说明
网页爬取(Common Crawl)~60%量大但质量参差不齐,需要大量清洗
书籍~15%长文本、高质量知识
论文(arXiv)~5%学术推理能力
代码(GitHub)~10%逻辑推理、代码生成能力
百科(Wikipedia)~5%准确的结构化知识
对话/论坛~5%对话能力

数据清洗流程: 原始数据 → 去重 → 去低质量内容 → 过滤敏感信息 → 分词

训练任务:预测下一个词(Causal Language Modeling)

给模型一段文本的前 N 个词,让它预测第 N+1 个词:

输入:  "今天天气很"
目标:  "好"

输入:  "Transformer 的核心机制是"
目标:  "自"

损失函数:交叉熵(Cross-Entropy Loss)

模型输出的是所有候选词的概率分布,损失函数衡量预测分布和真实答案的差距:

预测分布:好(0.6) 棒(0.2) 不错(0.1) 糟糕(0.05) ...
真实答案:好(one-hot:好=1,其他=0)

交叉熵损失 = -log(预测"好"的概率) = -log(0.6) ≈ 0.51

预测越准确,损失越小。 训练的目标就是让总损失尽可能小。

反向传播与参数更新

前向传播:输入文本 → 模型计算 → 输出预测分布
计算损失:预测分布 vs 真实答案 → 交叉熵损失
反向传播:损失 → 计算每个参数的梯度(偏导数)
参数更新:参数 = 参数 - 学习率 × 梯度

一句话: 梯度告诉模型"往哪个方向调整参数能让预测更准",学习率控制"每次走多远"。

规模

模型参数量训练数据量训练算力预估成本
GPT-31750 亿~500B Token~355 GPU 年~460 万美元
LLaMA-2 70B700 亿~2T Token~1720 GPU 年~数百万美元
GPT-4未公开(推测万亿级)未公开极高~1 亿美元级

关键训练技术

技术作用说明
分布式数据并行(DDP)加速训练把数据分到多张 GPU,各算各的梯度再汇总
张量并行(TP)突破单卡显存限制一个模型切成多块,分布在不同 GPU 上
流水线并行(PP)突破单卡显存限制模型按层切分,不同 GPU 负责不同层
混合精度训练节省显存+加速用 FP16/BF16 做计算,FP32 做梯度更新
梯度检查点(Gradient Checkpointing)节省显存不存中间激活值,需要时重新计算,用时间换空间
学习率调度稳定训练先预热(warmup)线性升高,再余弦衰减

2. SFT(监督微调):让模型学会"对话"

预训练模型的问题

预训练后的基础模型只会续写文本,你问它问题,它可能续写一个类似的问题而不是回答:

用户:中国的首都是哪里?
基础模型可能输出:中国的首都是哪里?日本的首都是哪里?韩国的首都是哪里?

SFT 怎么做?

人工编写的高质量指令-回答对训练模型:

json
{
  "instruction": "请解释什么是机器学习",
  "input": "",
  "output": "机器学习是人工智能的一个分支,它让计算机能够从数据中学习规律,而不需要显式编程每一个规则..."
}
json
{
  "instruction": "请将以下文本翻译成英文",
  "input": "今天天气很好",
  "output": "The weather is very nice today."
}

训练细节

维度说明
数据量几千到几万条(相比预训练很少,但质量极高)
训练方式和预训练一样是预测下一个词,但只计算回答部分的损失
学习率比预训练小很多(预训练的 1/10 ~ 1/5),避免"遗忘"预训练知识
训练轮数通常 2-5 个 epoch,多了容易过拟合

关键点: SFT 的数据质量远比数量重要。几千条精心标注的数据,效果可能比几十万条低质量数据好得多。


3. RLHF / DPO(对齐):让模型更"安全"

SFT 后的模型能对话了,但可能:输出有害内容、胡编乱造、不遵循用户意图。

RLHF(Reinforcement Learning from Human Feedback)

分两步走:

Step 1:训练奖励模型(Reward Model)

给模型同一个问题,让它生成两个回答:
问题:"什么是 Python?"

回答 A(好):"Python 是一种通用编程语言,以简洁易读著称..."
回答 B(差):"Python 是一种蛇,生活在热带..."

人类标注:A 比 B 好

收集几万~十几万条这样的偏好数据 → 训练一个"打分模型"(奖励模型)

奖励模型能自动给任意回答打分:好回答高分,差回答低分。

Step 2:用 PPO 强化学习优化

策略模型(大模型)生成回答 → 奖励模型打分 → PPO 算法更新策略模型

                                          让模型倾向于生成高分回答

同时加一个 KL 散度惩罚,防止模型为了追求高分而偏离太远(比如只输出空话)。

PPO 的问题: 训练不稳定、实现复杂、需要同时维护 4 个模型(策略模型、参考模型、奖励模型、价值模型)。

DPO(Direct Preference Optimization)-- RLHF 的简化版

核心思想: 跳过奖励模型,直接从人类偏好数据中学习。

同样的偏好数据(A 比 B 好)

DPO 直接优化:
  - 增大生成"好回答 A"的概率
  - 减小生成"差回答 B"的概率
对比RLHF (PPO)DPO
需要奖励模型
训练稳定性不稳定,超参敏感稳定
实现复杂度
效果成熟,经过大规模验证接近 RLHF,部分场景更好
代表模型ChatGPT、ClaudeLLaMA-3、Qwen-2(后期版本也用)

趋势: 越来越多模型(尤其是开源模型)转向 DPO 或其变体。


4. 训练全流程总结

原始数据(TB级文本)


  ┌─────────┐
  │  预训练   │ ──→ 基础模型(Base Model)── 会续写,不会对话
  └─────────┘
       │ + 几千条指令数据

  ┌─────────┐
  │   SFT    │ ──→ 指令模型(SFT Model)── 能对话,但可能不安全
  └─────────┘
       │ + 几万条偏好数据

  ┌─────────┐
  │ RLHF/DPO │ ──→ 对齐模型(Chat/Instruct Model)── 有用、诚实、无害
  └─────────┘

类比理解:

阶段类比
预训练读了整个图书馆 -- 知识渊博但不知道怎么和人交流
SFT学会了面试技巧 -- 知道怎么回答问题了
RLHF/DPO学会了职场礼仪 -- 不仅会回答,还知道什么该说什么不该说

十一、面试高频题

Q1:Transformer 和 RNN 的区别?

维度RNNTransformer
处理方式顺序处理并行处理
长距离依赖信息衰减任意位置直接交互
计算效率无法并行高度并行
核心机制循环连接自注意力

Q2:自注意力怎么工作?

Q(查询)+ K(键)+ V(值)→ Q 和所有 K 算相关性 → 用分数给 V 加权 → 融合上下文的新表示

Q3:Token 和"词"的区别?

Token 是模型最小单位,不等于词也不等于字符。1 个汉字 ≈ 1-2 个 Token。API 按 Token 计费。

Q4:Temperature 怎么调?

0 = 确定,低 = 保守,高 = 创造性。客服/代码 → 低,写作/头脑风暴 → 高。

Q5:为什么会有幻觉?

模型"生成概率高的词"而非"检索事实"。无法完全消除,只能用 RAG/Prompt 约束/外部工具缓解。

Q6:上下文窗口为什么有限制?

Self-Attention O(n^2) 复杂度 + 显存限制。超过会报错。管理方法:滑动窗口、摘要、RAG。

Q7:Embedding 是什么?

文本转向量。语义相似的文本向量也相似。用于语义搜索(RAG)、分类、推荐。

Q8:GPT vs BERT?

GPT = Decoder-only,单向注意力,擅长生成。BERT = Encoder-only,双向注意力,擅长理解。现在 GPT 类是主流。

Q9:预训练、微调、对齐?

预训练学语言 → SFT 学对话 → RLHF/DPO 学价值观。

Q10:什么是梯度消失?Transformer 怎么缓解?

反向传播时梯度层层连乘,越乘越小,前面的层几乎学不到东西。Transformer 通过残差连接(output = x + Sublayer(x))让梯度可以"跳层"传播,避免连乘衰减。

Q11:残差连接、Layer Norm、Dropout 各自的作用?

机制作用
残差连接解决梯度消失,让梯度跳层传播
Layer Norm稳定每层输出分布,加速训练收敛
Dropout随机丢弃神经元,防止过拟合

Q12:RLHF 和 DPO 的区别?

RLHF 需要先训练奖励模型再用 PPO 强化学习,实现复杂、不稳定。DPO 直接从偏好数据学习,跳过奖励模型,更简单稳定。趋势是越来越多模型转向 DPO。

Q13:预训练的损失函数是什么?

交叉熵损失。模型预测所有候选词的概率分布,损失 = -log(预测正确答案的概率)。预测越准,损失越小。

Q14:为什么大模型不能直接回答企业内部知识?

只知道训练数据里的内容,不存储知识而是生成概率高的文本。解决:RAG、微调、外部工具。


十二、练习题

练习 1:概念理解

  1. 为什么 Transformer 比 RNN 更适合处理长文本?
  2. Self-Attention 在"理解"一个句子时做了什么?
  3. 为什么 Token 不等于"词"?举 3 个例子。
  4. Temperature = 0 和 Temperature = 1 的输出有什么区别?
  5. 幻觉是不是 bug?能不能完全消除?

练习 2:参数调优

问题 1:客服机器人每次回答都一样,太"死板"。调哪个参数?怎么调?

问题 2:模型编造不存在的产品功能。调哪个参数?还有什么办法?

问题 3:模型回答经常重复同一个词。调哪个参数?

练习 3:实战设计

做一个"企业知识库问答系统":用什么架构?怎么防止幻觉?怎么管理上下文窗口?

练习 4:Debug 题

用户反馈"对话聊着聊着就报错了":

This model's maximum context length is 4096 tokens.
However, your messages resulted in 4523 tokens.

问题是什么?有哪些解决办法(至少 3 种)?


下一讲预告

第 2 讲:Prompt Engineering 深度实践

  • Prompt 的结构化设计框架
  • Zero-shot vs Few-shot vs Chain-of-Thought
  • Prompt 注入攻击与防御
  • 10 个实战案例

基于 VitePress 构建