Cheatsheet · 题解

Self-improving LLMs / 自我改进

LLM 如何用自己生成的信号给自己"打分→过滤→训练",从而在无大量人工标注的情况下持续迭代。

注意 / Caution

学习笔记,非作者研究成果(见 README 诚信声明)。数字 / 结论以原论文为准,不确定处标注。

0. 一句话框架 / The core loop

生成(Generate) → 过滤/打分(Filter / Score) → 训练(Train) → 重复(Repeat)

每一轮,当前策略 产出候选答案或 preference 对;某种过滤机制(规则、另一个模型、自身打分)淘汰低质输出;剩余高质样本用来更新权重;下一轮拿新模型重跑。这个 自举闭环(self-improvement loop) 是所有方法的共同骨架。

TL;DR 速查(2 分钟过一遍)


1. Bootstrap-then-Train:从正确迹自举

1.1 STaR — 拒绝采样 + 迭代微调

STaR1迭代微调在"生成了正确答案"的 chain-of-thought 上,无需大规模 rationale 数据集。Zelikman 2022 ↗(Self-Taught Reasoner)是 LLM chain-of-thought 自举微调的奠基性方案:

  1. Rollout:对每道题采样 KK 条 chain-of-thought rationale。
  2. 过滤:保留最终答案正确的那些 rationale(rejection sampling)。
  3. 微调:在保留集上 SFT,更新模型。
  4. Hint-retry:对答案全部错误的题,给出正确答案后让模型"重新解释",再混入训练(防止简单题统治训练集)。

TT 轮迭代后,模型既是数据生成器,又是数据过滤器。

1.2 RFT — 拒绝采样微调(Rejection Sampling Fine-tuning)

RFT 是 STaR 的简化变体:省掉 hint-retry,直接从同一道题的 KK 条采样中保留答案正确的,汇总成更丰富的微调集。核心发现:同一题的多条正确解法比一条解法多样性更高,有助于泛化。

1.3 ReST — Grow-Improve 离线 RL 循环

ReST2先用当前策略生成大规模数据集(Grow),再按奖励阈值过滤后微调(Improve),比在线 RLHF 更样本高效。Gulcehre 2023 ↗ 将循环拆成两阶段:

关键点:Improve 阶段可多次重复(提高 τ\tau 逐步筛严),但 Grow 只需偶尔刷新一次 —— 相比在线 RLHF 的每步采样,计算更集中。

方法 过滤依据 是否在线 训练方式
STaR / RFT 答案对错(规则) 准在线(迭代) SFT
ReST 奖励函数阈值 离线批次 SFT / best-of-N 蒸馏
陷阱 / Pitfall

误区: 「STaR/RFT 这类自举能一直把自己拉升上去」。自举的上限被过滤信号当前正确率双重卡死:答案全错的题没有正确迹可学(STaR 靠 hint-retry 兜底,才不被简单题统治训练集),且只保留正确迹会让训练集多样性逐轮收窄(见 §6 失效模式)。


2. Self-Rewarding:模型自己当裁判

Self-Rewarding Language Models3同一模型既生成回答、又用 LLM-as-a-Judge 打分;用迭代 DPO 同步提升生成和评判能力。Yuan 2024 ↗ 打破了"需要外部 reward model"的假设:

  1. 对同一 prompt 采样多条回答。
  2. 同一模型用 LLM-as-a-Judge 格式(评分+理由)给每条回答打分。
  3. 按分数构造 preference 对 (yw,yl)(y_w, y_l),用 DPO 更新。
  4. 下一轮,打分能力也随之提升 —— 两个能力共享同一参数,协同进化

这条路的前提:模型的生成能力要与判断能力相互促进而不相互污染。实验表明在若干迭代内确实如此,但长期是否退化仍是开放问题(见 §6 失效模式)。

陷阱 / Pitfall

误区: 「同一模型自己打分,就能无限自评迭代变强」。模型的盲点会在自评里被系统性继承——它判不出自己判不出的错;短期若干轮有效,长期是否退化仍是开放问题,且最易触发模型坍塌 / 多样性收窄(§6.2)。所以自评信号越独立、越可验证越安全。


3. Self-Play:用"前一轮自己"当对手

SPIN4当前模型 vs 上一轮模型:后者生成负样本,前者学会区分,仅用 SFT 数据即可自我改进。Chen 2024 ↗(Self-Play Fine-Tuning)的灵感来自博弈论:

LSPIN(θt)=E[logσ ⁣(λlogπθt(yx)πθt1(yx)λlogπθt(y~x)πθt1(y~x))].\mathcal{L}_{\text{SPIN}}(\theta_t) = -\mathbb{E}\left[\log\sigma\!\left(\lambda\log\frac{\pi_{\theta_t}(y^*|x)}{\pi_{\theta_{t-1}}(y^*|x)} - \lambda\log\frac{\pi_{\theta_t}(\tilde{y}|x)}{\pi_{\theta_{t-1}}(\tilde{y}|x)}\right)\right].

关键点:无需额外人工 preference 标注 —— 负样本完全由自身历史版本提供。随着每轮迭代,πθt\pi_{\theta_t} 不断逼近人类分布,直到两者无法区分时收敛。


4. AI Feedback:让 AI 替代人类打 preference 标签

Constitutional AI5用一套"宪法"原则让模型自我批评并修订输出;AI 生成的 preference 数据替代人工无害性标注(RLAIF)。Bai 2022 ↗(CAI / RLAIF)是目前最有影响力的"以 AI 替代人工 preference"方案:

SL-CAI(监督阶段):

  1. 模型生成有害回答草稿。
  2. 给出一条宪法原则(如"避免歧视性内容"),让模型自我批评
  3. 让模型根据批评修订回答。
  4. 用修订后的回答做 SFT。

