请详细说明下面训练阶段的差别: Supervised Fine-Tuning、Reward Modeling、PPO、DPO、KTO、Pre-Training
目录
🔧 一、训练阶段总体流程(从底层到上层)
🧠 1. Pre-Training(预训练)
📌 目的:
📚 数据:
⚙️ 方法:
💡 举个例子:
🧑🏫 2. Supervised Fine-Tuning(SFT)监督微调
📌 目的:
📚 数据:
⚙️ 方法:
💡 举个例子:
🏅 3. Reward Modeling(奖励建模)
📌 目的:
📚 数据:
⚙️ 方法:
💡 举个例子:
🤖 4. PPO(Proximal Policy Optimization)强化学习优化
📌 目的:
⚙️ 方法:
📚 PPO 是 RLHF 的关键步骤:
RLHF = SFT + RM + PPO
🆚 5. DPO(Direct Preference Optimization)直接偏好优化
📌 目的:
⚙️ 方法:
💡 举个例子:
✅ 优点:
🧪 6. KTO(Kullback-Leibler Preference Tuning)
📌 目的:
⚙️ 方法:
✅ 优点:
🔚 总结对比表
当然可以!这些训练阶段都是大语言模型(LLM)训练流程中的关键组成部分。我们可以将它们分为三类:
🔧 一、训练阶段总体流程(从底层到上层)
阶段 | 作用 | 举例 |
---|---|---|
1️⃣ Pre-Training | 让模型学语言、知识、世界常识 | GPT-3、BERT |
2️⃣ Supervised Fine-Tuning(SFT) | 教模型如何完成任务或对话 | ChatGPT的第一阶段 |
3️⃣ Reward Modeling(RM) | 学习人类偏好,打分响应好坏 | 基于人工标注 |
4️⃣ PPO / DPO / KTO | 用强化学习/偏好优化方法强化模型 | ChatGPT的第二阶段 |
🧠 1. Pre-Training(预训练)
📌 目的:
让模型学会语言本身,了解各种句式、知识点、世界常识。
📚 数据:
-
大规模无标注文本(网页、书籍、论文、维基百科等)
⚙️ 方法:
-
自监督学习(Masked LM 或 Causal LM)
💡 举个例子:
训练时给模型:
Input: "The capital of France is" Target: "Paris"
模型在这个阶段学习如何“预测下一个词”。
🧑🏫 2. Supervised Fine-Tuning(SFT)监督微调
📌 目的:
让模型“听得懂人话”,学会具体任务(如问答、总结、对话等)。
📚 数据:
-
人类标注的
<prompt, response>
对 -
格式通常是 instruction/instruction+input/output,或 role-based conversation
⚙️ 方法:
-
传统监督学习(CrossEntropy Loss)
💡 举个例子:
json
{ "instruction": "帮我写一封请假邮件", "input": "", "output": "尊敬的领导,我因身体不适请假一天..." }
🏅 3. Reward Modeling(奖励建模)
📌 目的:
让模型学会区分好回答和坏回答
📚 数据:
-
多个回答由人类进行好坏排序(如 A 比 B 更好)
⚙️ 方法:
-
输入:同一个 prompt 和多个回答 A/B/C
-
人类标注回答好坏 → 转换为二分类模型,输出 reward 分数
💡 举个例子:
json
{ "prompt": "如何减肥?", "responses": ["每天喝水", "控制饮食+运动"], "preference": "response_2" }
训练出一个 Reward Model
,可以打分哪个回答更好。
🤖 4. PPO(Proximal Policy Optimization)强化学习优化
📌 目的:
在 SFT
模型基础上,用 Reward Model 来指导模型产生更优回答
⚙️ 方法:
-
模型生成多个回答 → Reward Model 打分 → 计算 reward
-
用 PPO 算法优化 LLM,让它学会高分回答
📚 PPO 是 RLHF 的关键步骤:
RLHF = SFT + RM + PPO
🆚 5. DPO(Direct Preference Optimization)直接偏好优化
📌 目的:
用人类偏好数据训练模型,但跳过 Reward Model 和 PPO
⚙️ 方法:
-
输入一对 prompt + (preferred_answer, rejected_answer)
-
模型直接优化让 preferred 的概率更大
💡 举个例子:
DPO 直接使用偏好对训练:
json
{ "prompt": "怎么处理职场矛盾?", "chosen": "倾听对方,寻找共识。", "rejected": "直接对骂。" }
训练目标是:
less
P(chosen | prompt) > P(rejected | prompt)
✅ 优点:
-
比 PPO 简单很多
-
更稳定、更快、资源占用低
🧪 6. KTO(Kullback-Leibler Preference Tuning)
📌 目的:
另一种“无 reward model 的偏好优化”方法,和 DPO 类似,但更加稳定
⚙️ 方法:
-
也是用
preferred vs rejected
对 -
但优化的是 KL 散度 差异,使模型回答分布更加接近偏好方向
✅ 优点:
-
比 DPO 更稳
-
不需要调复杂的超参数(不像 PPO)
🔚 总结对比表
阶段 | 是否需要标注数据 | 是否训练新模型 | 是否需 reward model | 优点 |
---|---|---|---|---|
Pre-Training | 否(大数据) | ✅ | ❌ | 学习语言本身 |
SFT | ✅(人工答案) | ✅ | ❌ | 教模型完成任务 |
Reward Modeling | ✅(排序) | ✅ | ✅ | 评估回答好坏 |
PPO | ✅(排序) | ✅ | ✅ | RLHF核心步骤 |
DPO | ✅(偏好对) | ✅ | ❌ | 简洁高效 |
KTO | ✅(偏好对) | ✅ | ❌ | 稳定度更高 |