有些人在聊起大模型微调的时候,很容易被一些概念弄晕:很多词听起来像一回事,比如预训练、后训练、指令微调、SFT、RLHF。有些概念确实很接近,但其实并不是同一回事。
下面逐步弄清每个概念是干什么的。

1. 预训练和后训练是怎么回事

预训练和后训练属于两个大的训练阶段。预训练让模型“学会语言和世界知识”,后训练让模型“学会像一个有用的助手那样回答”。如下图:
在这里插入图片描述

1.1 预训练

预训练就是:让模型学习自然语言本身。

一般用于预训练的数据数据量很大,数据规模一般达到TB。通常来自网页、书籍、代码、论文、论坛等。

训练目标通常很简单:给前面的词,预测下一个词。预训练的本质其实就是:预测下一个token (next token prediction)。

模型在这个过程中学到很多东西:语言结构、事实知识、推理模式、代码语法、常见表达方式,甚至一些世界规律。经过预训练之后,得到了基座模型(base model)。

不过,预训练出来的模型只能进行文字续写,并不能聊天,因为它并没有学习过“回答问题”。

1.2 后训练

后训练是在预训练的基座模型基础上,继续做的训练,让模型更符合人类的使用习惯。

后训练不是一个单独方法,而是一组训练阶段的总称。主要包括指令微调、SFT、RLHF、DPO等。

简单说就是,预训练的目的是学知识,后训练的目的是学会回答问题。

2. 指令微调、SFT、RLHF、DPO等概念

2.1 指令微调

指令微调,也叫 instruction tuning,重点是让模型适应“用户发指令,模型给回答”这种交互方式。

比如训练数据有如下的格式:

{
    "instruction":"介绍熊猫",
    "input":"",
    "output":"熊猫是一种……"
}

这些数据和普通文本不一样。普通文本只是自然流动的内容,而指令微调数据明确包含“任务”和“回答”。

指令微调,本质上是教模型执行指令。经过指令微调后,模型会更像 ChatGPT 这类助手:模型就可以进行翻译、总结、写代码等。

2.2 SFT:最常见的有监督微调

SFT(Supervised Fine-Tuning),是有监督微调。

这是大家容易混淆的地方,很多人以为 SFT = 指令微调 (instruction Tuning),这样理解不完全对。

它的核心很直接:给模型一批高质量的输入输出样本,让模型模仿这些标准答案。它的训练数据通常有如下格式:

User:

什么是Transformer?

Assistant:

Transformer是一种……

所以,Instruction Tuning 很多时候就是使用 Instruction Dataset 做SFT。所以很多时候会把Instruction Tuning 叫做SFT。有时候会混用。

SFT 和指令微调关系很近,但不是完全等同。

SFT 是训练方法,指令微调是训练目标或数据形态。 很多时候大家说“做指令微调”,实际落地就是用 SFT 来做。也就是说,指令微调通常是 SFT 的一种典型应用。

2.3 RLHF:让模型更符合人的偏好

RLHF(Reinforcement Learning from Human Feedback),基于人类反馈的强化学习。

SFT 能让模型模仿标准答案,但它有个问题:很多问题并没有唯一标准答案。

比如写一首诗,并没有标准答案,哪个答案最好。

这时就需要“偏好数据”。

人类标注员会比较两个回答,判断哪个更好。然后模型通过这些偏好信号继续优化。传统 RLHF 会训练一个奖励模型,再用强化学习方法调整大模型。

后来也出现了 DPO 等更直接的偏好优化方法,不一定显式训练奖励模型。

所以,RLHF 主要不是教模型学知识,而是教模型学 人喜欢什么回答。

2.4 DPO

DPO 全称:Direct Preference Optimization,一般翻译为:直接偏好优化。

DPO 可以总结为一句话:不需要训练 Reward Model,也不要做强化学习,直接利用偏好数据训练模型。

它的出现主要是因为RLHF成本太高,需要大量人工标注,所以后来出现了DPO。

DPO直接利用 Preference Dataset 进行训练,不用强化学习,甚至更稳定。

目前很多国产模型主要采用:SFT -> DPO, 而不是RLHF。相比于RLHF, DPO 训练更快,更稳定,实现也更简单。

最后总结

简单理解的话,可以总结如下:

预训练负责打基础,后训练负责调行为。

SFT 是后训练里最常用的监督学习方法,指令微调通常就是用 SFT 教模型听指令。RLHF 则是在此基础上,用人类偏好继续修正模型,让它更有帮助、更安全,也更像一个真正能协作的助手。DPO不需要训练 Reward Model,也不要做强化学习,直接利用偏好数据训练模型。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