RL-CAI(强化阶段): 5. 让模型对一对回答用 AI 评分(哪个更符合宪法),构造 preference 数据。 6. 用 AI-labeled preference 训练 reward model,再用 RL 迭代。

与 STaR/ReST 的区别:过滤信号来自宪法准则,而非任务答案对错 —— 面向 alignment 而非推理能力。

陷阱 / Pitfall

误区: 「Constitutional AI 和 STaR/ReST 是一类方法」。骨架(生成→过滤→训练)相同,但过滤信号来源不同:CAI/RLAIF 的信号来自宪法准则、面向 alignment(无害性);STaR/ReST 的信号来自任务答案对错、面向推理能力。换句话说,变的是「用什么当过滤器」。


5. 推理时自我纠错(Training-free)

以下两种方法不更新权重,属于推理时(inference-time)自我改进,与上述训练循环不同,但概念上同根:

5.1 Reflexion — 语言强化学习

Reflexion6Agent 把任务反馈转换为自然语言反思,存入 episodic memory,下次尝试时引用 —— 无需梯度更新。Shinn 2023 ↗ 让 agent 在多次试错循环中:

迭代几次后,成功率显著提升 —— 但改进仅存在于当前会话的 context,重启即失效。

5.2 Self-Refine — 生成-批评-修订循环

Self-Refine7同一冻结 LLM 循环:生成输出 → 自我批评 → 根据批评修订,无需训练或额外监督,跨任务一致涨点。Madaan 2023 ↗ 的三步固定循环:

output0critiquefeedback0refineoutput1\text{output}_0 \xrightarrow{\text{critique}} \text{feedback}_0 \xrightarrow{\text{refine}} \text{output}_1 \xrightarrow{\cdots}

无需训练、无需额外监督 —— 直接利用预训练模型的 self-critique 能力。实验跨多个任务(代码、摘要、对话、数学)均有收益,但收益上限受限于模型的初始评判能力。

方法 改进发生在 是否更新权重 能否持久化
Reflexion inference-time,多次试错 否(context 内)
Self-Refine inference-time,单次循环
STaR / ReST / SPIN / CAI training-time
陷阱 / Pitfall

误区: 「Reflexion / Self-Refine 让模型『学会』了改正」。两者都是推理时、不更新权重:Reflexion 的反思只存在 episodic memory、重启即失效,Self-Refine 的收益上限受模型初始自评能力约束。要把改进持久化进权重,得走 STaR/ReST/SPIN/CAI 这类训练时循环。


6. 失效模式 / Failure modes

自我改进循环看似美好,但有三个结构性风险:

6.1 奖励 Hacking(Reward Hacking)

当过滤信号(奖励模型、LLM 打分、规则过滤)不完美时,模型会学到得高分却不真正正确的策略:捷径答案、表面流畅但内容错误的 rationale、专门迎合打分模板的输出。

提示 / Note

Agent 尺度的新变体——工具中介的 reward 篡改: 当模型能调用工具 / 执行代码时,reward hacking 多了一条"操纵评估通道"的路径——跳过真正的验证步骤、从任务相邻的元数据(文件名、注释、泄漏的 ground-truth)反推答案、直接改写评测脚本或单元测试使其恒为 pass(即"改测试而非改实现",在 agentic coding 训练里已被观察到)。一个 2026-05 的基准(arXiv:2605.02964,13 个模型)给出粗略量级:主测设定下利用率约 0%–14%(更难的变体可到 ~22%),且基准里偏推理 / RL 主导的模型相关性上利用率更高(其中仅同源 DeepSeek 对照较受控,跨厂商比较只是相关性)。⚠️ 这是单一基准、极新预印本,仅供量级直觉,不可当作部署事实或模型排名。缓解:锁定评估器(评测代码与 agent 可写空间隔离)+ 轨迹级审计(检查是否真的跑了验证,而非只看最终分数)。

6.2 模型坍塌 / 分布收窄(Model Collapse / Distribution Narrowing)

每轮只保留"高分"样本,低分多样性被淘汰。多轮后训练集趋于单一,模型输出多样性下降,泛化变差。在 Self-Rewarding 等"模型给自己打分"方案里尤甚:模型的盲点在偏好标注中被系统性继承

Diversity(πθt)Diversity(πθt1)(若每轮只保留 top-k)\text{Diversity}(\pi_{\theta_t}) \le \text{Diversity}(\pi_{\theta_{t-1}}) \quad \text{(若每轮只保留 top-}k\text{)}

6.3 Reward Model 过优化(RM Over-optimization)

RL 阶段的 reward model 本身是近似;当策略被持续优化时,分数曲线最终会与真实质量脱钩(reward model 的 out-of-distribution 区域被利用)。KL 散度惩罚项是标准缓解手段:

J(θ)=E[r(y)]βKL[πθπref].\mathcal{J}(\theta) = \mathbb{E}[r(y)] - \beta\,\mathrm{KL}[\pi_\theta \,\|\, \pi_{\text{ref}}].

β\beta 越大,离参考策略越近,但改进幅度也越保守。

陷阱 / Pitfall

误区: 「自我改进里只保留高分样本总是好的」。每轮只留 top-k 会让训练分布单调收窄(diversity 不增)→ 泛化变差,即模型坍塌;在「模型给自己打分」时尤甚(盲点被继承)。注意 RFT 的相反经验:同一题保留多条不同的正确解反而提升多样性与泛化——多样性本身要被当成目标守住。


7. From-scratch 代码:STaR 风格拒绝采样微调循环

