ChatGPT大模型训练技术RLHF——从GPT-3到ChatGPT的核心秘密
ChatGPT为什么能如此"懂你"?它不仅仅是GPT-3的简单升级,背后隐藏着大模型训练技术的划时代变革——RLHF(基于人类反馈的强化学习)。今天我们就来全面拆解这项让大模型真正"对齐"人类价值观的核心技术。
一、ChatGPT大模型训练的三大核心阶段
从GPT-3到ChatGPT,大模型的训练经历了三个关键阶段:[pdf_3]
|
|
|
|
|---|---|---|
| 阶段一 |
|
|
| 阶段二 |
|
|
| 阶段三 |
|
|
从GPT-1到ChatGPT的技术演进
|
|
|
|
|---|---|---|
|
|
GPT-1 |
|
|
|
GPT-2 |
|
|
|
GPT-3 |
|
|
|
Codex(+code) |
|
|
|
GPT-3.5 |
|
|
|
+instruction |
|
|
|
+RLHF |
|
|
|
+chat |
|
|
|
GPT-4 |
|
GPT-3.5系列演进路径:
★code-davinci-002 → +instruction → text-davinci-002 → +RLHF → text-davinci-003 → +chat → gpt-3.5-turbo (ChatGPT)[pdf_3]
二、阶段一:万亿级Token预训练语言模型
预训练目标
在海量无标注文本上进行下一个单词预测(Next-token prediction),输出基础模型(Base Model / Foundation Model)。[pdf_3]
语料库来源
主要来自公开可获取的语料库,如 CommonCrawl、RefinedWeb、ThePile 等。[pdf_3]
GPT-3 数据构成
|
|
|
|
|
|---|---|---|---|
|
|
|
60% |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
关键观察: Common Crawl虽然数据量最大,但训练轮数仅0.44;而Wikipedia虽然仅占3%权重,但被重复训练了3.4轮。这说明不同来源的数据质量差异巨大,需要精心配比。[pdf_3]
三、阶段二:有监督指令微调(SFT)
核心目标
通过高质量的人类标注指令-回复对,让预训练模型学会"听懂指令"并生成高质量的回复。[pdf_3]
InstructGPT的Prompt类型及比例
OpenAI的研究人员确定了9种Prompt类型及其分布:[pdf_3]
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
常用开源SFT数据集规模
|
|
|
|
|---|---|---|
| Llama2 |
|
|
| InstructGPT |
|
|
| Alpaca |
|
52K |
| Vicuna |
|
|
| Dolly |
|
|
| OpenAssistant |
|
|
| Claude |
|
|
| WizardLM |
|
624K |
| LIMA |
|
仅1K |
一个有趣的发现: LIMA仅用1000条高质量样本就能达到不错的微调效果,说明数据质量比数量更重要![pdf_3]
SFT数据示例
示例1:写诗任务
instruction: "Write a limerick about a pelican."
output: "There once was a pelican so fine,
His beak was as colorful as sunshine,
He would fish all day,
In a very unique way,
This pelican was truly divine!"
示例2:找不同任务
instruction: "Identify the odd one out from the group."
input: "Carrot, Apple, Banana, Grape"
output: "Carrot"
```[pdf_3]
---
## 四、阶段三:RLHF(基于人类反馈的强化学习)
这是ChatGPT最核心的技术突破。RLHF分为三个子步骤:[pdf_3]
### 步骤1:SFT微调预训练语言模型
先收集一个提示词集合,要求标注人员写出高质量的回复,然后使用该数据集以监督的方式微调预训练的基础模型。[pdf_3]
### 步骤2:训练奖励模型(Reward Model)
**核心思想:** 训练一个语言模型,将回答分类为"好"或"坏"(thumbs up / thumbs down)。
**训练流程:**
1. 从提示词数据集中采样多个提示
2. 对每个提示,让SFT模型生成多个候选回复
3. 人类标注员对回复进行**排序**(从最好到最差)
4. 使用这些排序数据训练奖励模型,使其学会预测人类偏好[pdf_3]
**奖励模型的关键作用:** 它接收一系列文本并返回一个标量奖励值,数值上对应人的偏好。这个奖励值将作为后续RL算法的"反馈信号"。[pdf_3]
### 步骤3:使用PPO优化微调语言模型
**RLHF将微调任务表述为强化学习问题:**
- **策略(Policy):** 接受提示并返回文本序列的语言模型
- **动作空间(Action Space):** LM词表中的所有Token
- **观察空间(Observation Space):** 可能的输入词元序列
- **奖励函数:** 偏好模型 + 策略转变约束(Policy Shift Constraint)的组合[pdf_3]
**PPO算法确定的奖励函数:**
reward = r(θ) - λ × KL散度
**具体计算过程:**
1. 将提示分别输入**初始LM**和**当前微调的LM**,得到输出文本
2. 将当前策略生成的文本传递给**奖励模型**,得到标量奖励 r
3. 计算两个模型生成文本的**KL散度**作为惩罚项——防止RL策略大幅偏离初始模型
**为什么需要KL散度惩罚?**
> 如果去掉这一惩罚项,可能导致模型在优化中生成**乱码文本来愚弄奖励模型**提供高奖励值。KL散度确保模型输出合理连贯的文本。[pdf_3]
### HuggingFace TRL:三行代码实现RLHF
```python
from trl import SFTTrainer, RewardTrainer, PPOTrainer
# Step 1: SFT训练
trainer = SFTTrainer(model=model, args=training_args,
train_dataset=dataset, dataset_text_field="text")
trainer.train()
# Step 2: 奖励模型训练
trainer = RewardTrainer(model=model, tokenizer=tokenizer,
train_dataset=dataset)
trainer.train()
# Step 3: PPO优化
trainer = PPOTrainer(config=config, model=model,
tokenizer=tokenizer, dataset=dataset)
for query in dataloader:
response = model.generate(query)
reward = reward_model(response)
trainer.step(query, response, reward)
```[pdf_3]
---
## 五、LLaMA2的改进版RLHF
Meta的Llama-2-chat在RLHF上做了重要改进——**同时训练两个奖励模型**:[pdf_3]
┌── Safety Reward Model ──┐
Human Feedback ────┤ ├── Rejection Sampling └── Helpful Reward Model ──┘ ↓ Proximal Policy Optimization ↓ Llama-2-chat(对齐模型)
**关键改进:** 同时训练**Safety(安全)**和**Helpful(有用)**两个奖励模型,而不是像ChatGPT那样在生成结果后再训练Moderation模型进行事后过滤。这使LLaMA2在安全性和有用性上实现了更好的平衡。[pdf_3]
---
## 六、RLAIF:基于AI反馈的强化学习
### 什么是RLAIF?
RLAIF(Reinforcement Learning from AI Feedback)使用**大模型(AI)替代人类**来实现高效反馈的强化学习训练方法。核心思路是:让一个现成的LLM来为其他LLM的生成结果评分,替代昂贵的人工标注。[pdf_3]
### RLAIF vs RLHF 流程对比
RLHF流程: 人类标注员 → 评分 → 训练奖励模型 → 强化学习 → 对齐模型
RLAIF流程: 现成LLM → 评分 → 训练奖励模型 → 强化学习 → 对齐模型
### RLAIF实验结果
在多个任务上,RLAIF与RLHF的表现对比:
**RLAIF vs RLHF Win Rates:**
- 文本摘要任务:**RLAIF与RLHF表现相当**
- 有用性(Helpfulness):**RLAIF略优于RLHF**
**SFT / RLHF / RLAIF 三种策略的安全率对比:**
- SFT:约64%
- RLHF:约76%
- **RLAIF:约88%**(安全率最高!)[pdf_3]
> **结论:** RLAIF在某些任务上不仅能够替代人类反馈,甚至在安全率上表现更优,是未来大模型对齐技术的重要方向。
---
## 七、SFT与RLHF的对比总结
| 对比维度 | SFT(有监督微调) | RLHF(基于人类反馈的强化学习) |
|:--------:|:-----------------:|:----------------------------:|
| **核心思想** | 在标注数据上最小化预测与标签差异 | 从人类反馈中学习,优化输出偏好 |
| **适用任务** | 输出相对明确的任务(分类、NER等) | 输出标准不易量化的生成式任务 |
| **数据需求** | 标注的(指令, 回复)对 | 人类对模型输出的偏好排序 |
| **侧重点** | 任务准确性 | 生成符合人类偏好的输出 |
| **优势** | 训练稳定,收敛快 | 更灵活,能处理开放性问题 |
**ChatGPT和LLaMA2-chat等模型结合了两者优势**,充分利用监督学习的明确性和强化学习的灵活性。[pdf_5]
---
## 八、大模型微调技术全景
RLHF只是大模型微调技术路线中的一环,完整的微调技术体系包括:[pdf_1]
大模型微调技术路线 ├── 全量微调(Full Fine-Tune, FFT) │ └── 问题:训练成本高、灾难性遗忘 ├── 高效微调(Parameter-Efficient Fine-Tune, PEFT) │ └── 如LoRA、Adapter、Prefix Tuning等 ├── 有监督微调(Supervised Fine-tune, SFT) ├── 基于人类反馈的强化学习(RLHF) └── 基于AI反馈的强化学习(RLAIF)
---
## 总结
1. **ChatGPT三大训练阶段**:预训练 → SFT指令微调 → RLHF人类对齐,缺一不可
2. **RLHF是ChatGPT成功的核心密码**:通过奖励模型 + PPO算法 + KL散度约束,让模型输出更像"人话"
3. **PPO奖励函数 = 奖励模型输出 - λ × KL散度**:KL散度防止模型生成乱码来"欺骗"奖励模型
4. **LLaMA2的改进**:同时训练Safety和Helpful两个奖励模型,实现安全性和有用性的平衡
5. **RLAIF是未来方向**:用AI替代人类进行反馈,不仅降低成本,在安全率上甚至表现更优
6. **数据质量比数量更重要**:LIMA仅用1000条高质量样本就能达到不错的微调效果
---

