harness_evolve/notes/ref05_self-rewarding-language-models.md

Self-Rewarding Language Models

一句话总结:不要再训练一个冻结的外部奖励模型(会被人类水平和数据规模卡住),而是让同一个 LLM 一身二任——既当"答题者"生成回答,又用 LLM-as-a-Judge 提示词给自己的回答打奖励;把高分/低分回答配成偏好对,用 Iterative DPO 一轮轮自我改进。结果是:迭代训练不仅让指令遵循变强,连模型自我打奖励的能力本身也一起变强,形成"良性循环",三轮就把 Llama 2 70B 推到 AlpacaEval 2.0 上超过 Claude 2 / Gemini Pro / GPT-4 0613。


TL;DR 速览

tags: #自我改进 #self-rewarding #llm-as-a-judge #iterative-dpo #rlaif #reward-modeling #self-alignment

related: [[ref06_spin-self-play-finetuning]](同框架不同信号:SPIN 用人类答案当 winner,本文用自评分)· [[ref04_absolute-zero]](更极端的"无人类数据自我改进")· [[ref14_self-refine]](同为"模型自评",但用于推理时精修而非训练)· [[ref19_gepa]](反思式反馈优化,也把"自己的判断"当优化信号)· [[ref17_self-harness]](自我改进的 harness 层切片)· [[ref09_meta-harness]](harness 搜索)


摘要

我们主张:要造出超人级 Agent,未来的模型需要超人级反馈才能提供足够的训练信号。当前做法通常从人类偏好训练奖励模型,因而可能被人类水平卡住;而且这些独立、冻结的奖励模型无法在 LLM 训练过程中继续改进。本文研究 Self-Rewarding Language Models——语言模型用 LLM-as-a-Judge 提示词给自己打奖励。我们证明在 Iterative DPO 训练中,不仅指令遵循能力提升,模型给自己打高质量奖励的能力也同时提升。把 Llama 2 70B 在本方法上迭代三轮,得到的模型在 AlpacaEval 2.0 榜单上超过许多现有系统,包括 Claude 2、Gemini Pro、GPT-4 0613

核心论点:把奖励模型内化进语言模型本体,可以在指令遵循奖励建模两个维度上同时持续改进——这是标准 RLHF(冻结奖励模型)做不到的。


1 介绍:为什么要打破"冻结奖励模型"这个瓶颈

论文的动机链条非常干净:

  1. RLHF 的现状:用人类偏好训一个奖励模型 \(r\),冻结它,再用 RL(如 PPO)去优化 LLM。DPO 则更进一步,跳过奖励模型、直接用人类偏好训 LLM。
  2. 两个瓶颈: - 奖励信号的质量被"人类偏好数据的规模与质量"卡死——你想要"超人"的模型,却只有"人类水平"的反馈; - 奖励模型一旦训好就冻结,在后续 LLM 训练里不再学习、不再变强
  3. 本文的解法:训练一个会自我改进的奖励模型——它不冻结,而是在对齐过程中持续更新。关键手段是:别把奖励模型和语言模型拆成两个独立模型,而是让同一个 Agent 同时具备训练所需的全部能力

[!TIP] 为什么"合并成同一个模型"能带来增益?(讲透) 作者的论证类比自预训练 / 多任务学习的任务迁移:就像同时在很多任务上训练能让技能互相迁移一样,把"奖励建模任务"和"指令遵循任务"放进同一个模型训练,两个任务之间也能互相迁移。 - 具体表现在实验里:训练 \(M_1→M_2→M_3\) 只喂了指令遵循的偏好数据(AIFT),并没有额外喂 EFT 评判数据,但奖励建模的 pairwise 准确率却从 78.7% 一路涨到 81.7%(Table 4)。作者的解释是——模型的"通用指令遵循能力"变强了,而 LLM-as-a-Judge 本质也是一个指令遵循任务,于是评判能力顺带变强。 - 这就是"两个能力共享同一套参数"的红利:一个能力的提升会外溢到另一个。若奖励模型是独立冻结的,这条外溢通道根本不存在。