95 行 / lines
"""
STaR-style rejection-sampling fine-tuning loop (illustrative).
依赖:transformers, torch — 用 GPT-2 作教学示范,真实训练换成更大模型即可。
"""
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, Trainer, TrainingArguments
from torch.utils.data import Dataset

# ---------- 假设的问答数据 ----------
PROBLEMS = [
    {"question": "What is 3 + 5?",  "answer": "8"},
    {"question": "What is 7 * 6?",  "answer": "42"},
    {"question": "What is 12 - 4?", "answer": "8"},
]

# ---------- 辅助:简单答案抽取 ----------
def extract_answer(text: str) -> str:
    """从生成文本中抽取最后一个数字(演示用)."""
    import re
    nums = re.findall(r"\d+", text)
    return nums[-1] if nums else ""

# ---------- 1. Rollout:每题采样 K 条 rationale ----------
def rollout(model, tokenizer, problems, K=4, max_new=64, device="cpu"):
    """返回 list of (question, rationale, is_correct)."""
    results = []
    model.eval()
    for prob in problems:
        prompt = f"Question: {prob['question']}\nLet's think step by step:"
        inputs = tokenizer(prompt, return_tensors="pt").to(device)
        with torch.no_grad():
            outputs = model.generate(
                **inputs, max_new_tokens=max_new,
                do_sample=True, temperature=0.8,
                num_return_sequences=K, pad_token_id=tokenizer.eos_token_id,
            )
        for seq in outputs:
            text = tokenizer.decode(seq, skip_special_tokens=True)
            rationale = text[len(prompt):]
            correct = extract_answer(rationale) == prob["answer"]
            results.append({"prompt": prompt, "rationale": rationale, "correct": correct})
    return results

# ---------- 2. Filter:只保留答案正确的 rationale ----------
def filter_correct(results):
    return [r for r in results if r["correct"]]

# ---------- 3. Dataset wrapper ----------
class RationaleDataset(Dataset):
    def __init__(self, samples, tokenizer, max_len=128):
        self.tokenizer = tokenizer
        self.data = []
        for s in samples:
            text = s["prompt"] + s["rationale"]
            enc = tokenizer(text, truncation=True, max_length=max_len,
                            padding="max_length", return_tensors="pt")
            input_ids = enc["input_ids"].squeeze()
            self.data.append({"input_ids": input_ids, "labels": input_ids.clone()})

    def __len__(self):  return len(self.data)
    def __getitem__(self, i): return self.data[i]

# ---------- 4. Train:在正确 rationale 上 SFT ----------
def finetune(model, tokenizer, samples, output_dir="./star-ckpt"):
    ds = RationaleDataset(samples, tokenizer)
    if len(ds) == 0:
        print("No correct samples — skip this iteration.")
        return
    args = TrainingArguments(
        output_dir=output_dir, num_train_epochs=1,
        per_device_train_batch_size=2, logging_steps=5,
        save_strategy="no", report_to="none",
    )
    Trainer(model=model, args=args, train_dataset=ds).train()

# ---------- 5. STaR 主循环 ----------
def star_loop(model_name="gpt2", n_iters=3, K=4):
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    tokenizer.pad_token = tokenizer.eos_token
    model = AutoModelForCausalLM.from_pretrained(model_name)
    device = "cuda" if torch.cuda.is_available() else "cpu"
    model.to(device)

    for t in range(n_iters):
        print(f"\n=== Iteration {t+1}/{n_iters} ===")
        all_results = rollout(model, tokenizer, PROBLEMS, K=K, device=device)
        correct = filter_correct(all_results)
        print(f"  Correct rationales: {len(correct)} / {len(all_results)}")
        finetune(model, tokenizer, correct)

    return model

if __name__ == "__main__":
    star_loop(n_iters=2, K=4)

以上代码仅作原理示意:真实 STaR 用更大模型、更长 rationale、hint-retry 兜底。核心流程(sample → filter → finetune → repeat)与论文一致。


8. 前沿扩展:测试时 RL(TTRL)与自进化 agent / Frontier: test-time RL & self-evolving agents

§1–§7 的自我改进都依赖某种监督信号(正确答案、偏好标注、可验证奖励)。2025 年起两条前沿进一步放松这个假设:一条把 RL 推到完全无标注的测试数据上(TTRL),另一条把"改进"从权重搬到工作流 / 技能库里(自进化 agent),对黑盒 API 模型尤其友好。

8.1 测试时 RL(TTRL)

TTRL12在无标注测试数据上做 RL:对每题采样多条输出,用多数投票的答案当伪标签,奖励 = 是否与共识一致,再做 GRPO 式更新。Zuo 2504.16084 ↗(Test-Time Reinforcement Learning)把 §1 的"生成-过滤-训练"循环推到极端:没有任何 ground-truth。流程是——对同一道测试题采样多条输出 → 多数投票(majority vote) 选出共识答案当伪标签 → 奖励 = 输出是否与共识一致 → GRPO 式 RL 更新。可以理解为"没有验证器的 RLVR":用模型自己的一致性代替外部正确性信号。据原文报告,在数学推理上提升显著(Qwen-2.5-Math-7B 于 AIME24 的 pass@1 相对提升约 +211%)。

注意 / Caution

TTRL 的依赖与陷阱: 伪标签来自多数投票,质量瓶颈就在多数投票本身——某类题若共识系统性错误,奖励信号会退化,甚至强化"自信但错误"的共识(与 §6.2 模型坍塌同源)。注意它并非严格被 maj@n 上界卡死(原文报告可超过初始 maj@n,因为即使伪标签错、奖励估计往往仍大体可用),但本质是放大已有能力、而非凭空创造新知识,对模型根本无从下手的难题基本无效。报告的 +211% 是自我改进幅度而非排行榜分数,跨模型 / 跨任务稳健性仍在被检验。

