Transformer 解剖:从 Attention 到推理系统
第 7 章 预训练范式之战:从 BERT 到 GPT
第 7 章 预训练范式之战:从 BERT 到 GPT
第 6 章我们讲清楚了三种架构的差别。但架构只是骨架——决定一个模型最终能做什么的,是它的预训练目标(pretraining objective)。同样的 Decoder-only 架构,喂不同的训练目标,会变成完全不同的模型。
2018 到 2023 年这五年,预训练范式经历了一场惨烈的大战。BERT 的 MLM 让「填空」一时风光无两,GPT 系列用 CLM 步步推进,T5 试图统一一切,ELECTRA 用判别式重新定义训练效率,最终 Decoder-only + CLM 大获全胜。这场胜利的根本原因不是 GPT 比 BERT 「更聪明」——它们的智能水平很大程度上是由参数和数据决定的——而是两种范式对「语言是什么」的世界观差异:BERT 认为语言是「填空题」,GPT 认为语言是「续写题」,最终我们用了 GPT 的视角。
读完这章你能:
- 解释 MLM、CLM、Span Corruption、RTD、PLM 五种预训练范式各自怎么训练;
- 计算每种范式的「学习信号密度」——为什么 CLM 比 MLM 高 7 倍;
- 理解 BERT 输给 GPT 的根本原因(不是性能,而是 Scaling 友好度);
- 把 RLHF / DPO / Instruction Tuning 等后训练范式纳入完整的训练 pipeline;
- 在面对一个新任务时判断哪种预训练范式更合适。
7.1 预训练是为了让模型「读完互联网」
预训练(pre-training)这个词的意义需要先讲清楚。
机器学习里训练模型有两类范式:
- 监督学习:用人工标注的数据(输入 → 输出)训练。比如给模型 10 万张「猫的照片 + 标签 cat」,让它学会识别猫。
- 自监督学习:用没有人工标注的原始数据,但从数据本身构造出训练信号。比如给模型一段文字,挖掉一个词,让它预测这个词——「答案」是被挖掉的那个词,不需要人工标注。
预训练绝大多数时候是自监督的。我们把维基百科、Common Crawl、GitHub 代码、各种书籍语料、论文等几十 TB 的原始文本扔进去,让模型自监督地从中学习语言规律——这就是「让模型读完互联网」。
为什么自监督?因为人工标注的数据永远不够。GPT-3 训练用了大约 0.5 万亿 token,Llama-3 用了 15 万亿 token——这个量级的人工标注是不可能的。但「自监督地预测下一个词」可以无限取数据:每一段文本本身就提供了无数个「(前 i-1 个词 → 第 i 个词)」的训练样本。
预训练目标的设计,决定了「自监督信号怎么从原始文本里抽出来」——不同的设计抽出不同的信号,模型学到不同的能力。
flowchart LR RAW[原始文本<br/>互联网/书籍/代码<br/>15T tokens] --> OBJ[预训练目标<br/>把文本转成<br/>训练样本] OBJ --> MLM[MLM: 挖空 → 填空] OBJ --> CLM[CLM: 切左右 → 续写] OBJ --> SPAN[Span Corruption:<br/>挖整段 → 恢复] OBJ --> RTD[RTD: 替换 token<br/>→ 判断真伪] MLM & CLM & SPAN & RTD --> MODEL[训练完的模型]
每一种「目标」都是一种「从无监督文本里榨学习信号的方法」。下面我们逐个看。
7.2 MLM:BERT 的填空范式
MLM(Masked Language Modeling,掩码语言建模)是 BERT 的核心预训练目标,2018 年由 Devlin 等人提出。
怎么做
输入一段文本,随机选 15% 的 token 来「mask」。处理这 15% 的策略是:
- 80% 的概率替换成
[MASK]特殊 token - 10% 的概率替换成一个随机 token
- 10% 的概率保持原样不变
模型的目标是预测被 mask 位置的原始 token。损失函数是被 mask 位置的交叉熵之和:
原句: "the cat sat on the mat with a book"
mask: "the cat [MASK] on the [MASK] with a book"
↑ ↑
15% 的 token 被处理
模型预测:
位置 3: sat (正确)
位置 6: mat (正确)
为什么 80/10/10?这是 BERT 论文的精心设计:
- 80% [MASK]:让模型主要学习「填空」。
- 10% 随机替换:避免模型只学到「
[MASK]这个特殊 token 后面 follow 的是真实词」这种 trivial 的关联——通过偶尔把真词换成假词,强迫模型「即使没看到[MASK],也要怀疑每个 token 是不是错了」。 - 10% 不变:避免预训练和下游任务不一致——下游任务里没有
[MASK],如果训练时全是 mask,模型在「都是真 token」的下游场景下会找不着北。
MLM 的关键优势:双向上下文
MLM 要预测 [MASK] 位置,必须同时利用左侧和右侧的上下文。这正是 Encoder-only 双向 Self-Attention 的天然用武之地(参考第 6.3 节)。
MLM 的两个先天缺陷
缺陷一:学习信号密度低。
MLM 一次只预测 15% 的 token——也就是说,给定一段长度为 1000 的文本,只有 150 个位置贡献了训练信号。剩下 850 个位置只是「背景」,没有 loss。
对比 CLM(下一节):每个位置都参与预测下一 token,信号密度是 100%。
直觉上:同样花 1 GPU·小时算前向,MLM 只学了 15% 的内容,CLM 学了 100%——CLM 的「单位算力学习效率」是 MLM 的近 7 倍。
这一点在 Scaling 视角下变得致命。当你把模型从 100M 推到 100B、把数据从 1B 推到 10T 时,每一份算力都要尽可能多地榨学习信号。MLM 的低信号密度让它在大模型规模下越来越吃亏——这是后面 BERT 输给 GPT 的核心数学原因之一。
缺陷二:pretrain-finetune gap。
预训练时输入里有 [MASK],下游 finetune 时没有 [MASK]——模型见过的训练分布和真实使用分布不一致。BERT 用 80/10/10 策略试图缓解这个问题,但缓解不等于消除。
7.3 CLM:GPT 的续写范式
CLM(Causal Language Modeling,因果语言建模)是 GPT 系列的预训练目标,从 GPT-1 一路用到 GPT-4,今天的 Llama / Mistral / DeepSeek 也都是这个目标。
怎么做
给定一段文本 ,模型按顺序预测每个位置的下一 token:
每个位置都贡献一个 loss——整段文本的每一个 token 都是训练信号。
原句: "the cat sat on the mat"
位置 1 预测 cat: P(cat | the)
位置 2 预测 sat: P(sat | the cat)
位置 3 预测 on: P(on | the cat sat)
位置 4 预测 the: P(the | the cat sat on)
位置 5 预测 mat: P(mat | the cat sat on the)
↑
每个位置都有 loss
CLM 完美匹配 Decoder-only 架构的因果掩码(第 2.10 节)——预测位置 时只能看到 的内容,正是因果 Self-Attention 的工作模式。
CLM 的核心优势
优势一:100% 学习信号密度。
每个 token 都在被预测——同样长度的文本,CLM 比 MLM 多得 6.7 倍学习信号。这意味着相同算力下 CLM 训练效率高得多。
优势二:无 pretrain-finetune gap。
CLM 训练和推理完全一致——都是「给定上下文,预测下一 token」。不需要任何特殊 token、不需要修改输入分布。
优势三:天然支持生成。
CLM 训练出的模型直接就能做自回归生成——这是它和 MLM 最根本的能力差异。MLM 预训练后要做生成需要复杂的 hack(XLM、UniLM 等),效果远不如 CLM 原生。
优势四:In-Context Learning 自然涌现。
GPT-3 之后我们意识到,规模够大的 CLM 模型会涌现出「上下文学习」能力——只看 prompt 里的几个示例就能解决新任务。这是 BERT/T5 路线极难做到的。
CLM 也有缺陷
缺陷:单向上下文。
CLM 只能用左侧上下文预测当前 token——比 MLM 的双向上下文「信息量少」。理论上 BERT 在「需要看后文才能消歧」的任务(如完形填空、阅读理解)上有优势。
但这个优势在大模型时代被吞噬了——一来 CLM 的信号密度让它能用更大模型/更多数据弥补;二来涌现的能力(zero-shot / in-context)让 CLM 在 zero-shot 场景下根本不需要 fine-tune。
flowchart LR T[一段长 1000 的文本] --> MLMP[MLM 预训练] T --> CLMP[CLM 预训练] MLMP --> M1["每段文本贡献 ~150 个 loss<br/>双向上下文<br/>不能生成<br/>有 pretrain-finetune gap"] CLMP --> C1["每段文本贡献 1000 个 loss<br/>单向上下文<br/>原生生成<br/>无 gap"] M1 --> WORST[Scaling 时<br/>边际效益快速衰减] C1 --> BEST[Scaling 时<br/>持续受益]
7.4 Span Corruption:T5 的折中
Span Corruption(片段破坏)是 T5 的预训练目标,可以看作 MLM 的扩展版。
怎么做
不像 MLM 单独 mask 散落的 token,Span Corruption mask 的是连续的多个 token(span)。每个 span 用一个 sentinel token(特殊 ID)替代,模型的目标是按顺序生成被 mask 的所有 spans。
原句: "Thank you for inviting me to your party last week."
mask: "Thank you <X> me to your party <Y> week."
target: "<X> for inviting <Y> last </s>"
↑ 模型要按顺序生成被破坏的内容
T5 默认 mask 比例 15%,平均 span 长度 3 token。被 mask 的所有 span 拼成 target,用 sentinel token 分隔。
范式特性
Span Corruption 训练目标比 MLM 复杂:模型既要「理解」(哪里该填什么)又要「生成」(按顺序产出 target)。这是为什么它需要 Encoder-Decoder 架构——Encoder 理解被破坏的输入,Decoder 自回归地恢复内容。
学习信号密度仍然受限于 mask 比例(15%),但 span 的结构性让模型学到的不只是「单个词的填空」而是「连续片段的恢复」——这对生成任务(摘要、翻译)有潜在的好处。
T5 用这个目标训出的模型在 GLUE、SuperGLUE 上接近 BERT、在 seq2seq 任务上有时超过 GPT。但综合下来,它没有跑赢 CLM——一来仍然受限于 ~15% 信号密度,二来 Encoder-Decoder 架构的工程开销在 scaling 上吃亏。
7.5 RTD:ELECTRA 的判别式范式
RTD(Replaced Token Detection,替换 token 检测)是 ELECTRA(Clark et al., 2020)的预训练目标,是一个非常巧妙的设计。
怎么做
ELECTRA 用两个网络:一个生成器(generator,小网络,类似 BERT)和一个判别器(discriminator,主模型)。
原句: "the cat sat on the mat"
生成器 (15% 位置):
把这些位置预测的 token 替换原 token:
"the cat ate on the rug"
↑ 替换为 "ate" ↑ 替换为 "rug"
判别器 (主模型) 的任务:
对每一个位置 (100% 都参与),判断它是不是「被替换过」的:
the: 原(real) cat: 原 ate: 替换(fake)
on: 原 the: 原 rug: 替换
判别器的损失是所有位置的二分类交叉熵——每个位置都贡献信号。这就解决了 MLM 的最大缺陷:100% 学习信号密度。
RTD 的优势与缺陷
优势:
- 学习信号密度 100%(每个位置都参与判别)
- 训练效率比 MLM 高 4–5 倍
- ELECTRA-base 在 GLUE 上能匹配 BERT-large 的性能,但参数只有 1/3
缺陷:
- 预训练目标是判别式(real/fake),下游任务是生成式或分类式——表征上有不匹配。
- 仍然不能做生成。
- 工程复杂——需要同时维护一个生成器和一个判别器,还要协调训练。
ELECTRA 在判别类任务上证明了「100% 信号密度」的价值,启发了后来的研究。但它本身没成主流——工程复杂度让它没法 scaling 到大模型规模。
ELECTRA 的真正意义:它向工业界证明了『100% 信号密度』是预训练效率的关键变量。这进一步强化了 CLM 路线的合理性——CLM 同样是 100% 密度,且自然得多。
7.6 PLM:XLNet 的置换尝试
PLM(Permutation Language Modeling,置换语言建模)是 XLNet(Yang et al., 2019)的目标,也是个聪明的设计。
怎么做
CLM 是「按从左到右的顺序预测 token」。PLM 把序列的顺序随机打乱,然后按打乱后的顺序做因果预测。
原序列: x_1, x_2, x_3, x_4
随机置换: x_3, x_1, x_4, x_2 (置换后的顺序)
模型按置换后的顺序做因果预测:
位置 1 预测 x_3 (基于空)
位置 2 预测 x_1 (基于 x_3)
位置 3 预测 x_4 (基于 x_3, x_1)
位置 4 预测 x_2 (基于 x_3, x_1, x_4)
每次训练用一个不同的置换。理论上,这让模型同时学到「双向上下文」(因为不同置换里 x_2 的「左侧」可能是任何其他位置)和「自回归预测」(因果结构保留)。
为什么没赢
PLM 数学上漂亮,但工程上头疼:
- 实现复杂:需要 Two-stream attention(query stream 和 content stream)才能正确处理「位置已知但内容未知」的情况。
- 训练不稳定:置换让 attention 模式高度不规则,难收敛。
- 推理不一致:训练时随机置换,推理时是正常顺序——存在分布漂移。
XLNet 在多项基准上短暂超过 BERT,但很快被 RoBERTa(更大数据训的 BERT)追上。PLM 路线之后基本没人再走。
它的价值是:告诉我们「双向 + 自回归」不是不能兼得,但工程代价太高。
7.7 范式对照与 Scaling 视角
把五种主流范式放一起对比:
| 范式 | 代表模型 | 学习信号密度 | 双向上下文 | 自然支持生成 | Scaling 友好度 |
|---|---|---|---|---|---|
| MLM | BERT | ~15% | ✓ | ✗ | 中(信号密度低) |
| CLM | GPT, Llama | 100% | ✗ | ✓ | 高 |
| Span Corruption | T5 | ~15% | ✓ | ✓(编解码) | 中(架构复杂) |
| RTD | ELECTRA | 100% | ✓ | ✗ | 中(双网络复杂) |
| PLM | XLNet | 100% | ✓ | △ | 低(实现复杂) |
Scaling 友好度这一栏是 GPT 路线最终胜出的关键。当你要把模型从 1B 推到 100B、把数据从 100B token 推到 10T token 时,所有「实现复杂、架构特殊、信号密度低」的范式都吃亏。CLM 是唯一一个「100% 信号密度 + 单一架构 + 与生成对齐」的目标——它在 Scaling 法则下边际收益最稳定。
这就是为什么 2020 年之后大模型清一色 CLM。不是 CLM 在 「智能」上更强——给定 100M 参数,它和 MLM/RTD 各有千秋——而是它在「scale 把所有问题压平」的剧本里跑得最远。
flowchart LR PARAMS[模型参数 1B] --> SCALE PARAMS2[模型参数 100B] --> SCALE PARAMS3[模型参数 1T] --> SCALE SCALE[Scaling 维度] --> CLM_END["CLM<br/>持续受益<br/>涌现能力"] SCALE --> MLM_END["MLM<br/>边际效益快速衰减<br/>无法生成限制了应用"] SCALE --> T5_END["Span Corruption<br/>架构复杂阻碍 scaling"]
7.8 BERT 输给 GPT:不是性能,是世界观
回顾 2018-2023 这五年,BERT 路线和 GPT 路线之间的对决,最终以 GPT 路线全面胜出。但这场胜利不是「GPT 在某个 benchmark 上压了 BERT 一头」——双方在判别任务上你追我赶很多年。胜利的根源在两条路线的世界观差异:
BERT 的世界观:「理解是核心,生成是次要的。把语言压缩成上下文向量、用这些向量做下游分类/检索就够了。」
GPT 的世界观:「生成是核心。能生成意味着能理解(生成正确的下一 token 必须理解上下文),而能理解未必能生成。」
这两种世界观各自合理,但和现实世界对模型的需求对齐度不一样。
人类对 AI 的需求是什么?看看 ChatGPT 之后用户实际在用什么:
- 写文章
- 写代码
- 翻译
- 总结
- 对话回答问题
- 多轮 reasoning
- Agent 规划
- ……
几乎全部是生成式任务。BERT 在这些任务上完全不可用——它的输出是「位置 i 的 token 概率分布」,不是「连贯的文本输出」。
而判别类任务(情感分类、命名实体识别)虽然在工业里也有需求,但量级和生成式比起来小得多。即使有这些需求,GPT-4 用 zero-shot 能在大部分判别任务上达到 BERT-fine-tuned 的水平——而且不需要为每个任务收集标注数据。
所以这场胜利的本质是:GPT 的世界观(生成是核心)和 AI 实际应用的需求对齐。BERT 在「窄」任务上效率高,但「窄」任务的市场远不如「通用生成」的市场。
这件事从一个特别意外的角度也在工业里得到了印证——Encoder-only 模型仍然活在嵌入领域。BGE、E5、Cohere Embed、OpenAI text-embedding-3 这些今天主流的嵌入模型,几乎全是 BERT 派生(双向 Encoder + 对比学习微调)。在「把句子压缩成定长向量」这件事上,Encoder-only 的双向理解力仍然是最优的。BERT 没有被淘汰,只是被收缩到了它真正擅长的领域。
7.9 后训练范式:从 base 到「能用」的一公里
到这里我们讲的都是预训练——从原始文本里自监督地学习。但只做完预训练的模型(叫 base model)其实不能直接用。
举个例子:你给 Llama-3-8B-base(只做了 CLM 预训练)一个 prompt:
"Q: How tall is the Eiffel Tower?"
它可能这样续写:
"Q: How tall is the Eiffel Tower?
Q: When was it built?
Q: Who designed it?
A: 330 meters (1,083 feet)..."
它把整个「问答对」当成一段文本,按统计规律续写——完全没意识到「自己应该回答而不是继续提问」。这是因为 CLM 训练没有「这是一个对话,模型应该回答」的标签。
要让模型「能用」,预训练之后还有一系列后训练(post-training)步骤。这条 pipeline 在 2022-2024 年间成熟,今天主流大模型都按这个流程训练:
flowchart TB RAW[原始文本<br/>15T tokens] --> PRE[预训练<br/>CLM 目标] PRE --> BASE[Base Model<br/>能续写但不能用] BASE --> SFT[SFT<br/>指令微调] SFT --> SFT_M[Instruction Model<br/>能听懂指令] SFT_M --> RLHF[RLHF / DPO<br/>人类偏好对齐] RLHF --> CHAT[Chat Model<br/>真正能用]
Supervised Fine-Tuning (SFT)
第一步是 SFT(监督微调):用人类编写的「指令-响应」对数据,继续在 base 模型上训练。每条数据形如:
[Instruction]: 请简要介绍一下机器学习。
[Response]: 机器学习是人工智能的一个分支... (人类写的高质量回答)
SFT 仍然用 CLM 目标——只在 Response 部分计算 loss。模型学到「当看到这种 Instruction 模板时,应该按这种风格输出 Response」。
SFT 数据量通常是几十万到几百万条人工撰写或精选的高质量样例。
RLHF: 人类偏好的反馈
SFT 之后模型「能听懂指令」,但还不够「好」——它的回答可能罗嗦、可能缺礼貌、可能在敏感话题上越线。要进一步对齐人类偏好,需要 RLHF(Reinforcement Learning from Human Feedback):
- 采集人类偏好数据:给同一个 prompt,让 SFT 模型生成多个候选回答;人类标注「我更喜欢哪个」(排序或对比)。
- 训练奖励模型:在偏好数据上训练一个 reward model(通常是另一个 Transformer 加一个分数头),输出「这条回答的人类喜爱度」。
- 用 RL 优化:把 SFT 模型当成 RL agent,把奖励模型当成 environment 的 reward,用 PPO 等算法优化模型让 reward 最大化。
RLHF 是 ChatGPT 和后续所有顶级聊天模型的关键步骤。Anthropic 的 Claude、OpenAI 的 GPT-4 都做了大规模的 RLHF。
DPO 与新一代对齐方法
RLHF 工程复杂——要训奖励模型、要做 PPO(容易不稳定)。DPO(Direct Preference Optimization, Rafailov et al., 2023)提出了一种简化版:不训奖励模型,直接用偏好数据做监督学习。
数学上 DPO 把 RLHF 的 RL 优化转化成一个对比损失:
其中 是被偏好的回答, 是被拒绝的回答。模型直接学习「让 的概率比 高」。
DPO 工程简单得多(一个标准的 SFT 训练流程就能跑),效果在很多任务上接近 RLHF。今天大量开源模型(Llama-3-Instruct、Mistral-Instruct)实际用的是 DPO 或它的变种(IPO、KTO、ORPO)。
Constitutional AI 与 RLAIF
Anthropic 提出的 Constitutional AI(CAI)走得更远:让 AI 自己生成偏好数据。具体做法是用一组「宪法原则」(constitution)——比如「回答应该有帮助、无害、真诚」——让模型自己评判和修改自己的回答。
这条路线把人工偏好标注成本压到很低,是 Claude 系列的核心训练技术。现在被泛化为 RLAIF(RL from AI Feedback)。
完整的训练 pipeline
把所有阶段放一起:
| 阶段 | 目标 | 数据 | 数据量 | 算力占比 |
|---|---|---|---|---|
| Pretraining | 学习语言规律 | Web/书籍/代码 | 1T-15T tokens | 95%+ |
| SFT | 学会听指令 | 高质量指令-响应对 | 数十万-数百万条 | 1-3% |
| RLHF / DPO | 对齐人类偏好 | 人类偏好对比对 | 数万-数十万条 | 1-3% |
| RLAIF / CAI | 进一步对齐 | AI 自评数据 | 大量 | 可选 |
预训练算力占绝大头——今天主流大模型(Llama 3、DeepSeek V3)一次预训练要消耗几千万美元的算力,后训练只是其中很小一部分。但「base 到 chat」的这一公里是用户感知质量的核心——同一个 base 模型,后训练做得好和不好可能差出 30% 的胜率。
7.10 一些特别重要的工程经验
经验一:base 模型不需要 finetune 也能很强。GPT-3 之后我们意识到,规模够大的 base 模型用 zero-shot prompt 就能在很多任务上接近 finetuned 模型。这件事从根本上改变了「为每个任务收集标注数据」的传统机器学习范式。
经验二:post-training 不能修补 base 模型的根本能力。如果 base 模型没在预训练里见过某个领域(比如法律、医学),后训练加再多数据也补不上来。预训练阶段的数据覆盖度决定了模型的能力上限——这就是为什么 Llama 3 把训练数据扩到 15T tokens、为什么所有大模型都拼命扫数据。
经验三:SFT 数据质量远重要于数量。LIMA(Zhou et al., 2023)证明用 1000 条精心挑选的高质量 SFT 数据,能训出和用 50000 条普通数据相当的模型。RLHF / DPO 数据同理——人类偏好数据的质量是关键。
经验四:long context 是 post-training 阶段才能稳定的。预训练时通常用较短上下文(如 4K 或 8K)训练,然后在 SFT 阶段用长上下文样本(最高 1M)做继续训练。这是 GPT-4 / Claude 长上下文模型的标准做法。
经验五:能力涌现需要规模。In-context learning、reasoning、tool use 这些 GPT-3 之后的关键能力都是「规模够大才出现」的——10B 模型上几乎没有,100B 模型上明显,1T 模型上更强。这个现象(emergent abilities)是 Scaling 信仰的核心证据。
本章小结
- 预训练目标决定模型从原始文本学到什么——MLM 学填空、CLM 学续写、Span Corruption 学恢复、RTD 学判别真伪、PLM 学置换预测。
- MLM 和 CLM 的关键差异是学习信号密度——MLM ~15%、CLM 100%。这个差距在 Scaling 时被放大成 GPT 全面碾压 BERT 的根本原因。
- CLM 还有四个独立优势:100% 信号密度、无 pretrain-finetune gap、原生支持生成、ICL 自然涌现。
- BERT 输给 GPT 不是性能问题,是世界观问题——AI 应用的真实需求 95% 是生成式的,BERT 的「填空」世界观天生不对齐。
- Encoder-only 没死,活在嵌入领域——BGE / E5 / OpenAI Embed 等都是 BERT 派生的双向 Encoder,对比学习微调而成。
- 完整训练 pipeline = Pretraining + SFT + RLHF/DPO——预训练占 95% 算力但只产出 base,后训练用很少算力把 base 调成「能用」。
- DPO / Constitutional AI 在简化 RLHF 的工程复杂度——今天开源模型主流走 DPO 路线。
- 能力涌现需要规模——in-context learning、reasoning、tool use 都不是小模型能学出来的,必须 scaling 到 100B 量级。
到这里第三部分完结。我们已经讲清楚了三种架构和七种训练范式——读者应该建立起了 Transformer 设计空间的全景。下一部分(第 8、9、10 章)从纸面走到代码——你将动手用 PyTorch 实现一个 Self-Attention、训练一个能写古诗的 mini-GPT、搭一个生产级的 Tokenizer。
延伸阅读
- Devlin et al., BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, NAACL 2019——MLM 奠基。
- Radford et al., Improving Language Understanding by Generative Pre-Training, 2018; Language Models are Unsupervised Multitask Learners, 2019; Language Models are Few-Shot Learners, NeurIPS 2020——GPT 三部曲。
- Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020——T5 / Span Corruption。
- Clark et al., ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators, ICLR 2020——RTD。
- Yang et al., XLNet: Generalized Autoregressive Pretraining for Language Understanding, NeurIPS 2019——PLM。
- Ouyang et al., Training Language Models to Follow Instructions with Human Feedback, NeurIPS 2022——InstructGPT / RLHF 经典论文。
- Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, NeurIPS 2023——DPO。
- Bai et al., Constitutional AI: Harmlessness from AI Feedback, 2022——Constitutional AI / Anthropic。
- Zhou et al., LIMA: Less Is More for Alignment, NeurIPS 2023——SFT 数据质量大于数量。