方法命名与定位:Self-Rewarding LM 同时 (i) 作为指令遵循模型给 prompt 生成回答;(ii) 能生成并评估新的指令遵循样本加进自己的训练集。训练框架借用 Xu et al. [2023](Pairwise Cringe Optimization)提出的 Iterative DPO,但把其中的外部固定奖励模型换成了模型自己

[!NOTE] 一句话把创新点说清:Iterative DPO 不是本文发明的(Xu et al. 2023 已有);LLM-as-a-Judge 也不是(Zheng et al. 2023);RLAIF/用 AI 打分也不是(Constitutional AI、Lee et al. 2023)。本文的新意在于三者的合流 + 一个关键改动:让打分的模型 = 被训练的模型,并且这个身份在每次迭代后一起更新,从而让"奖励能力"和"生成能力"共同进化


2 相关工作:把 Self-Rewarding 放进"偏好学习 / 自我改进"谱系

[!TIP] ① RLHF(从人类反馈做强化学习) - Ziegler'19 / Stiennon'20 / Ouyang'22(InstructGPT)/ Bai'22a:从人类偏好训固定奖励模型,再用 RL(PPO [Schulman'17])优化 LLM。奖励信号"其实已经来自一个模型",只是它是从人类数据蒸馏来的。 - DPO [Rafailov'23]Direct Preference Optimization,完全跳过奖励模型,直接用人类偏好对训 LLM。是本文训练所用的底层算法。 - PCO(Pairwise Cringe Optimization)[Xu'23]:用与本文相似的迭代训练流程,但奖励模型固定;并证明了 Iterative DPO 优于普通 DPO。本文直接站在它肩上,把固定奖励模型替换成自己。

本文差异:奖励不再来自固定模型或固定人类偏好,而来自每轮都在更新的模型自身

[!TIP] ② RLAIF(从 AI 反馈做强化学习)——本文最近的邻居 - Constitutional AI [Bai'22b]:用一个 LLM 依据"宪法"给回答反馈并精修,再用这些数据训一个固定的奖励模型,然后 RL——即 "RLAIF"。 - Lee et al. 2023(RLAIF):用一个现成 LLM做 LLM-as-a-Judge 造训练集,训一个固定奖励模型再 RL;他们发现 RLAIF ≈ RLHF。也试过在 PPO 里直接用那个固定的 LLM-judge,但计算代价很大

本文差异(关键)RLAIF 里做评判的 LLM 是"另一个、固定的"模型;本文里做评判的就是"被训练的这个"模型,且随迭代一起更新。而且本文用的是离线的迭代 DPO(先造好偏好数据再训),比"在 PPO 内部反复调用 judge"便宜得多。

[!TIP] ③ SPIN(Self-Play Fine-Tuning)[Chen'24b]——最该对照的同期工作 SPIN 也在一个"类 Iterative DPO"框架里完全不用奖励模型:它把人类标注的答案当作偏好对里的 winner,把上一轮模型自己的生成当作 loser,让模型不断把自己拉向人类答案。 - 它的局限(作者点名):① 一旦模型生成达到人类水平,就没有信号了(winner 追平 loser)——天花板 = 人类;② 每个 prompt 都必须有人类标注答案。 - 本文的优势:Self-Rewarding 用模型自评的分数造偏好对,不需要每个 prompt 都有人类答案,理论上天花板不被人类答案锁死(因为奖励能力自己也在涨)。详见下方对比表。

[!TIP] ④ 用(自)造数据增广/筛选来改进 LLM - Self-Instruct [Wang'23]:自动生成 prompt+response 来改进基座模型——本文借用它来造新 prompt,然后用自评分给这些数据打分。 - Alpaca [Taori'23] / AlpaGasus [Chen'24a] / Instruction Backtranslation [Li'24]:靠从更强 LLM 蒸馏或用强 LLM-judge 筛数据。其中 Instruction Backtranslation 的筛选由 LLM-judge 自己完成,可视为一种特化版的 self-rewarding。 - ReST [Gulcehre'23]:用固定外部奖励筛高质量样本迭代加入训练集。作者实验发现(附录 A.4):只加"正例"(打满分的样本)做 SFT 不管用(29% vs 30%,无提升),必须构造偏好对做 DPO 才有效

把本文的"祖源"说清(对比表):

方法 奖励从哪来 奖励模型是否更新 是否需要每 prompt 的人类答案 天花板受什么限制
RLHF (PPO) [Ouyang'22] 人类偏好 → 固定奖励模型 ✗ 冻结 需要偏好标注 人类偏好规模/质量
DPO [Rafailov'23] 人类偏好(直接用) 无奖励模型 需要偏好标注 人类偏好规模/质量
RLAIF [Bai'22b, Lee'23] 另一个固定 LLM 打分 ✗ 冻结 那个固定 judge 的水平
SPIN [Chen'24b] 人类答案=winner,自生成=loser 无奖励模型 人类答案水平
Self-Rewarding(本文) 模型自己 LLM-as-a-Judge 打分 随迭代更新 自评能力上限(也在涨)

3 方法:一身二任 + 迭代自我对齐

3.1 总览与两种技能

方法假设有:一个预训练基座模型,加少量人工标注的种子数据。目标是让模型同时掌握两种技能:

  1. 指令遵循(Instruction following):给出描述用户请求的 prompt,生成高质量、有用(且无害)的回答。
  2. 自指令创建(Self-Instruction creation):生成并评估新的指令遵循样本,加进自己的训练集。

有了这两种技能,模型就能做自我对齐(self-alignment)——用 AI Feedback (AIF) 迭代训练自己。

Figure 1: Self-Rewarding Language Models 方法总览

Figure 1 逐元素解读(全文方法的心脏):整张图分成上下两半的一个循环。

[!TIP] 为什么"打分的和答题的必须是同一个模型"这么关键? 如果打分交给一个外部固定 judge(RLAIF 做法),那么无论策略模型训得多好,反馈的天花板就锁死在那个 judge 上。而本文让 judge = 策略模型本身:\(M_2\) 用的是 \(M_1\) 的自评来造数据,但训练也让 \(M_2\) 的自评能力超过了 \(M_1\)(Table 4:78.7%→80.4%)。于是 \(M_2\)\(M_3\) 造的数据,就比 \(M_1\) 能造的更好。这就是作者说的"virtuous circle(良性循环)"——评估能力与生成能力互相拉着往上走。

3.2 初始化:IFT 与 EFT 两套种子数据

方法用两套人工种子数据一起训练初始模型:

[!NOTE] 一个漂亮的"无副作用"发现:加 EFT 任务不损害指令遵循能力(EFT+IFT vs IFT 头对头 30.5% vs 30.9%,几乎打平)。作者用 t-SNE(附录 A.1)解释:EFT 数据在嵌入空间里落在和 IFT 完全不同的区域,所以"教会模型打分"不会挤占"教会模型答题"的能力。这就为"一身二任"提供了经验依据——两个技能可以共存而不打架。

3.3 核心机制:LLM-as-a-Judge 的"加性 5 分"提示词

这是全文最具体、最可复用的部分——奖励信号究竟长什么样

Figure 2: LLM-as-a-Judge 打分提示词(加性 5 分制)

Figure 2 逐项解读:这套提示词让模型对一个回答逐条累加打分,而不是笼统给个印象分。五条加性(additive)准则:

得分 触发条件(累加式) 覆盖的质量维度
+1 回答相关、提供了与问题有关的信息(哪怕不完整/夹带无关内容) 相关性 relevance
+1 回答覆盖了问题的实质部分(但没完全解决/没直接作答) 覆盖度 coverage
+1 回答有用地答到了问题的基本要素(哪怕像博客/搜索结果的口吻) 有用性 usefulness
+1 明显以 AI 助手视角、直接且全面作答、组织良好有帮助(略有改进空间) 清晰度/组织 clarity
+1 完美契合、无冗余、体现专家知识、高质量且有洞见 专业度 expertise

提示词还要求:先用不超过 100 词简述理由再以 Score: <总分> 格式给出结论

[!TIP] 为什么是"加性打分"而不是"多选打分"?(讲透 + 数值证据) 作者在预实验里对比了两种 judge 提示:本文的加性累加式(Figure 2)vs Li et al. 2024 的多选桶式(把 1–5 分描述成 5 个质量档位让模型选,附录 Figure 7)。用只训了 3200 条 IFT 的模型测评判能力:

judge 提示 Pairwise 准确率 Spearman 相关 Kendall τ
多选桶式 [Li'24] 26.6% −0.18 −0.16
本文加性式 65.1% 0.25 0.23

差距巨大(65.1% vs 26.6%,且多选式相关系数居然为)。作者的解释:多选式逼模型把评估当成一个"整体多选题",很难拆解成对各质量维度的子判断;而加性式把评估分解成若干可独立判断的小问题(相关?覆盖?有用?…),逐条累加,更符合模型分步推理的习惯方法论启示:同样一个 LLM-as-a-Judge,提示词结构(把评分分解成加性子项 vs 让它整体选一个桶)能让评判准确率差 2.4 倍——这说明"评估 harness 的提示工程"本身就是一个高杠杆的可优化面。

3.4 自指令创建的三步

用当前模型给下一轮造训练数据,具体三步:

  1. 生成新 prompt:用 few-shot 提示(从种子 IFT 数据采样示例,Self-Instruct 式)生成新 prompt \(x_i\)。(注:主实验里 prompt 是由一个提前固定的模型 ChatLlama 70B 生成的,但附录 A.5 证明新训的模型自己也能生成合格 prompt。)
  2. 生成候选回答:当前模型对 \(x_i\) 采样 \(N\) 个多样的候选回答 \(\{y_i^1,\dots,y_i^N\}\)
  3. 评估候选回答:用同一个模型的 LLM-as-a-Judge 能力给每个候选打分 \(r_i^n \in [0,5]\)

3.5 指令遵循训练:从自评分构造偏好对 + DPO

拿到打分后,构造 AIFT(AI Feedback Training)数据

[!TIP] 什么是 DPO(Direct Preference Optimization)?(本文的训练底座) DPO [Rafailov'23] 的核心洞见是——"你的语言模型其实偷偷就是一个奖励模型"。传统 RLHF 要先训奖励模型 \(r_\phi\)、再用 PPO 优化策略;DPO 用一个数学变换跳过奖励模型,把"最大化奖励 + KL 约束"的 RL 目标闭式地改写成一个在偏好对上的分类损失: $$ \mathcal{L}{\text{DPO}} = -\,\mathbb{E}{(x,y^w,y^l)}\Big[\log \sigma\Big(\beta \log \tfrac{\pi_\theta(y^w\mid x)}{\pi_{\text{ref}}(y^w\mid x)} - \beta \log \tfrac{\pi_\theta(y^l\mid x)}{\pi_{\text{ref}}(y^l\mid x)}\Big)\Big] $$ 直觉:让当前策略 \(\pi_\theta\) 相对参考模型 \(\pi_{\text{ref}}\)(通常是 SFT 起点)提高 winner 的相对概率、压低 loser 的相对概率\(\beta\) 控制偏离参考模型的强度(本文取 0.1)。因为不需要在线采样和奖励模型,DPO 比 PPO 更稳、更省算力——这也是为什么本文能负担得起"每轮造几千对、迭代三轮"。

在本文里的角色:DPO 是把"自评分 → 偏好对"这个信号真正落进权重更新的执行器。注意本文把 DPO 用在自评构造的偏好对上(而非人类偏好),这是它和原始 DPO 的关键区别。

[!TIP] 为什么必须用"偏好对(DPO)"而不是"只加正例(SFT)"?(附录 A.4 的关键消融) 一个自然的替代方案是:干脆把自评满分(5/5)的回答当作新的 (prompt, response) 直接加进 SFT。作者试了——加了 11,254 条满分样本、还调了混合权重,头对头对 SFT baseline 仍是 29% vs 30%,毫无提升为什么正例不够? 因为 SFT 只告诉模型"这是个好答案,学它",但没有对比信号告诉模型"什么是坏答案、好在哪里"。DPO 的偏好对同时给出 winner 和 loser,提供的是相对信号(好 vs 坏的落差),这才是驱动改进的关键。这与 SPIN、Cringe loss 等"必须有负例/对比"的观察一致。

3.6 整体算法:模型序列 \(M_0 \to M_1 \to M_2 \to M_3\)

[!NOTE] 模型序列定义(本文的迭代骨架) M0 : 基座预训练 LLM,不做任何微调。 M1 : 用 M0 初始化,在 IFT+EFT 种子数据上做 SFT。 # 学会答题 + 学会打分 M2 : 用 M1 初始化,在 AIFT(M1) 数据上做 DPO。 # 用 M1 的自评造的偏好对 M3 : 用 M2 初始化,在 AIFT(M2) 数据上做 DPO。 # 用 M2 的自评造的偏好对 其中 AIFT(\(M_t\)) = 用模型 \(M_t\) 做自指令创建(生成回答 + 自评打分 + 选偏好对)得到的训练数据。 这套迭代与 Pairwise Cringe Optimization 的流程一致,即 Iterative DPO [Xu'23]——唯一的区别是那篇用外部固定奖励模型,本文用模型自己规模:AIFT(\(M_1\)) = 3,964 对(训 \(M_2\));AIFT(\(M_2\)) = 6,942 对(训 \(M_3\))。


4 实验:两个维度都在涨

4.1 设置速记

4.2 指令遵循:逐代碾压前代

Figure 3: 指令遵循能力随自训练逐代提升(GPT-4 头对头胜率)

Figure 3 逐条解读(三组"左 vs 右"的头对头,绿=左赢、蓝=平、红=右赢):

AlpacaEval 2.0 榜单(Table 1)——对 GPT-4 Turbo 的胜率逐代上升,\(M_3\) 超过多个强模型:

模型 胜率 对齐数据类型
Self-Rewarding 70B — \(M_1\) 9.94%
Self-Rewarding 70B — \(M_2\) 15.38%
Self-Rewarding 70B — \(M_3\) 20.44%
GPT-4 0314 22.07% 专有
Claude 2 17.19% 专有
Gemini Pro 16.85% 专有
GPT-4 0613 15.76% 专有
LLaMA2 Chat 70B 13.87% 专有

[!IMPORTANT] \(M_3\)(20.44%)超过了 Claude 2、Gemini Pro、GPT-4 0613——而这些竞品大多用了专有对齐数据(往往 >100 万条标注)或从更强模型蒸馏的目标。本文却只从 3,200 条 Open Assistant 种子数据出发,之后的目标和奖励全由模型自己生成。这是"自我改进能突破人类标注规模瓶颈"的最有力单点证据。

细粒度分析(Figure 4)——收益从哪些任务来?

Figure 4: AlpacaEval 胜率按指令类别拆分

Figure 4 逐元素解读:横轴是 20 个指令类别(按 \(M_3\) 胜率从高到低排),纵轴是各代(\(M_0\) 深紫、\(M_1\) 紫三角、\(M_2\) 红方、\(M_3\) 橙菱)在该类别的胜率。关键读法:

其他佐证: - 人评(Figure 5,未嵌入):50 题、三标注者盲评多数投票,\(M_1/M_2/M_3\) 对 baseline 的优势逐代扩大,与 GPT-4 判断一致。 - NLP benchmark(Table 3)\(M_1\to M_3\) 大体维持基座水平(略有波动/下降)——因为训练数据(Open Assistant 系)与这些 benchmark 技能相关性低,属于 InstructGPT 所说的"alignment tax(对齐税)"现象,符合预期。 - 一个需要警惕的现象\(M_1/M_2/M_3\) 生成的平均长度是 1092 / 1552 / 2552——模型在学着写更长的回答,而"长度"与"被判为高质量"存在已知相关性,这可能是相对性能提升的一个混淆因素(作者在 Limitations 里承认需深究是否有 length/reward hacking)。

4.3 奖励建模:judge 自己也越训越准(本文最独特的结果)

![Figure 4 已在上文;此处为 Table 4 数据表]

Table 4——奖励建模能力随自训练提升(与 held-out 人类偏好的一致性):

指标 SFT baseline (IFT) \(M_1\) (IFT+EFT) \(M_2\) (+AIFT(\(M_1\))) \(M_3\) (+AIFT(\(M_2\)))
Pairwise 准确率 65.1% 78.7% 80.4% 81.7%
5分命中率 ↑ 39.6% 41.5% 44.3% 43.2%
Exact Match ↑ 10.1% 13.1% 14.3% 14.3%
Spearman 相关 ↑ 0.253 0.279 0.331 0.349
Kendall τ ↑ 0.233 0.253 0.315 0.324

两个层层递进的发现:

  1. EFT 增广 > 只用 IFT:加了"教模型怎么打分"的 EFT 数据,pairwise 准确率从 65.1% → 78.7%。IFT 本身也让模型有一定评判力(65.1%),但 EFT 给了这个特定任务更多示例。
  2. 奖励建模能力随自训练继续涨\(M_1\)(78.7%) → \(M_2\)(80.4%) → \(M_3\)(81.7%)——而 \(M_2/M_3\) 训练时根本没喂额外 EFT 数据,自指令创建产出的样本也不长得像 judge 训练样本。作者的解释就是 §1 那条"任务迁移"红利:通用指令遵循变强 → LLM-as-a-Judge(本质是指令遵循任务)顺带变强

[!IMPORTANT] 这张表是全文最不可替代的证据。RLHF/RLAIF 里奖励模型冻结,不可能出现"奖励能力逐代上升"。这里 judge 能力自己往上走,意味着下一轮能造出比上一轮更好的偏好数据——这就是"良性循环 / 抬高自我改进天花板"的字面兑现。它也是本文标题 "Self-Rewarding" 的落脚点:不只是"自己给自己打分",而是"自己越来越会给自己打分"。


5 结论与局限

结论:Self-Rewarding LM 通过"评判自己的生成 + 在自己的偏好上训练"实现自我对齐,迭代进行。每轮用 LLM-as-a-Judge 给自己的生成打奖励、用 Iterative DPO 训偏好。实验证明训练同时提升了指令遵循奖励建模能力——形成良性循环。虽然现实中这种提升很可能会饱和,但它打开了"持续改进、超越用于构建今日奖励模型的人类偏好"的可能性。

局限(作者自陈,值得逐条记住)

局限 说明
只跑了 3 轮、单一设定 没探索更多迭代/不同模型下的"scaling laws";饱和点未知。
length 混淆 / reward hacking 隐患 生成越来越长,而长度与"高质量"相关;是否在框架内发生 reward hacking 尚未分析。
评估模型与训练奖励都是 LLM 训练用 LLM 打奖励、评测也用 LLM(GPT-4),即便是不同模型,仍需更深入分析潜在偏置。
未做安全评估 没有 safety evaluation;但作者指出可用 LLM-as-a-Judge 专门评估安全,且因奖励能力会涨,安全性也可能随迭代改善
推理类任务收益小 数学/逻辑几乎不涨,主因种子数据缺推理;需扩展到更多样的种子 prompt。

个人思考

与本项目其他论文的关联(放进 harness 演化的坐标系)

方法论启示(可迁移的通用思路)

  1. 把"评估者"和"被评估者"合并,让评估能力搭生成能力的便车。这是本文最反直觉、也最可迁移的一招:只要两个能力共享参数且任务相关,提升一个会外溢到另一个。做任何"自评估驱动的自改进"时,都该问一句——能不能让 judge 就是被优化的那个模型?
  2. 评估信号要"相对"不要"绝对":附录 A.4(只加正例做 SFT 无效、必须做偏好对 DPO)是一条硬教训。"这是好答案"信息量远小于"这个比那个好"。任何自动化改进流程,优先构造对比/偏好信号。
  3. 评估提示词的"分解结构"是高杠杆可优化面:加性 5 分(拆成子判断逐条累加)比多选桶式好 2.4 倍。凡是用 LLM-as-a-Judge 的地方,把评估拆成可独立打分的小项几乎总是更稳。
  4. 种子数据的构成 = 自我改进的能力边界:数学不涨,是因为种子里就没多少推理任务。自训练放大已有能力多于创造新能力——想覆盖某能力,得先在种子里给够。

在我的工作中能怎么用

开放问题 / 疑问

局限性(我的补充判断)