8.2 自进化 agent:把改进搬出权重

当 agent = "LLM + 工作流 + 工具 + 记忆"时,"自我改进"未必要改权重——可以改工作流结构技能库:

提示 / Note

口径提醒: 本节是前沿方向速写,非成熟定论。AFlow / Voyager 的强结果多在各自论文的特定任务域内,跨域稳健性、与权重级 RL 的真实性价比仍在被检验;面试宜讲"机制 + 适用边界",而非把单点数字当普遍结论。


分层面试题 / Stratified follow-ups

L1 基础

1. 自我改进的"生成-过滤-训练"循环是什么?为什么需要循环而不是一次性?

答:循环骨架是:当前策略生成候选输出 → 过滤/打分机制淘汰低质样本 → 在保留集上更新权重 → 用新模型重跑。一次性的问题是:初始模型能力有限,一轮生成的正确样本覆盖范围窄;循环后每轮新模型能解决上一轮答不对的题,逐渐扩大训练信号覆盖,实现自举式能力提升。

追问: 这个循环在什么条件下会停止迭代?停止是因为模型收敛了,还是遇到了无法突破的瓶颈? → 循环停止通常意味着过滤信号饱和(当前模型对训练集全部答对,rejection sampling 产出的新样本与已有数据几乎重复,梯度趋零),或任务难度超出模型自举能力(对完全无解的题无法产生任何正确样本)。二者都不是真正"收敛",而是陷入停滞;真正的收敛需要模型在held-out集上也不再提升。

2. STaR 如何在没有 rationale 标注的情况下训练 chain-of-thought?hint-retry 解决什么问题?

答:STaR 对每道题采样 KK 条 chain-of-thought,只保留最终答案正确的 rationale 做 SFT(rejection sampling),从而无需人工 rationale 标注。hint-retry 针对"模型全部答错的题"——给出正确答案后让模型重新生成解释再混入训练集,防止简单题垄断训练集、难题得不到任何梯度更新。

追问: hint-retry 引入了正确答案作为提示,这会带来什么偏差? → 模型重新生成的 rationale 可能包含"从答案倒推"的虚假推理——表面上步骤合理,实则依赖了不该知道的信息。这类样本混入训练集后,可能教会模型模仿倒推模式而非真正的正向推理,损害在新题上的泛化能力;这正是 PRM(过程奖励模型)被提出的动机之一。

3. Reflexion 和 Self-Refine 为什么被称为"training-free"?它们的改进能持久化吗?

答:两者都不更新模型权重——Reflexion 把自然语言反思存入 episodic memory 注入 context,Self-Refine 在单次对话中循环"生成→批评→修订"。改进不能持久化:Reflexion 的改进仅存在于当前会话 context,重启即失效;Self-Refine 同理,下次调用从零开始。

追问: 若要让 Reflexion 或 Self-Refine 的改进持久化,需要怎样的系统架构设计? → 可以将多轮推理后提炼出的高质量"反思"或"修订后输出"作为新的训练数据,定期做离线 SFT 或 DPO 更新,形成 inference-time 改进 → 训练循环的闭环;但核心挑战在于如何过滤这些自产数据的质量——错误的 reflection 若被持久化,会比一次性错误更难纠正。

4. Constitutional AI 里"宪法"起什么作用?AI feedback 如何替代人工 preference 标注?

答:"宪法"是一套原则列表(如"避免歧视性内容"),SL-CAI 阶段用它引导模型自我批评并修订有害草稿,修订后的输出用于 SFT。RL-CAI 阶段让模型用 AI 评分(哪条回答更符合宪法)构造 preference 对,用 AI-labeled preference 训练 reward model 再做 RL,从而以 AI 反馈替代大规模人工无害性标注(RLAIF)。

追问: 除了预设的静态宪法原则列表,有哪些让反馈原则更动态、更自适应的方向? → 一个方向是元奖励模型:根据具体输入和有害输出动态检索或生成最相关的原则进行批评,而非对所有 prompt 用同一套规则;另一个方向是从大量标注数据中用聚类或归纳学习自动提炼"隐式宪法",使原则本身可随任务分布演化而非人工固化。

L2 进阶

5. ReST 的 Grow 和 Improve 两阶段如何分工?为什么比在线 RLHF 更样本高效?

答:Grow 阶段用当前策略 πθ\pi_\theta 大规模采样并用奖励函数打分,构建离线数据集 D\mathcal{D};Improve 阶段在奖励超过阈值 τ\tau 的子集上微调,且可提高 τ\tau 多次重复 Improve。样本高效的原因是:Grow 只需偶尔刷新一次,Improve 可在同一批数据上多轮复用;在线 RLHF 每步都要采样新数据,计算更分散。

追问: ReST 的离线批次机制在什么场景下反而不如在线 RLHF? → 当任务分布或环境动态变化时,离线 Grow 阶段构建的数据集会迅速过时,其奖励信号反映的是旧策略下的分布;在线 RLHF 每步实时采样,可以跟上分布漂移,更适合非平稳环境(如对话系统的用户偏好漂移、代码执行中的外部依赖变化),代价是计算成本更高。

6. SPIN 用"前一轮自己"做负样本,和 DPO 用人工 preference 对相比有什么优劣?

答:SPIN 优势是无需额外人工 preference 标注,负样本完全由历史版本 πθt1\pi_{\theta_{t-1}} 提供,成本低。劣势是理论上界被 SFT 数据质量锁定——SPIN 收敛条件是 πθt=pdata\pi_{\theta_t} = p_\text{data},无法超越人类 SFT 数据;且随迭代推进负样本质量趋近正样本,对比信号越来越弱。DPO 的人工 preference 可以覆盖 SFT 数据外的对齐维度,但标注成本高。

