概览
模型训练阶段分为预训练(pre-traing)和后训练(post-training)。预训练的产物是一个基础模型,这个基础模型可以理解为词元自动补全器。只有经过后期训练阶段(Post-training stage),特别是监督式微调(Supervised Fine-Tuning, SFT),基础模型才会学习如何扮演“助手”的角色,去回答问题、遵循指令并与人类进行多轮对话。
预训练是什么?
预训练(Pre-training)的核心目的,是在通用、海量的无标签数据上,让模型学习到关于世界的基础知识、语言的底层规律和初步的推理能力。
什么是无标签数据?
在训练大模型时,预训练阶段的无标签数据是指没有人工标注、分类或提供标准答案的原始数据。具体来说:
- 原始文本数据:从互联网上收集的网页内容、书籍、文章、代码等,这些数据本身就是文本,没有额外的标签说明这段文本属于什么类别或应该产生什么输出。
- 自然语言序列:模型学习的是文本的连续性模式,比如:
- “今天天气很好” → 下一个词可能是”适合”
- “法国的首都是” → 下一个词可能是”巴黎”
虽然数据本身没有标签,但模型通过下一步词元预测任务来学习:
- 输入:前面的词序列
- 输出:预测下一个最可能的词
- 监督信号:文本中下一个词本身就是”答案” 这种无监督的预训练方式可以让模型在没有明确指导的情况下学习到丰富的语言知识和推理能力。
什么是标注数据(有标签数据)
与之相对应的,有标签数据指的是包含明确输入-输出对应关系的数据,通常被称之为”监督数据”或”标注数据”。其中每个输入都有对应的标准答案或期望输出。
- 问答对数据
- 输入:问题
- 标签:标准答案
例子:
- 输入:“法国的首都是哪里?”
- 标签:“巴黎”
- 指令-回答数据
- 输入:用户指令
- 标签:期望的回答
例子:
- 输入:“请解释什么是人工智能”
- 标签:“人工智能是计算机科学的一个分支…”
- 分类标注数据
- 输入:文本内容
- 标签:分类类别
例子:
- 输入:“这部电影很棒”
- 标签:“正面情感”
- 翻译对数据
- 输入:源语言文本
- 标签:目标语言文本
例子:
- 输入:“Hello”
- 标签:“你好”
- 代码-注释数据
- 输入:代码片段
- 标签:功能描述
例子:
- 输入:def add(a, b): return a + b
- 标签:“定义一个加法函数”
| 特征 | 标注数据 | 无标签数据 |
|---|---|---|
| 数据来源 | 人工标注、专家制作 | 原始文本、网页内容 |
| 获取成本 | 高(需要人工标注) | 低(直接收集) |
| 数据量 | 相对较少 | 海量 |
| 训练目标 | 特定任务优化 | 通用知识学习 |
| 使用阶段 | 后训练(微调) | 预训练 |
经过预训练的模型学习和输出什么?
通过大量的自然文本,模型可以学习到:
- 语法规则:就像我们学语言时需要学习的主谓宾结构、语法结构模式(比如各种从句)、标点符号的使用、时态和语态等。
- 事实性知识:关于世界的客观事实和真实信息。比如地理、历史、物理、化学和社会常识等涵盖人类知识的各个领域。这种事实性知识的学习让大模型能够回答关于世界的各种问题,成为有用的信息助手。
- 常识推理:比如理解事物之间的因果关系(“下雨了,所以地面会湿”)、时间和空间的概念和推理(鸟在天上飞、鱼在水里游)、社会常识推理、逻辑推理能力、常识性判断(太阳从东边升起、一年有四季)。
- 语言模式:语言使用的习惯、风格和约定俗成的表达方式。
这个阶段模型的输出内容大致可以分为三种:
- 完全无规律的输出:你问它“2+2 是多少?”,它可能会将这个问题视为一个文本前缀,然后像自动补全互联网文本一样,继续生成一段哲学讨论或随机的文本,而不是直接回答“4”。
- 完全按照训练数据输出:比如问它苹果是什么,它会回答训练数据中的苹果的定义。
- 找到事物之间的逻辑和规律:由A=B、B=C推导出A=C
为什么要进行预训练?
- 获取世界知识和语言规律
- 海量数据注入: 互联网上有近乎无穷无尽的文本和代码数据(维基百科、书籍、网页、GitHub 代码等)。预训练利用这些数据,让模型学习语法、词汇、事实性知识(比如“法国的首都是巴黎”)、常识(比如“水是湿的”)、不同文化背景、不同语言风格等。
- 模式识别: 预训练的目标是“词元自动补全器”,其技术术语是下一步词元预测。这个看似简单的任务,却迫使模型为了能更准确地预测下一个词,必须去理解上下文的深层逻辑。
- 例如: 为了补全句子 “亚伯拉罕·林肯是美国第16任总统,他出生在____”,模型不仅要记住林肯的生平,还要理解“出生在”后面应该跟一个地点。这种压力迫使它学习到了事实、语法和实体关系。
- 效率和可扩展性
- 无监督学习的优势: 预训练使用的数据绝大部分是无标签的。我们不需要人工告诉模型“这句话是对的”或者“这个问题该这么答”。模型自己从文本的连续性中寻找监督信号(下一个词就是答案)。这极大地降低了数据标注的成本。
- 为下游任务奠定基础: 如果没有预训练,我们想让一个模型执行翻译任务,就需要从零开始,用数百万个“中文-英文”配对句子来训练它。想让它写代码,又要用海量的代码数据从零训练。这极其低效。而预训练好的基础模型已经具备了语言和逻辑的底子,我们只需要用少量、高质量的特定任务数据进行微调(Fine-Tuning),就能让它迅速掌握新技能,这就是“后训练”的一部分。
- 涌现能力 当模型的规模(参数量)和训练数据的量级达到某个阈值后,一些没有被明确训练过的复杂能力会“自发地”出现。 通俗来讲就是举一反三的能力。
A=B, B=C -> A=C就是一个典型的例子。预训练中并没有专门的逻辑三段论教材,但模型通过阅读大量描述各种关系的文本,自己学会了这种传递性的推理能力。- 其他涌现能力还包括:上下文学习(你给它几个例子,它就能模仿你的例子去完成新任务)、数学计算、代码生成、思维链(Chain-of-Thought)推理等。这些都不是直接教的,而是模型为了更好地预测下一个词而“悟”出来的副产品。
小结
预训练得到的基础模型像一个刚刚读完了整个互联网图书馆的“博学书呆子”。 你问他“法国的首都是哪里”,他能立刻告诉你“巴黎”,因为书上就是这么写的。它学习了“鸟会飞”和“麻雀是鸟”,就能推断出“麻雀会飞”,即使训练数据里可能没有直接说过“麻雀会飞”这句话。 它知识渊博,阅读了海量的书籍、文章、网页,所以它知道大量的知识,也懂得语法和语言的规律。但它不善交际,它只是被动地吸收了知识,还不知道如何与人进行有来有回的对话,也不知道如何扮演一个“助手”的角色来帮助别人。
它只是一个庞大的知识库,这是模型训练的第一步。 下一步是教给模型如何遵循人类的指令,告诉模型什么样的回答是“好的”(有用的、无害的、诚实的),从而塑造它的价值观和行为模式。这是是模型训练中第二个阶段————后训练中需要解决的事。