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 的核心数据实际上有两类:

  1. 轨迹数据(Trajectory Data)
  2. 偏好数据(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:奖励模型一般

例如:

这种主观任务。

通常需要:

上万条偏好数据

一个经验区间

小规模实验

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 通常是性价比最高的区间。

相比盲目增加数据量,更重要的是提高数据质量、过滤噪声样本,并持续通过评估和误差分析迭代奖励模型。