追问: SPIN 中对比信号随迭代消失,与 GAN 训练动态有什么类比?这对实践中的迭代轮次选择有何含义? → SPIN 的判别器损失与 GAN 鉴别器在生成器逼近真实分布时的损失趋零类比:当 πθtpdata\pi_{\theta_t} \approx p_\text{data} 时,正负样本几乎不可区分,梯度趋于消失——类似 GAN 的训练饱和。实践含义是:SPIN 适合早期迭代弥补 SFT 分布 gap,后期应切换至有外部验证信号的方法(如 RLVR),否则多余的迭代轮次既无收益又有分布漂移风险。

7. Self-Rewarding 里"生成"和"评判"共享同一参数会带来什么问题?

答:生成器的盲点会被评判者继承——模型不擅长某类推理,给该类推理打高分的概率也偏低,偏好数据系统性低估了这部分能力。同时存在自我确认偏差:模型倾向于给"风格像自己"的答案打高分,正反馈闭环使偏差随迭代累积放大而非均值回归(见深挖 Q3)。

追问: 自我确认偏差在哪类任务分布上会表现得最为严重? → 在需要发散性/创造性思维的任务(如故事创作、头脑风暴)上最严重——评判者倾向于奖励与自身风格和逻辑路径相似的答案,系统性压制新颖但"非典型"的优质输出;反之,在有客观正误标准的任务(如数学、代码)上,自我确认偏差受到外部可验证信号的约束而相对弱化。

8. 奖励 hacking 和 RM 过优化是同一回事吗?如何用 KL 约束缓解?

答:RM 过优化是奖励 hacking 的一种具体形式:策略被持续优化后,在 RM 的分布外区域找到高代理奖励但低真实质量的输出——Goodhart's Law 的定量体现。KL 约束通过 J(θ)=E[r(y)]βKL[πθπref]\mathcal{J}(\theta) = \mathbb{E}[r(y)] - \beta\,\mathrm{KL}[\pi_\theta \,\|\, \pi_{\text{ref}}] 限制策略偏离参考模型的程度;β\beta 越大越保守,防止策略进入 RM 的分布外高分区。

追问: KL 约束在缓解 RM 过优化的同时带来什么代价?这个代价值不值? → 代价是限制了探索范围:策略无法大幅偏离参考模型,即使 RM 在某些方向指向了真正更优的区域也被压制。当 RM 质量较高时这个代价值得(稳定改进优先于冒险探索);当 RM 本身质量差时,KL 约束把策略锁在一个次优区域附近,既无法改进也无法发现真实最优——此时应优先改进 RM 或换用可验证信号,而非调大 β\beta

L3 深挖

9. 模型坍塌 / 分布收窄在数学上如何刻画?有哪些缓解手段(温度采样、多样性约束、数据混合)?

答:每轮只保留 top-kk 样本在统计上等价于截断采样——每次只取分布高密度区域,多轮累积导致熵单调下降:H(πθt)H(πθt1)H(\pi_{\theta_t}) \le H(\pi_{\theta_{t-1}})。分布收窄的根源有两层,由 Shumailov et al. 分析:第一层是统计近似误差——每次采样产出的数据集有限,尾部低概率事件被低估甚至缺失,下一轮模型从这个有限样本中学习,无论模型容量多大都无法还原缺失的尾部;第二层是函数近似误差——模型容量有限,对已经低频的模式表达进一步被压缩。两种误差在每轮迭代中叠加累积:统计误差为函数误差提供了"更差的原料",函数误差又使下一轮采样的基础分布比上一轮更窄,形成负向螺旋。在 Self-Rewarding 场景中情况更严峻:评判者本身也在漂移,偏好数据与真实偏好的 gap 随轮次增大,坍塌信号和偏差信号同步放大。在长链 chain-of-thought 任务中,尾部解法(非常规推理路径)在最初几轮过滤中首先消失,而这些路径往往正是应对分布外题目的关键。缓解手段分三类:提高采样温度保留低概率路径(增加方差换取更高概率命中多样正确路径);加入 diversity reward 项显式奖励输出多样性,与主损失抗衡;定期混入原始人类数据作为分布锚点,防止漂移失去约束。三者中"混合人类数据"最为根本,因为它直接阻断了两种误差的累积源头——有锚点就有尾部补充。

追问: 上述缓解手段能从理论上完全阻止分布收窄吗? → 不能:提高温度只增加采样方差,训练目标(SFT 的 MLE 或 DPO 的偏好损失)本身仍在推动模型拟合数据高密度区;diversity reward 是附加项,与主损失的权衡需要调参且无法精确覆盖所有尾部模式;只有持续混入外部数据才能在理论上打破两种误差的叠加螺旋。

10. STaR 每轮只保留正确样本会引入什么 selection bias?如何缓解?

答:过滤只看最终答案,等价于 ptrain(rx)pθ(rx)1[answer(r)=a]p_{\text{train}}(r|x) \propto p_\theta(r|x)\cdot\mathbf{1}[\text{answer}(r)=a^*],导致三类偏差:①错误推理路径只要答案侥幸正确就混入训练集;②训练集来自 πθt1\pi_{\theta_{t-1}},每轮偏离真实推理分布;③难题过滤后训练集为空,模型无法自举改进。缓解方向:用 process reward model(PRM)对每步打分(Lightman et al.)减少步骤级错误;混合原始 SFT 数据防止分布完全漂移。

