05. Rejection Sampling、Self-Play 和 RLAIF 生成数据的原理与区别是什么?

整理 Rejection Sampling、Self-Play 与 RLAIF 的原理、区别和组合方式。

简单回答

这三种方法都是用来生成高质量训练数据的技术,但思路不同。Rejection Sampling(拒绝采样)是让模型多次生成,只保留通过验证的样本;Self-Play 是让模型自己和自己"博弈",在对抗或协作中生成更高质量的训练信号;RLAIF(AI Feedback Reinforcement Learning)是用另一个 AI 模型代替人类来提供偏好反馈,然后用这些反馈做强化学习。三者常常配合使用,而不是互斥的选择。

详细解答

Rejection Sampling(拒绝采样微调)

Rejection Sampling Fine-tuning(RFT 或 ReST)的核心思路很简单:给模型一道题,让它生成 N 个候选答案,然后用某种验证机制判断哪些答案是正确的,只保留正确的(或高质量的)答案作为训练数据,去掉错误的。

"验证机制"是关键,常见的有:

  • 规则验证:数学题目有标准答案,直接对比最终答案是否正确;代码题目有测试用例,执行代码看输出是否匹配。
  • 奖励模型打分:用一个 Reward Model 对生成的答案打分,保留高分样本。
  • LLM Judge:用强模型(GPT-4)评判生成内容的质量。

Rejection Sampling 的优势是实现简单,且只用对的数据训练,天然过滤了低质量样本。局限是对于复杂任务,模型采样 N 次可能都得不到正确答案,这类"硬题"的数据就会缺失,导致模型在难题上没有足够的训练信号。

LLaMA 2 的技术报告里用 Rejection Sampling 配合 RLHF 来生成 SFT 数据,是这个方法比较有代表性的工程案例。

Self-Play

Self-Play 的概念来自于博弈论和强化学习(AlphaGo 就是这个思路)。在大模型里,Self-Play 通常指让模型扮演不同角色互相"博弈"或"协作",用这个过程生成更丰富的训练数据或训练信号。

一个典型的应用场景是对话数据生成:让一个模型实例扮演用户,另一个实例扮演助手,两者进行多轮对话,用这些对话数据来训练更好的对话模型。SPIN(Self-Play Fine-Tuning)是一个代表性工作,让模型和"上一版本的自己"对话,把新版本模型(更强的那个)的输出和旧版本的输出构成偏好对,用 DPO 训练。

Self-Play 在对抗场景里也有应用:一个模型生成"越狱"攻击,另一个模型学习防御,两者互相迭代,生成更鲁棒的安全数据。

Self-Play 理论上可以不断突破模型当前能力的天花板,因为博弈过程可以产生超出单次生成能力的训练信号。但实现复杂度更高,对训练稳定性要求也更高。

RLAIF(AI Feedback Reinforcement Learning)

RLAIF 的思路是:传统 RLHF 需要大量人类标注偏好数据(哪个回答更好),成本极高且扩展性差。能不能用一个 AI 模型(通常是一个更强的模型)来代替人类给出偏好判断?

Constitutional AI(Anthropic 提出的方法)是 RLAIF 最有代表性的实现之一。基本流程是:先让模型生成一个回答,然后给模型一套"宪法"(一系列原则,比如"回答应该无害、诚实、有帮助"),让模型根据宪法自我批判和修改自己的回答,用修改前后的回答构成偏好对,训练 Reward Model,再做 RL 训练。整个过程只需要极少量的人类监督。

RLAIF 的优势是可扩展性极强,不受人工标注产能限制。缺点是 AI Judge 本身有偏见,比如倾向于评分更长的回答、更流畅的回答,而不是真正更准确的回答。"位置偏见"(Position Bias)也是常见问题——AI Judge 倾向于认为第一个出现的回答更好。

三者的关系

这三种方法并不互斥,实际中经常组合使用。一个典型的高质量数据生成流程可能是:用 Self-Play 生成多样的候选,用 Rejection Sampling 过滤出正确的,再用 RLAIF 评判剩余样本的质量高低,用偏好对训练 Reward Model,再做 RL 优化。DeepSeek-R1 的技术路线就融合了多种方法。

面试时可以这样答

这三个方法都是在解决"怎么得到高质量训练数据"的问题,但切入点不同。

Rejection Sampling 是最直接的:让模型生成 N 个候选,用验证器(规则、奖励模型、或 LLM Judge)过滤,只留质量好的。优点是简单有效,缺点是模型做不出来的题就没有训练数据。

Self-Play 是让模型自己和自己"博弈",扮演不同角色产生训练信号,理论上可以超出模型当前能力上限,但实现复杂。

RLAIF 是用 AI 代替人类给偏好反馈,解决了 RLHF 标注成本高的问题,Anthropic 的 Constitutional AI 是最典型的例子。缺点是 AI Judge 有自己的偏见,比如倾向长答案、位置偏见等。

实际工程里这三个经常混用。一个高质量 SFT 数据的生成链路通常是:多次采样 + Rejection Sampling 过滤 + RLAIF 质量排序,组合起来用。

常见追问

  1. Rejection Sampling 里,如果模型 N 次采样都答不对怎么办?
  2. Constitutional AI 具体的"宪法"条款是人工设计的还是模型生成的?
  3. RLAIF 和人工 RLHF 数据混合使用有什么经验?