模型是怎么训练出来的
三个阶段
训练一个像 ChatGPT 这样的模型,不是一步到位的,而是分三个阶段:
- Pre-training(预训练):学习语言本身
- Supervised Fine-tuning(SFT):学习如何对话
- RLHF:学习人类的偏好
每个阶段解决不同的问题,使用不同的数据。理解这条流水线,你就能理解模型为什么擅长某些事、不擅长另一些事。
第一阶段:Pre-training
这是最耗资源的阶段。模型在海量文本上学习一件事:预测下一个 token。
训练数据的来源:
- 互联网网页(Common Crawl 等)
- 书籍、论文、维基百科
- 代码仓库(GitHub 等)
- 其他公开文本数据
规模有多大?GPT-3 的训练数据大约有 3000 亿 token,后续模型更大。训练过程需要数千张 GPU 运行数周到数月,成本动辄数百万到上亿美元。
Pre-training 之后,你得到的是一个 base model(基座模型)。它学会了语言、知识和推理模式,但它不会"对话"——如果你给它一个问题,它可能会接着生成更多问题,而不是回答你。
第二阶段:Supervised Fine-tuning(SFT)
为了让 base model 变成一个好的聊天助手,需要用人工标注的对话数据进行微调。
这些数据长这样:
用户:解释一下什么是递归
助手:递归是一种编程技巧,指函数在执行过程中调用自身...
标注员写出高质量的回答,模型学习这种"问答"模式。经过 SFT,模型开始能够理解指令、给出结构化的回答。
SFT 使用的数据量远小于 Pre-training(通常是几万到几十万条对话),但它根本性地改变了模型的行为模式。
第三阶段:RLHF
RLHF(Reinforcement Learning from Human Feedback,基于人类反馈的强化学习)是让模型变"好用"的关键一步。
流程大致是:
- 让模型对同一个问题生成多个回答
- 人类标注员对这些回答排序(哪个更好)
- 用排序数据训练一个"奖励模型"(reward model)——它学会预测人类会喜欢什么样的回答
- 用强化学习优化原模型,让它生成奖励模型打分更高的回答
RLHF 教会模型:
- 安全性:拒绝有害请求
- 有用性:给出详细、有组织的回答
- 诚实性:在不确定时表达不确定
这就是为什么 ChatGPT 和 Claude 会说"我不确定"或者拒绝某些请求——这些行为是 RLHF 训练出来的。
训练数据的截止日期
Pre-training 使用的是某个时间点之前的数据,这就是所谓的 知识截止日期(knowledge cutoff)。
- 模型不知道截止日期之后发生的事
- 它无法自动更新知识
- 这是 RAG(检索增强生成)等技术存在的原因之一——给模型提供实时信息
当模型回答关于近期事件的问题时表现不好,往往不是因为"笨",而是因为训练数据里没有这些信息。
实际意义
- Base model ≠ Chat model。你调用 API 时用的通常是经过 SFT + RLHF 的版本。有些 API 也提供 base model 访问,行为会很不同。
- 模型的知识有时间边界。不要期望它知道最新信息,需要实时数据就用 RAG。
- 模型的"性格"是训练出来的。它的谨慎、礼貌、拒绝,都是 RLHF 的结果,不是某种"意识"。
- 训练数据决定能力上限。如果你的使用场景涉及非常专业或小众的领域,模型可能表现不佳——因为训练数据中这类内容很少。
- Fine-tuning 是你可以参与的环节。在后续的 Fine-tuning 章节,你会学习如何用自己的数据微调模型。