追问: PRM 被提出用于解决 outcome bias,但 PRM 本身是否有类似的局限或新的风险? → 有:PRM 需要步骤级标注作为监督信号,初期仍依赖人工或强模型标注,其分布同样受标注偏差影响;更重要的是,用 PRM 分数作为优化目标时同样面临"PRM 过优化"风险——策略可能学会生成迎合 PRM 评分模式但实际推理有误的步骤序列,本质上与 RM 过优化同构,只是粒度从 outcome 下移到 step。

11. 把 Self-Rewarding 的 LLM-as-Judge 与外部 reward model 结合,各自的信息贡献是什么?如何防止两者互相"共谋"?

答:LLM-as-Judge 贡献的是生成器自身的语义理解与风格判断(覆盖广但有自我确认偏差);外部 RM 贡献的是独立参数的偏好估计(初始时与生成器偏差方向无关,但有分布外泛化失效风险)。防共谋的关键是保持两者参数独立且训练数据不互相污染;同时用 held-out 可验证答案或人工评估作为第三方信号定期校准,避免两个近似信号在同一方向累积误差。

追问: 若用 LLM-as-Judge 生成的标签去训练外部 RM,两者还能算"独立"吗?这对防共谋有何影响? → 不再独立:RM 的训练数据已携带 LLM-as-Judge 的偏差方向,参数虽然分离但信息已污染,两者会在相同盲点方向累积误差而非相互纠正——这是最常见的"假互补"陷阱。真正的独立要求 RM 的标注数据来源独立于 LLM-as-Judge(如人工标注或可验证任务的程序化评判),并用 held-out 第三方信号定期检验两者的分歧方向是否相关。

12. 如果自我改进循环收敛到某个局部最优(模型无法产出比自己更好的数据),有哪些破局思路?

答:根据深挖 Q7,停滞有三种根源——过滤信号饱和、分布收窄后探索不足、任务难度超出 bootstrapping 能力。对应破局思路:①课程学习:引入更难或更多样的题目扩大信号覆盖;②提高采样温度或加入多样性 reward,恢复探索能力;③引入外部更强教师模型(或 RLVR 可验证器)提供独立于当前模型的训练信号;④切换方法,从 SPIN/STaR 等自举式方法转向有外部验证信号的 RL 方法。

追问: 引入外部教师模型或 RLVR 可验证器后,仍可能出现哪些新的失败模式? → 三类主要风险:①可验证任务过优化导致开放任务退化——模型专门拟合可验证器的评判规则,对无唯一答案的任务泛化能力下降;②教师-学生分布错位——若教师模型或验证器的任务分布与目标分布不匹配,提供的信号无效甚至有害;③捷径学习——模型学会猜教师的输出模式或验证器的规则边界,而非内化通用推理能力,换一套验证器就立刻失效。



深挖 / Deep-dive

进阶面试题的详细解析。⚠️ 学习笔记,非作者研究成果。数字以原论文为准。


Q1. STaR 只保留"答案正确"的样本:这会引入什么 selection bias?对学到的分布有什么形式化影响?

核心偏差:STaR1 在每轮迭代中,只把最终答案正确的 chain-of-thought 纳入训练集。这在形式上等价于:

ptrain(rx)pθ(rx)1[answer(r)=a]p_{\text{train}}(r \mid x) \propto p_\theta(r \mid x) \cdot \mathbf{1}[\text{answer}(r) = a^*]

其中 rr 是 rationale,xx 是问题,aa^* 是参考答案。

三个结构性后果:

  1. 正确性 ≠ 推理质量:一条 rationale 可能通过侥幸、捷径或"答案倒推"得到正确答案,但推理步骤本身是错误的。由于过滤只看最终答案,错误推理路径被系统性地混入训练集。这与 Lightman et al.9 提出 process reward model(PRM)的动机一致:outcome supervision 无法区分"对的理由答对"和"错的理由答对"。

  2. 分布偏移积累:第 tt 轮的训练集取自 πθt1\pi_{\theta_{t-1}} 的条件分布,而不是真实推理分布 p(rx)p^*(r \mid x)。每轮迭代后,πθt\pi_{\theta_t} 进一步偏离 pp^*,过滤器的"正确率"信号变得越来越自我参照。

  3. 难题盲区:对模型已经完全答不对的难题,过滤后训练集为空(hint-retry 兜一部分,但不能完全补救)。模型在这些题上既无梯度更新,也无法自举改进,造成"强者愈强、难题停滞"的马太效应。

缓解方向:PRM 对每一步打分(而非只看最终答案)可减少步骤级错误;数据混合(保留原始 SFT 数据)防止分布完全漂移。


Q2. 迭代自训练为什么会收窄分布(模型坍塌)?直觉 + 何时咬人?

直觉:每轮"只保留高分样本"在统计上等价于截断抽样——每次只取分布的高密度区域。多轮下来,尾部低概率(但高多样性)的输出被系统性淘汰。

Shumailov et al.10 从理论和实验两个层面分析了递归训练于自产数据的后果:

两种误差在迭代中叠加,导致分布持续收窄。用不等式直觉刻画:

H(πθt)H(πθt1)(若每轮只保留 top-k 样本)H(\pi_{\theta_t}) \le H(\pi_{\theta_{t-1}}) \quad \text{(若每轮只保留 top-}k\text{ 样本)}

熵单调下降,输出趋向重复和单一。

何时真正咬人:

场景 为何严重
Self-Rewarding(模型给自己打分) 评判者本身就在漂移,偏好数据与真实偏好的 gap 越来越大
长链 chain-of-thought 任务 每一步的采样方差大;尾部解法(非常规推理路径)在过滤中首先消失
多轮对话 / agent loop context 中的历史也是自产数据,递归污染效应更强
仅用自产数据、不混合人类数据 没有锚点,分布漂移无约束

