# 自进化的大模型:STaR、Self-Rewarding、合成数据回流与宪法 AI——参数层与 prompt 层的汇合 **TL;DR:** 当 LLM 把自己的输出当训练数据反过来训练自己,参数层和 prompt 层的自进化就汇合了。STaR 让模型生成推理链、按答案对错筛掉错的、用对的再训练自己;Self-Rewarding 让模型当裁判给自己生成偏好数据、迭代 DPO;宪法 AI 让模型按一组原则自我批评修正,用 AI 反馈替代人类反馈。这三条路都有效,也都共享同一个根本风险——自我强化偏差,极端情况下表现为 model collapse。本篇给一个简化 STaR 循环的完整实现。 ## 为什么这很重要 回头看上一篇(prompt 层自进化)。OPRO、DSPy、TextGrad 解决的是"怎么让模型在固定权重下表现更好"。但 prompt 改到头,模型能力本身的天花板还在那里。要突破这个天花板,必须回到参数层——改权重。 改权重需要训练数据。传统做法是请人标注,成本高、慢、难规模化。2022 年起,出现了一类做法:**既然模型自己能生成内容(推理链、判断、改写),那为什么不直接用模型自己的输出来训练模型自己?** 这就是参数层 + prompt 层的汇合点。它的诱因很实际: - 标注成本。偏好标注("哪个回答更好")一个 pair 要几块钱到几十块钱人民币,要标注百万级 pair,成本惊人。 - 标注一致性。人类标注者之间分歧很大,尤其在"哪个回答更有帮助"这种主观任务上。 - 模型已经够强。GPT-3.5 / 4 这一档的模型,在某些任务上已经能当裁判、能生成像样的推理,把它的输出当训练数据是可行的。 这条路线对应自进化五层级的第 1 层(参数层),但它的"变异生成"和"信号采集"大量借助了 prompt 层的能力。所以本篇是上一篇的自然延伸——先用 prompt 层让模型产生变异(推理链、偏好判断、自我批评),再回流到参数层训练。 ``` ┌──────────────────────────────────────────────────────────┐ │ 参数层自进化 = prompt 层变异 + 参数层回流 │ │ │ │ prompt 层(产生变异) 参数层(回流) │ │ ┌────────────────┐ ┌──────────────────┐ │ │ │ 生成推理链 │ │ │ │ │ │ 生成偏好判断 │──筛选──▶ │ 用筛选后的数据 │ │ │ │ 自我批评改写 │ │ 微调/DPO 训练模型 │ │ │ └────────────────┘ │ → 权重 θ 更新 │ │ │ (STaR/CAI/SRLM) └──────────────────┘ │ │ ▲ │ │ │ │ │ │ │ └───── 更强的新模型 ──────┘ │ │ (下一轮用) │ └──────────────────────────────────────────────────────────┘ ``` 注意这个回路:更强的模型会产生更高质量的变异(推理链、判断),更高质量的变异回流后又让模型更强。这是一个会自我增强的正反馈环——这也是为什么这一层需要特别小心(见后面的 model collapse 和自我强化偏差)。 ## 核心概念 ### 三条主线,三种信号 | 方法 | 模型自己产生什么 | 用什么过滤 | 回流到参数层的方式 | |------|----------------|-----------|------------------| | **STaR** | 推理链(rationale) | 答案是否正确(客观真值) | SFT(监督微调) | | **Self-Rewarding** | 对同一问题的两个回答打分 | 模型自己的判断(无客观真值) | DPO(偏好优化) | | **宪法 AI** | 对自己回答的批评 + 改写 | 是否符合宪法原则 | SFT + RLAIF | 关键差异在第二列和第三列——过滤信号的来源不同,决定了方法的适用范围和失败模式。 ### 一个常被混淆的区分:自训练 vs 蒸馏 本篇涉及两个相关但不同的概念,容易混: - **自训练(self-training)/ 自蒸馏**:模型用自己的输出训练**自己**(同参数规模)。STaR、Self-Rewarding 都属此类。 - **知识蒸馏(distillation)**:**大**模型(teacher)生成数据,训练**小**模型(student)。Phi 系列用 GPT-3.5/4 级模型生成数据训练 3.8B 的小模型。 严格说,蒸馏不是"系统修改自身",student 和 teacher 是两个不同的系统。但它在工程上和自训练用同一套技术(合成数据 + 过滤 + 训练),且是"用 AI 输出当训练数据"这条路线最成功的落地。所以本篇把 Phi/Synthia 这类作为"合成数据回流"的工业实践讲,但会标注清楚它和纯自训练的区别。 ## 工作原理(简化的心智模型) ### 用"学生自己出题、自己改卷"来理解三种方法 想象一个学生在准备考试,但老师不在,只能靠自己。 **STaR** = 学生做数学题时不仅写答案,还写解题过程。做完核对答案,**只把做对的题的解题过程留下来**,反复抄写消化。下次遇到类似的题,他已经熟悉"什么样的解题思路能导向正确答案"。关键:他有标准答案,所以能精确地知道哪些解题过程是好的。 **Self-Rewarding** = 学生在做作文题。作文没有标准答案,怎么办?他**自己当阅卷老师**,给两个版本的作文打分,把"自己觉得好的"那版留下。问题是:如果他写作文的水平和改作文的水平是同一档,他可能给平庸的版本打高分——自己感觉良好,但实际没进步。Self-Rewarding 的论文发现一个反直觉现象:学生的写作能力和改卷能力会**一起提升**——改卷练多了,写作也变好了。但前提是初始水平不能太差。 **宪法 AI** = 学校给了学生一本《作文规范》(宪法):不能跑题、不能抄、要结构清晰。学生写完作文后,**对照规范自己批评自己**:"这段跑题了,改掉;这段太啰嗦,精简。"改完的版本作为训练材料。这里"宪法"是人类预先写的规则,但批评和改写都是模型自己做的——所以叫"AI 反馈"(RLAIF),区别于"人类反馈"(RLHF)。 三种方法的共同点:**都把模型的某种输出当训练信号**。差别在"输出是什么、靠什么判断好坏"。 ## 工作原理(详细机制) ### 一、STaR:用正确答案过滤推理链 STaR(Self-Taught Reasoner,Zelikman et al., NeurIPS 2022)的循环异常简洁: ``` ┌─────────────────────────────────────────────────────┐ │ STaR 循环 │ │ │ │ 问题集 Q(带标准答案) │ │ │ │ │ ▼ │ │ 用当前模型对每个问题生成推理链 + 答案 │ │ │ │ │ ▼ │ │ 过滤:只保留【答案正确】的(推理链, 答案)对 │ │ │ │ │ ▼ │ │ 用过滤后的数据 SFT 微调模型 → 得到更强的新模型 │ │ │ │ │ └──────── 用新模型进入下一轮 ──────▶ │ │ │ │ 关键:过滤靠"答案是否等于标准答案",不靠模型自己判断 │ └─────────────────────────────────────────────────────┘ ``` STaR 的过滤信号是**客观的**:数学题有标准答案,推理链导向对答案就保留,导向错答案就丢掉。这让 STaR 比纯自训练安全得多——它不会把错的推理链当成对的学进去。 STaR 的一个重要变体叫 **rationalization**:如果一个问题的推理链导向了错答案,STaR 会把标准答案作为提示喂给模型,让它"再想一条能导向这个答案的推理链"。这样能把原本做错的题也变成训练数据。这是个聪明的小设计——它把"错题"也利用起来了,而不是单纯丢弃。 STaR 的扩展 **Quiet-STaR**(Zelikman et al., 2024)走得更远:让模型学会在生成每个 token 时隐式地"先想一想"再说话。这是把推理链从显式的文字变成了隐式的内部计算。OpenAI 的 o1、DeepSeek-R1 这类推理模型,其训练流程里都能看到 STaR 思路的影子——用强化学习奖励那些导向正确答案的推理过程。 STaR 的局限:**依赖有标准答案的任务**。开放问答、创意写作这类没有客观真值的任务,STaR 的"答案过滤"这一步就做不了。这正是 Self-Rewarding 想解决的。 ### 二、Self-Rewarding:模型当裁判生成偏好数据 Self-Rewarding(Yuan et al., Meta, ICML 2024)针对的是 STaR 解决不了的开放任务。它的循环: ``` ┌─────────────────────────────────────────────────────┐ │ Self-Rewarding 循环 │ │ │ │ 指令集(开放任务,无标准答案) │ │ │ │ │ ▼ │ │ 当前模型对每个指令生成两个回答 A、B │ │ │ │ │ ▼ │ │ 【同一个模型】用 LLM-as-Judge 给 A、B 打分 │ │ 构造偏好对 (winner, loser) │ │ │ │ │ ▼ │ │ 用偏好对 DPO 训练模型 → 更强的新模型 │ │ │ │ │ └──────── 用新模型进入下一轮 ──────▶ │ │ │ │ 关键:打分靠"模型自己当裁判",没有客观真值 │ │ 风险:模型会给自己擅长风格的回答高分(自我强化) │ └─────────────────────────────────────────────────────┘ ``` Self-Rewarding 论文最值得记的发现:在 Llama 2-Chat 70B 上迭代三轮(M1→M2→M3),模型的**指令遵循能力**和**裁判能力(reward quality)同时提升**。也就是说,当裁判当得多了,写作本身也变好了。这两个能力相互促进——这是它能成立的关键。 但这里有个根本风险,论文也老实承认了:**模型给自己打分时,会偏向自己熟悉/擅长的风格**。如果模型一开始就偏好某种回答风格,它会给这种风格高分,于是下一轮模型更偏向这种风格,正反馈。Self-Rewarding 的有效性很大程度上依赖"初始模型已经足够强、足够通用"——如果起点太差,正反馈会放大缺陷而不是修正它。 ### 三、宪法 AI / RLAIF:用原则替代人类反馈 宪法 AI(Constitutional AI,Bai et al., Anthropic, 2022)解决的是 RLHF 的成本问题。传统 RLHF 要人类标注"哪个回答更好",宪法 AI 的做法是: 1. 写一组**宪法原则**(自然语言写的规则),比如"不要输出有害内容""如果不确定就承认不确定""对敏感话题保持中立"。 2. 模型生成一个回答后,**自己对照宪法批评自己**:"这段可能被解读为鼓励危险行为,违反了'无害'原则。" 3. 模型根据批评**改写**自己的回答,得到修正版。 4. 用"修正版 vs 原版"作为偏好对,构造训练数据。 5. 后续的 RL(RLAIF)就用这些 AI 生成的偏好,替代人类偏好。 ``` ┌─────────────────────────────────────────────────────┐ │ 宪法 AI 的自我批评循环 │ │ │ │ 用户 prompt + 当前模型的回答 R0 │ │ │ │ │ ▼ │ │ 【同一个模型】对照宪法原则批评: │ │ "R0 违反了原则 X,因为……" │ │ │ │ │ ▼ │ │ 【同一个模型】根据批评改写 → R1(修正版) │ │ │ │ │ ▼ │ │ 用 (prompt, R1) 做 SFT,或用 (R1>R0) 做 RLAIF │ └─────────────────────────────────────────────────────┘ ``` 宪法 AI 的核心创新不是"宪法"本身(人类写规则这件事不新),而是**把"批评-改写"这一步自动化、规模化**。传统 RLHF 里"哪个更好"要人来判,宪法 AI 里"哪个更好"由模型按宪法判——把人类从标注环里拿掉,换成一组预先写好的原则。这就是 RLAIF(Reinforcement Learning from AI Feedback)和 RLHF 的区别。 宪法 AI 的优势:规模化。一旦宪法写好,可以无限量生成训练数据。它的代价:宪法本身的质量决定一切——如果原则写得有偏差,模型的"自我批评"会朝偏差方向走。而且,自我批评仍然是模型自己做的,存在和 Self-Rewarding 类似的"自我强化"风险,只是被宪法约束住了一部分。 ### 四、合成数据回流与 model collapse 把上面几条路抽象一下,它们都是同一个模板的实例: ``` 大模型生成数据 → 过滤 → 用过滤后的数据训练(小)模型 → 重复 ``` 工业上最成功的应用其实是**蒸馏式**:用 GPT-4 级的大模型生成大量"教科书级"合成数据,训练一个 3.8B 的小模型。Microsoft 的 Phi 系列是代表——"Textbooks Are All You Need"路线。Phi-3-mini(3.8B 参数)在数学、编程、推理上能逼近几十 B 参数的模型,靠的就是精心设计的合成数据。 但这条路有一个被 Nature 论文严肃证伪的失败模式:**model collapse**。 Shumailov 等人 2024 年在 Nature 发表的"AI models collapse when trained on recursively generated data"证明了:如果一代模型用上一代模型生成的数据训练,几代之后,数据分布的尾部(少数、罕见的特征)会消失,输出越来越同质化,质量不可逆地下降。 ``` 第0代:真实数据(分布丰富,有尾部) ↓ 训练 第1代模型 → 生成第1代合成数据(尾部开始丢失) ↓ 训练 第2代模型 → 生成第2代合成数据(尾部进一步丢失) ↓ …… 第N代:输出集中在最常见的模式,少数特征消失 → "模型坍缩" ``` 为什么会坍缩?直观解释:模型学的是"最可能"的输出,所以它生成的数据会比真实数据更"平均"、更缺少极端值。下一代模型在这些更平均的数据上训练,又把分布进一步平均化。这是信息有损的——每代都在丢失真实分布里的细节。 Model collapse 给整个"合成数据回流"路线敲了警钟:**纯靠 AI 生成数据训练 AI,长期是不可持续的**。Phi 等成功案例之所以没坍缩,是因为它们混合了真实数据、做了严格过滤、且只蒸馏一两代(不递归)。但一旦互联网上 AI 生成的内容多到污染爬虫抓的训练语料,整个行业都会面临这个问题。 ## 代码示例 下面实现一个**简化的 STaR 循环**。它演示完整流程(生成推理链→按答案过滤→用过滤后的数据"训练"→下一轮),但把"训练"这一步简化(真实 STaR 要做梯度更新,这里用一个轻量的"在上下文里塞好的推理链作为 few-shot"来模拟模型变强)。 ```python """ 简化 STaR 循环 - 生成推理链 - 按答案是否正确过滤 - 用过滤后的"好推理链"作为 few-shot 演示(模拟 SFT 让模型变强) - 下一轮用增强后的 prompt 跑 不依赖训练框架,只依赖一个 LLM 调用函数。 替换 llm_call 即可真实运行。 """ import json from typing import List, Tuple, Dict, Optional # ============================================================ # 第 0 步:LLM 调用占位 # ============================================================ def llm_call(prompt: str, model: str = "gpt-4o-mini") -> str: """替换成你的 API 调用。""" raise NotImplementedError("请替换成你的 LLM API 调用") # ============================================================ # 第 1 步:任务集(带标准答案的数学题) # ============================================================ TASKS: List[Tuple[str, str]] = [ ("12 + 7 等于多少?", "19"), ("25 - 9 等于多少?", "16"), ("6 乘以 8 等于多少?", "48"), ("100 除以 4 等于多少?", "25"), ("3 的平方加 4 的平方等于多少?", "25"), ("一只猫有 4 条腿,5 只猫一共多少条腿?", "20"), ("从 1 加到 10 等于多少?", "55"), ("15 的两倍减 7 等于多少?", "23"), ] def build_solve_prompt(question: str, good_demos: List[Tuple[str, str]]) -> str: """ 构造让模型生成推理链的 prompt。 good_demos 是之前筛出来的"好推理链",作为 few-shot 演示。 随着循环推进,good_demos 越来越多 → prompt 越来越强 → 模拟 SFT 的"变强"。 """ demo_text = "" for q, r in good_demos[-3:]: # 只塞最近 3 个,避免 prompt 过长 demo_text += f"问题:{q}\n推理:{r}\n答案:[由推理得出]\n\n" return f"""请一步步推理并回答。 {demo_text}问题:{question} 推理:""" def parse_answer(response: str, target: str) -> Tuple[Optional[str], bool]: """ 从模型回复里抽出最终答案,判断对错。 返回 (抽到的答案字符串, 是否正确)。 """ # 简化:找回复里出现的数字 import re numbers = re.findall(r"\d+", response) if not numbers: return None, False answer = numbers[-1] # 取最后一个数字作为答案 return answer, answer == target def generate_rationale(question: str, good_demos: List[Tuple[str, str]]) -> str: """生成推理链。""" prompt = build_solve_prompt(question, good_demos) try: return llm_call(prompt).strip() except NotImplementedError: # 没接 API 的退化:拼一个模板推理链 return f"我需要计算 {question}(占位推理,未接 API)" # ============================================================ # 第 2 步:STaR 的一轮循环 # ============================================================ def star_round( good_demos: List[Tuple[str, str]], rationalize: bool = True, ) -> Tuple[List[Tuple[str, str, str, bool]], List[Tuple[str, str]]]: """ 跑一轮 STaR。 rationalize=True 时:做错的问题,把答案作为提示重新生成推理链 (论文里的 rationalization 步骤)。 返回 (本轮明细, 新增的好推理链)。 """ details = [] new_good = [] for question, target in TASKS: # 第一步:生成推理链 rationale = generate_rationale(question, good_demos) answer, correct = parse_answer(rationale, target) # 第二步:rationalization —— 做错了就把答案当提示重来一次 if not correct and rationalize: hint_prompt = ( f"问题:{question}\n" f"正确答案是 {target}。请写一条能推出这个答案的推理链:" ) try: rationale_v2 = llm_call(hint_prompt).strip() except NotImplementedError: rationale_v2 = f"因为 {target} 是正确结果(占位)" answer2, correct2 = parse_answer(rationale_v2, target) if correct2: rationale = rationale_v2 correct = True details.append((question, target, rationale[:50], correct)) # 第三步:过滤 —— 只保留答对的(推理链, 答案) if correct: new_good.append((question, rationale)) return details, new_good # ============================================================ # 第 3 步:主循环 # ============================================================ def star_train(n_rounds: int = 3): """ STaR 主循环。 每轮: 1. 用当前积累的"好推理链"作为 few-shot 演示(模拟模型变强) 2. 对所有问题生成推理链 3. 按答案过滤,保留对的 4. 把新筛出的好推理链并入演示池 """ good_demos: List[Tuple[str, str]] = [] print("STaR 循环") print("=" * 60) for rnd in range(1, n_rounds + 1): details, new_good = star_round(good_demos, rationalize=True) good_demos.extend(new_good) n_correct = sum(1 for _, _, _, ok in details if ok) acc = n_correct / len(details) print(f"\nRound {rnd}: 准确率 {acc:.2f} ({n_correct}/{len(details)})") print(f" 累计好推理链:{len(good_demos)} 条") for q, target, r_preview, ok in details: mark = "✓" if ok else "✗" print(f" {mark} {q} (目标={target}) 推理: {r_preview}...") print("\n" + "=" * 60) print(f"最终累计 {len(good_demos)} 条高质量推理链,可用于真正的 SFT 训练。") return good_demos if __name__ == "__main__": star_train(n_rounds=3) ``` 这个实现把"训练"简化成了"用筛出来的好推理链当 few-shot 演示"。真实 STaR 的训练步是用这些好推理链做 SFT(梯度更新权重),逻辑完全一样,只是最后一步换成 `trainer.train()`。这个简化版的价值在于:你能看清 STaR 的循环骨架,以及"过滤信号是客观答案"这个关键特性。 如果你想看 STaR 和 Self-Rewarding 在过滤信号上的对比,把 `parse_answer` 这一步换成"让模型自己打分"就是 Self-Rewarding 的雏形——但你会发现,没有客观答案做锚点,循环立刻变得不可靠。 ## 真实案例 ### 案例 1:STaR 与推理模型的崛起 STaR 原论文在 CommonsenseQA(常识问答)上把一个 6B 模型的准确率从 60% 多拉到 70% 多,靠的就是"生成推理链→按答案过滤→SFT"。这个思路后来被广泛吸收:OpenAI 的 o1、DeepSeek 的 R1 这类推理模型,其训练流程里都有"用导向正确答案的推理过程作为奖励信号"这一步,本质是 STaR 的强化学习版本。 Quiet-STaR(2024)进一步证明:让模型在生成中隐式地"先思考再说话",不需要显式的推理链标注,也能提升推理能力。这把 STaR 的思路从"显式 rationales"推进到"隐式 reasoning"。 ### 案例 2:Self-Rewarding 的能力共提升 Meta 的 Self-Rewarding 论文在 Llama 2-Chat 70B 上做了三轮迭代(M1→M2→M3)。关键结果不是某一轮涨了多少分,而是发现了一个规律:**模型的指令遵循能力和裁判能力同步提升**。也就是说,练裁判这件事本身让模型变得更强。这是 Self-Rewarding 能跑通的核心证据——如果裁判能力和写作能力是独立的,自我奖励就只是"自己夸自己",没有学习信号。 ### 案例 3:Phi 系列的合成数据路线 Microsoft 的 Phi 系列(Phi-1、Phi-2、Phi-3)是"用大模型生成教科书级合成数据训练小模型"最成功的工业案例。Phi-3-mini 只有 3.8B 参数,但在数学、编程、推理 benchmark 上能逼近几十 B 参数的开源模型。技术报告里的关键词是"textbook-like data"——不是随便生成,而是精心设计成"像教科书一样结构化、有教学价值"的合成内容。 Phi 的成功说明:合成数据本身不是问题,问题是合成数据的质量和多样性。但要注意 Phi 是**蒸馏式**(大模型生成数据训练不同的小模型),不是**递归式**(自己生成数据训练自己)。这两者的风险等级完全不同。 ### 案例 4:宪法 AI 让 Claude 变得无害 Anthropic 的宪法 AI 让 Claude 模型在没有大量人类有害性标注的情况下变得无害。流程是:模型生成回答→按宪法原则自我批评→改写→用改写版做 RLAIF。宪法里有一条原则是"不要帮助用户做危险的事",模型就会自我批评"我刚才那段可能被用来……"并改写。这套机制让 Anthropic 大幅减少了人类有害性标注的需求。 宪法 AI 的一个有意思的副产品:模型的回答会变得"自我审查"——有时候过度保守。这也是自我批评机制的副作用,需要在宪法里平衡"无害"和"有用"。 ## 权衡取舍以及何时不该使用 ### 自我强化偏差是根本风险 STaR、Self-Rewarding、宪法 AI 共享同一个根本风险:**模型用自己产生的信号训练自己,会把已有的偏好/缺陷放大**。 - STaR 相对安全,因为它有客观答案做过滤——错的推理链进不来。但如果任务本身有偏差(比如训练数据里某些类型的题少),STaR 会强化模型在"常见题"上的能力,忽视"罕见题"。 - Self-Rewarding 风险最大,因为它靠模型自己判断好坏。模型会偏向自己熟悉的回答风格。 - 宪法 AI 风险居中,宪法原则约束了一部分,但批评和改写仍是模型自己做的。 ### Model collapse 是长期风险 如果完全用合成数据递归训练(不混真实数据),Shumailov et al. 已经证明会坍缩。实际工程里要做的:**始终保留一份真实数据,合成数据只作为补充**;**严格过滤合成数据的质量**;**避免多代递归**。 ### 何时该用、何时不该用 - **该用 STaR**:任务有客观答案(数学、代码、有 ground truth 的推理),且想提升推理过程的质量。 - **该用 Self-Rewarding**:任务开放(无标准答案),但需要一个强起点模型,且能容忍一定的偏好固化。 - **该用宪法 AI**:需要对齐(无害、有用),且人类标注成本太高——但要接受宪法本身需要精心设计。 - **都不该用**:任务有充足的、高质量的人类标注数据。自进化的价值在"替代昂贵标注",不是"替代便宜标注"。如果人类标注又便宜又准,直接用人类标注更稳。 ## 关键要点 1. **本篇是参数层与 prompt 层的汇合点**。STaR、Self-Rewarding、宪法 AI 都先用 prompt 层能力(生成推理链、判断、批评)产生变异,再回流到参数层训练。这是上一篇(prompt 层自进化)的自然延伸。 2. **STaR 用客观答案过滤推理链,最安全**。它的核心是"只保留导向正确答案的推理链"——有客观真值做锚点,错的进不来。局限是依赖有标准答案的任务。它的强化学习版本(奖励导向正确答案的推理过程)是 o1、R1 这类推理模型的训练思路。 3. **Self-Rewarding 靠模型自己当裁判,能跑通但有自我强化风险**。Meta 的论文证明裁判能力和写作能力会一起提升,这是它成立的关键。但模型会偏向自己擅长的风格,需要强起点。 4. **宪法 AI 用"宪法原则 + 自我批评"替代人类反馈(RLAIF)**。优势是规模化、成本低;代价是宪法本身的质量决定一切,且自我批评可能过度保守。 5. **Model collapse 是合成数据回流的根本天花板**。纯递归训练几代,分布尾部消失、输出同质化。Phi 等成功案例靠的是混合真实数据 + 严格过滤 + 不递归,不是无限自我蒸馏。 6. **本篇的方法是下一篇(自进化 Agent)的基础**。STaR 的"生成→过滤→回流"循环,Self-Rewarding 的"自评→选优"机制,到了 agent 层会演化成"agent 跑任务→评估自己→改写自己的代码"——只是回写的对象从权重/指令变成了 agent 系统本身的实现代码。 ## 延伸阅读 **STaR 与推理**: - "STaR: Bootstrapping Reasoning With Reasoning"(arxiv 2203.14465, NeurIPS 2022) - "Quiet-STaR: Language Models Can Teach Themselves How to Think"(Zelikman et al., 2024) **Self-Rewarding**: - "Self-Rewarding Language Models"(arxiv 2401.10020, ICML 2024, Meta) - LLM-as-Judge 相关工作(Zheng et al., 2023)—— Self-Rewarding 的裁判机制基础 **宪法 AI**: - "Constitutional AI: Harmlessness from AI Feedback"(arxiv 2212.08073, Anthropic) - Anthropic 关于 RLAIF vs RLHF 的后续博客 **合成数据与 model collapse**: - "AI models collapse when trained on recursively generated data"(Shumailov et al., Nature 2024) - Phi-3 技术报告(Microsoft Research)—— 蒸馏式合成数据的工业实践 - "Textbooks Are All You Need"(Phi-1 论文)—— 教科书级合成数据的起源 **推理模型综述**: - OpenAI o1、DeepSeek-R1 相关技术报告 —— STaR 思路在推理模型上的工程化