17. 强化学习需要什么数据?
在微调(Fine-tuning)中,最重要的是:
Input → Output
模型学习模仿正确答案。
而在强化学习(RL)中:
模型不仅需要答案,
还需要知道:
这个答案好不好?
因此 RL 的数据结构比 SFT 更复杂。
强化学习需要什么?
回顾前面介绍过的 RL 公式:
RL = Model + Environment + Reward
对应的数据组成:
graph TD A[Input] --> B[Model生成] B --> C[Environment执行] C --> D[Grader/Reward] D --> E[RL更新]
因此 RL 的核心数据实际上有两类:
- 轨迹数据(Trajectory Data)
- 偏好数据(Preference Data)
第一类:轨迹数据(Trajectory)
轨迹(Trajectory)是:
模型与环境交互产生的完整过程
例如:
Question:
23 ÷ 13 等于多少?
模型:
<think>
23除13
约等于1.769
</think>
1.769
验证器:
正确
奖励:
+1
完整轨迹:
Prompt
↓
Generation
↓
Environment
↓
Reward
Trajectory 数据结构
{
"prompt": "23÷13等于多少?",
"response": "<think>...</think>1.769",
"reward": 1.0
}
RL轨迹流程
graph TD A[Prompt] --> B[Model Response] --> C[Verifier] --> D[Reward] --> E[Trajectory]
第二类:偏好数据(Preference Data)
RLHF 中更常见的是:
Preference Data
即偏好数据。
格式:
Input
Output A
Output B
Human Preference
一个例子
问题:
如何学习Python?
回答A:
学习Python。
回答B:
建议先学习变量和函数,
再完成几个项目练习。
人工选择:
B 更好
Preference 数据结构
{
"prompt":"如何学习Python",
"chosen":"回答B",
"rejected":"回答A"
}
Preference Learning流程
graph TD A[Prompt] --> B1[Answer A] A --> B2[Answer B] B1 --> C[Human Preference] B2 --> C C --> D[Reward Model]
Reward Model长什么样?
Reward Model训练数据通常是:
Input
Output A
Output B
Preference
例如:
Question:
如何学习Python?
Answer A:
看书。
Answer B:
建议先学习基础语法,
然后做项目练习。
Preference:
B
Reward Model学什么?
训练后:
输入:
Question
Answer
输出:
Reward Score
例如:
Question:
如何学习Python?
Answer:
看书
Reward:
3.2
Answer:
学习语法+做项目
Reward:
8.9
没有 Reward Model 时的数据格式
像:
DeepSeek-R1 Zero
OpenAI早期数学RL
很多任务不需要奖励模型。
只需要:
Prompt
↓
Generation
↓
Rule Verifier
↓
Reward
例如:
数学题:
23÷13=
答案:
1.769
验证器:
是否正确
奖励:
正确 +1
错误 -1
Rule-Based RL
graph TD A[Prompt] --> B[Model] --> C[Rule Verifier] --> D[Reward] --> E[RL]
奖励模型需要多少数据?
这取决于:
奖励模型质量
而不是:
LLM大小
情况1:奖励模型很好
例如:
- 数学验证器
- 单元测试
- 编译器
这种情况:
几千条数据
通常就足够。
情况2:奖励模型一般
例如:
- Helpful
- Friendly
- Polite
这种主观任务。
通常需要:
上万条偏好数据
一个经验区间
小规模实验
1k ~ 5k
验证方向。
大多数中型RL项目
5k ~ 20k
已经能看到明显收益。
Sweet Spot
大部分中大型RL项目:
20k ~ 100k
通用能力提升
例如:
ChatGPT级别
Claude级别
通常:
100万+
偏好数据。
为什么数据质量更重要
假设:
方案A:
10000条噪声数据
方案B:
1000条高质量偏好数据
很多时候:
方案B更好
什么样的数据最有价值?
最有价值的样本通常位于:
graph LR A[太简单] --> B[适中难度] --> C[太困难]
太简单
例如:
1+1=
模型:
100%正确
奖励没有信息量。
太困难
例如:
未见过的博士级数学题
模型:
100%错误
奖励也没有信息量。
最有价值
模型:
60%-80%正确率
附近的数据。
最容易产生有效梯度。
数据筛选的重要性
工业界经常会做:
Data Filtering
例如:
过滤:
- 重复样本
- 噪声样本
- 错误标注
- 低质量回答
流程:
graph TD A[原始数据] --> B[去重] --> C[过滤噪声] --> D[筛选困难样本] --> E[RL训练]
奖励模型也会过拟合
Reward Model 本身也是神经网络。
因此:
Reward Model
也可能被训练坏。
一个经典例子
奖励:
回答越长
奖励越高
模型学会:
hello hello hello hello hello
...
输出几千字。
奖励:
100分
但用户:
0分
Reward Hacking 本质
graph TD A[Reward Rule] --> B[模型发现漏洞] --> C[刷奖励] --> D[用户体验下降]
如何缓解 Reward Model 过拟合
方法1:
增加:
短回答优秀案例
方法2:
增加:
长回答低分案例
方法3:
定期人工审核。
最好的奖励数据来源
目前工业界公认最有效的方式仍然是:
Human Preference Feedback
也就是:
人类偏好反馈。
ChatGPT的经典做法
同一个问题:
模型生成:
Answer A
和:
Answer B
人工只需要选择:
哪个更好?
不需要打分:
7分
8分
9分
因为排序更稳定。
RLHF数据收集流程
graph TD A[Prompt] --> B[模型生成多个回答] B --> C[人工排序] C --> D[Preference Pair] D --> E[Reward Model] E --> F[PPO/GRPO训练]
总结
强化学习主要依赖两类数据:
| 数据类型 | 用途 |
|---|---|
| Trajectory | 训练策略模型 |
| Preference | 训练奖励模型 |
奖励模型的数据格式通常为:
Prompt
Chosen Answer
Rejected Answer
而轨迹数据通常为:
Prompt
Response
Reward
对于大多数 RL 项目,5k~20k 高质量偏好数据已经能够训练出有效的 Reward Model;20k~100k 通常是性价比最高的区间。
相比盲目增加数据量,更重要的是提高数据质量、过滤噪声样本,并持续通过评估和误差分析迭代奖励模型。