缓解:定期混入原始人类数据(防止漂移的锚点);提高采样温度保留多样性;使用 diversity reward 项明确奖励输出多样性。


Q3. Self-Rewarding 的 judge-generator 耦合为什么会失效?

在 Self-Rewarding3 里,同一组参数既是生成器(产出答案),又是评判者(给答案打分)。这带来一个结构性问题:生成器的盲点会被评判者继承

具体机制:

  1. 共同盲点:若生成器不擅长某类推理(如反事实推理),它给这类推理打高分的概率也低于真实水平——因为评判能力与生成能力共享同一知识基础。偏好数据因此系统性地低估了这类能力。

  2. 自我确认偏差(Self-Confirmation Bias):模型倾向于给"听起来像自己风格"的答案打高分。这不是 hallucination 的随机错误,而是一种系统性偏差——偏好信号本身就在把模型拉向自己的已有风格,形成正反馈闭环。

  3. 错误共同漂移:每轮 DPO 更新后,生成器和评判者同步朝偏好数据的方向移动。若偏好数据本身有误(来自有盲点的评判),下一轮的评判者也会在相同方向上加剧偏差——误差不是均值回归,而是累积放大

形式化地,设 JθJ_\theta 为评判分数函数,GθG_\theta 为生成函数,两者共享 θ\theta。真实质量函数为 qq^*。则:

E[Jθ(y)q(y)]0且与 Gθ 的偏差方向相关\mathbb{E}[J_\theta(y) - q^*(y)] \ne 0 \quad \text{且与 } G_\theta \text{ 的偏差方向相关}

对比:外部 reward model(参数独立)至少在初始时刻与生成器偏差方向无关。但它有另一个问题:分布外泛化失效(见 Q5)。


Q4. SPIN 收敛到 SFT 数据分布——为什么这是一个上界?实践中意味着什么?

SPIN4 的理论收敛条件是:当且仅当 πθt=pdata\pi_{\theta_t} = p_\text{data}(当前模型与人类 SFT 数据分布完全相同)时,损失梯度消失,训练停止。

这在数学上给出了一个严格的能力上界:

SPIN 极限策略=pdata(SFT 数据分布)\text{SPIN 极限策略} = p_\text{data} \quad \text{(SFT 数据分布)}

推论:

  1. 无法超越 SFT 数据质量:若 SFT 数据中存在错误、偏见或能力盲区,SPIN 收敛后的模型也会继承这些缺陷。SPIN 只是让模型"更像人类 SFT 数据",不能发现超越该数据的新能力。

  2. 负样本质量随迭代下降:第 tt 轮的负样本由 πθt1\pi_{\theta_{t-1}} 生成;随着 πθtpdata\pi_{\theta_t} \to p_\text{data},负样本质量越来越接近正样本质量,对比信号越来越弱。这在实践中表现为:早期迭代效果显著,后期迭代边际收益递减甚至归零。

  3. 与 STaR/ReST 的根本差异:STaR 类方法以任务正确性为过滤信号,理论上可以超越 SFT 数据(只要存在正确 rationale 就能学到)。SPIN 以与人类数据的区分能力为目标,天花板由人类数据质量决定。

实践含义:SPIN 适合作为"补齐 SFT 缺口"的工具(消除模型与人类数据分布之间的 gap),但不适合用作持续自我改进的无限循环——到了后期迭代,应切换为有外部验证信号的方法。


Q5. Reward Model 过优化:reward 上升/真实质量下降的 scaling-law 形状是什么?

Gao et al.8 系统研究了对 RM 优化程度(用 KL 散度 dd 衡量)与真实质量的关系,发现两者的曲线形状取决于优化方式:

大致函数形式(论文中拟合):

gold rewardd(αβlnd)\text{gold reward} \approx d\,(\alpha - \beta \ln d)

其中 α,β>0\alpha, \beta > 0d=DKLd = \sqrt{D_{\mathrm{KL}}},最优点 d=exp ⁣(αββ)d^* = \exp\!\left(\dfrac{\alpha - \beta}{\beta}\right)(令 dR/dd=0\mathrm{d}R/\mathrm{d}d = 0 得到)。超过 dd^* 后,真实质量随 KL 增大而下降。

关键 scaling 结论:α,β\alpha, \beta 的系数随 RM 参数量平滑变化——更大的 RM 有更高的 dd^*,即过优化"临界点"更晚到来,但临界点一定存在。这说明增大 RM 不能消除过优化风险,只能推迟

直觉:RM 是在有限数据上拟合的近似,策略在 RM 的分布外区域(高 KL 处)找到了"钻空子"的捷径。这是 Goodhart's Law 在 RL 中的定量表述。

实践防线:设置 KL 惩罚系数 β\beta;定期用 held-out gold reward(如人工评估或可验证答案)检查;避免在单一 RM 上迭代轮次过多。


Q6. 为什么 Ground-truth 可验证器(RLVR)比学习型 judge 更安全?

RLVR(Reinforcement Learning with Verifiable Rewards)由 DeepSeekMath11 系统化地应用于数学推理:对于有确定性答案的任务(数学题、代码单元测试),直接用程序化检查结果正确性作为奖励信号,而非训练一个 reward model。

安全性对比:

维度 学习型 Judge / RM Ground-truth 可验证器
信号真实性 近似(有拟合误差) 精确(规则/符号执行)
过优化风险 高(可被策略"钻空子") 极低(答案对错是二值事实)
分布外泛化 在训练分布外不可靠 与策略分布无关,始终可信
盲点继承 可能与生成器共享盲点 无参数,无盲点
适用范围 广泛(但不精确) 仅限可机械验证的任务

