2026年10月8日
09 预训练:从海量文本中学习
预训练是 LLM 训练的第一个阶段,也是最昂贵、最耗时的阶段。用一句话概括:拿海量文本,让一个参数全是随机数的模型,反复练习"预测下一个 token",直到它的预测足够准。 模型绝大部分的知识和能力,都是在这个阶段获得的。
训练用什么数据
预训练数据的规模通常以万亿 token 计,来源大致包括:网页(经过大量筛选的互联网文本)、书籍、学术论文、百科、代码仓库,以及各种语言的文本。
这些数据不是直接拿来用的,要经过大量清洗:去除重复内容、过滤低质量和有害文本、剔除个人隐私信息等。业界的普遍经验是,数据质量和配比对模型能力的影响,不亚于参数量。 比如加入大量代码数据,被普遍认为能提升模型的逻辑推理能力;中文数据的占比,则直接影响模型的中文水平和分词器的中文效率。
为什么不需要人工标注
这是预训练最巧妙的地方。回想吴恩达课程里的监督学习:房价预测需要"面积—房价"这样成对的标注数据,标注往往是最昂贵的环节。
而"预测下一个 token"这个任务,答案就藏在文本本身里。对于"今天天气很热"这句话,前面的"今天天气很"就是输入,"热"就是标准答案,不需要任何人去标注。所以任何文本都可以直接拿来训练,这才使得用万亿 token 训练成为可能。这种方式叫自监督学习。
训练过程
具体做法就是我们讨论过的那套:
- 取一批文本,送进模型。
- 模型在每个位置同时预测下一个 token(得益于因果遮罩,一段 1000 token 的文本一次就提供了 999 道题)。
- 看模型给正确答案分配了多少概率,计算交叉熵损失。
- 反向传播算出每个参数的梯度,用梯度下降(通常是 Adam 优化器)更新参数。
- 换下一批文本,重复。
这个循环要执行数十万甚至上百万次,通常动用数千到上万块 GPU,持续数周到数月,成本可达数千万甚至上亿美元。这也是为什么只有少数公司能从零训练前沿模型,大多数开发者是在现成模型的基础上使用或微调。
一个有意思的细节:大模型预训练时,大部分数据通常只被看一遍左右。这和吴恩达课程里同一份数据反复训练很多轮的做法不同。原因之一是数据足够多,另一个原因正是为了避免过拟合,也就是逐字背下训练文本。
预训练的产物:基础模型
预训练结束后得到的模型叫基础模型(base model)。它的能力很强,但行为和你熟悉的聊天助手完全不同:它只会续写,不会回答。
比如你输入"法国的首都是哪里?",基础模型可能接着写出"德国的首都是哪里?意大利的首都是哪里?",因为在它见过的文本中,这种问句常常出现在一份问题列表里。它并没有"回答问题"的概念,只是在生成最可能的续写。
所以叫"预"训练:它是在为后面的训练打基础。后训练阶段再教模型以助手的方式回应、遵守 system prompt 等,这就是 10 篇的内容。可以这样理解两者的分工:预训练决定模型知道什么、能做到什么,后训练决定它怎么表现出来。
它解释了哪些现象
知识截止日期。 模型的知识来自预训练数据,数据收集到某个时间点为止,之后发生的事情模型就不知道。这也是为什么 agent 需要搜索等工具来获取最新信息。
幻觉。 知识以参数的形式"压缩"在模型里,而不是逐条存储。训练数据中出现次数多的知识记得牢,冷门知识则模糊不清,模型就可能生成看似合理但错误的内容。
冷门领域表现较弱。 训练数据中占比少的语言、专业领域或私有知识,模型掌握得不好。这正是 RAG 和微调要解决的问题:前者把知识放进 context,后者在特定数据上继续训练。