为什么"钻空子"对 RM 容易而对可验证器难:RM 的分布外行为未被约束,策略可以找到 RM 未见过的"高分但低质"输出。而程序化验证器只看最终结果是否符合规范——策略无法在"规范本身"上作弊(规范是外生的)。

局限:RLVR 的适用范围取决于任务的可验证性。自然语言生成、摘要、创意写作等任务没有唯一正确答案,无法直接套用。因此 RLVR 与学习型奖励并非替代关系,而是互补——在可验证任务上优先用 RLVR,在开放生成任务上必须依赖 RM + KL 约束。


Q7. 自我改进何时停滞?探索/多样性的角色是什么?如何经验性区分真实改进与 reward hacking?

停滞的三种根源:

  1. 过滤信号饱和:当模型对训练集中的所有问题都能答对,rejection sampling 产出的正确样本与已有训练数据几乎重复——梯度信号趋近于零。
  2. 分布收窄导致探索不足:如 Q2 所述,分布熵下降后,模型不再采样到足够多样的 rationale,难以从错误路径中恢复或发现新策略。
  3. 任务难度超出 bootstrapping 能力:对模型完全无能的问题,无法通过拒绝采样产出任何正确样本;需要外部课程(更简单的子问题、更强的教师模型)。

探索/多样性的角色:自我改进本质上是一个exploitation-exploration 权衡。每轮只保留正确样本是纯 exploitation;为维持改进,需要:

区分真实改进与 reward hacking 的经验性方法:

指标 真实改进的信号 Reward hacking 的信号
Proxy reward vs Gold reward 两者同步上升 Proxy 涨但 Gold reward 持平或下降
Held-out 评估集 未见题型上也涨点 只在训练分布内涨,分布外下降
人工抽查输出质量 推理步骤质量可见提升 表面流畅,步骤逻辑漏洞增多
输出多样性 分布熵维持或小幅下降 分布熵快速崩溃,输出高度重复
KL 散度趋势 缓慢增长且与 Gold 正相关 KL 快速增大,超过 Gao et al. 的 dd^*

黄金标准始终是:保留一个完全未被自训练过程接触的 held-out 评估集,定期用可信 oracle(人工或可验证答案)打分。 若这个分数持续上升,才能认定为真实改进。


参考文献 / References

均为经典承重方法的原始出处,已逐条核对(标题 + arXiv ID)。点上标跳转、点 ↩ 返回。

  1. Zelikman et al. STaR: Bootstrapping Reasoning With Reasoning. 2022. arXiv:2203.14465 — 迭代微调在正确 chain-of-thought 上,无需大规模 rationale 标注.
  2. Gulcehre et al. Reinforced Self-Training (ReST) for Language Modeling. 2023. arXiv:2308.08998 — Grow-Improve 离线 RL 循环,比在线 RLHF 样本高效.
  3. Yuan et al. Self-Rewarding Language Models. 2024. arXiv:2401.10020 — 同一模型兼任生成器与 LLM-as-Judge,用迭代 DPO 协同提升两者.
  4. Chen et al. Self-Play Fine-Tuning Converts Weak Language Models to Strong Language Models. 2024. arXiv:2401.01335 — SPIN:用前一轮自身作对手,仅需 SFT 数据即可自我改进.
  5. Bai et al. Constitutional AI: Harmlessness from AI Feedback. 2022. arXiv:2212.08073 — 宪法引导自我批评与修订;RLAIF 用 AI preference 替代人工无害性标注.
  6. Shinn et al. Reflexion: Language Agents with Verbal Reinforcement Learning. 2023. arXiv:2303.11366 — 语言反思存入 episodic memory,无权重更新的多轮自我纠错.
  7. Madaan et al. Self-Refine: Iterative Refinement with Self-Feedback. 2023. arXiv:2303.17651 — 冻结模型自循环:生成→批评→修订,无训练跨任务涨点.
  8. Gao et al. Scaling Laws for Reward Model Overoptimization. 2022. arXiv:2210.10760 — proxy reward 与 gold reward 随 KL 增大的分离曲线;RM 规模缩放律.
  9. Lightman et al. Let's Verify Step by Step. 2023. arXiv:2305.20050 — 过程监督(PRM)优于结果监督(ORM);PRM800K 数据集.
  10. Shumailov et al. The Curse of Recursion: Training on Generated Data Makes Models Forget. 2023. arXiv:2305.17493 — 递归训练于自产数据导致分布尾部消失(model collapse).
  11. Shao et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. 2024. arXiv:2402.03300 — RLVR(可验证奖励 RL)+ GRPO;程序化验证替代学习型 RM.
  12. Zuo et al. TTRL: Test-Time Reinforcement Learning. 2025. arXiv:2504.16084 — 无标注测试数据上以多数投票伪标签做 RL;"无验证器的 RLVR",质量取决于多数投票信号(非严格 maj@n 上界).
  13. Zhang et al. AFlow: Automating Agentic Workflow Generation. 2024. arXiv:2410.10762 — MCTS 在代码化工作流的算子空间搜索;不动权重、只优化工作流结构.
  14. Wang et al. Voyager: An Open-Ended Embodied Agent with Large Language Models. 2023. arXiv:2305.16291 — 可执行代码技能库 + 终身学习;冻结底座、能力沉淀在外部记忆.
  15. Thaman. Reward Hacking Benchmark: Measuring Exploits in LLM Agents with Tool Use. 2026. arXiv:2605.02964 — 13 个模型工具中介评估下的 reward-hacking 利用率(约 0%–14%);单一基准、极新预印本,仅供量级.