2.2 RLAIF 与宪法 AI 本节摘要:RLHF 最大的痛点是"要花大量钱和时间收集人类偏好"。RLAIF(Reinforcement Learning from AI Feedback)用一个大模型当裁判,替代人类做偏好标注,把成本压下来几个数量级。宪法 AI(Constitutional AI,CAI)更进一步:不靠反馈打分,而是给模型一套显式的"宪法"原则,让它先自己生成回答,再按原则自我批评、自我修订。本节讲两者的原理、实现骨架,以及它们各自的适用场景和新的风险——比如 AI 裁判的偏见怎么传给被训模型。
本节摘要:RLHF 最大的痛点是"要花大量钱和时间收集人类偏好"。RLAIF(Reinforcement Learning from AI Feedback)用一个大模型当裁判,替代人类做偏好标注,把成本压下来几个数量级。宪法 AI(Constitutional AI,CAI)更进一步:不靠反馈打分,而是给模型一套显式的"宪法"原则,让它先自己生成回答,再按原则自我批评、自我修订。本节讲两者的原理、实现骨架,以及它们各自的适用场景和新的风险——比如 AI 裁判的偏见怎么传给被训模型。
阅读完本节,你应当能够:
上一节我们看到,RLHF 的瓶颈是人类标注。一个中等规模的对齐项目,可能需要几万到几十万条偏好数据,每条都要人读两个长回答再判断优劣,成本动辄几十万。更要命的是,每次扩展到新场景(比如从英文对话扩到代码生成),都要重新标一批数据。这个速度根本跟不上业务迭代。
RLAIF 的想法很直接:既然标偏好本质是个"判断题",那能不能让一个足够强的 AI 来做这个判断? 一个能力强的模型(比如 GPT-4 这个量级)完全有能力判断"哪个回答更准确、更有用"。让它批量给候选回答打分或排序,把这些"AI 标的偏好"当成训练信号,就能省掉绝大部分人工。成本从"几十万人时"降到"几千次 API 调用",差了好几个数量级。
宪法 AI 则是从另一个角度切。它的观察是:RLHF/RLAIF 本质是"用奖励信号隐式地教会模型什么是好的",但模型学到的"好"是个黑盒,你不知道它到底内化了什么。宪法 AI 干脆显式化——把"我希望模型遵守的原则"写成一份清单(就叫宪法),让模型在训练时对照这份清单自己批评、自己改。这样对齐的目标是可读、可审计的,出了问题你能回去查是哪条原则没起作用。
RLAIF 的流程和 RLHF 几乎一样,唯一的区别是"奖励模型的训练数据来源"——RLHF 用人类标注的偏好对,RLAIF 用 AI 判断的偏好对。
AI 裁判的用法有两种:一种是让它直接给每个回答打一个绝对分数(1-10 分),另一种是让它比较两个回答并选出更好的那个(成对比较)。成对比较通常更稳定,因为绝对打分容易受 prompt 措辞影响。
def ai_judge(prompt, response_a, response_b, judge_model): """让 AI 裁判比较两个回答,返回更好的那个""" judging_prompt = f"""你是一个回答质量评估专家。 请比较针对同一个问题的两个回答,选出更好的那个。 判断维度:准确性、有用性、清晰度、安全性。 问题: {prompt} 回答A: {response_a} 回答B: {response_b} 请只输出 A 或 B,以及一句话理由。""" result = judge_model.generate(judging_prompt) # 解析结果,返回偏好标签 return "A" if result.strip().startswith("A") else "B" # 批量生成 AI 偏好数据,替代人类标注 def build_rlaif_dataset(prompts, policy_model, judge_model): pairs = [] for p in prompts: # 让当前策略模型生成两个不同回答(用不同采样) resp_a = policy_model.generate(p, temperature=0.7) resp_b = policy_model.generate(p, temperature=0.9) preferred = ai_judge(p, resp_a, resp_b, judge_model) pairs.append({ "prompt": p, "chosen": resp_a if preferred == "A" else resp_b, "rejected": resp_b if preferred == "A" else resp_a, }) return pairs
宪法 AI 的核心是"让模型对照原则自己改自己"。它不用奖励模型打分,而是用一套显式原则做约束。流程分三步:先让模型正常生成一个回答;然后给它一份"宪法",让它检查自己的回答有没有违反哪条原则,写出批评;最后让它根据批评修订出一个更好的版本。
宪法的例子可以很朴素,就是一份你想让模型遵守的原则清单:
CONSTITUTION = [ "不要生成可能伤害他人的内容", "必须尊重用户隐私,不索要不必要的信息", "应该提供准确信息,不确定时要明确说明", "不能协助违法或违背伦理的行为", "对待所有用户群体保持中立和尊重,不歧视", "承认自己的局限性,不假装全知", ] def constitutional_revise(prompt, initial_response, model): """让模型对照宪法自我批评并修订""" critique_prompt = f"""请审查以下回答是否违反了这些原则: {chr(10).join(CONSTITUTION)} 问题: {prompt} 回答: {initial_response} 请指出违反了哪些原则(如果没有,说"无明显违反"), 并说明如何改进。""" critique = model.generate(critique_prompt) if "无明显违反" in critique: return initial_response # 没问题就不用改 revise_prompt = f"""根据以下批评意见,改进原回答。 原问题: {prompt} 原回答: {initial_response} 批评: {critique} 原则: {chr(10).join(CONSTITUTION)} 请输出改进后的回答。""" return model.generate(revise_prompt)
这种自我修订生成的高质量回答,可以作为 SFT 数据再训练模型——模型就慢慢学会了"按宪法思考"。这叫"基于 AI 反馈的对齐"(RLAIF 的一种变体),它把原则从外部约束内化成了模型自己的行为习惯。
两者不是互斥的,常常组合使用。RLAIF 解决"奖励信号从哪来"的成本问题,宪法 AI 解决"对齐目标可不可读"的透明度问题。实际系统里,你可以用宪法原则指导 AI 裁判打分(让裁判按宪法判),既省成本又可审计。
| 维度 | RLHF | RLAIF | 宪法 AI |
|---|---|---|---|
| 反馈来源 | 人类 | AI 模型 | 模型自我修订 |
| 成本 | 极高 | 低 | 低 |
| 可解释性 | 黑盒奖励 | 黑盒奖励 | 显式原则,可审计 |
| 适合场景 | 资源充足、追求极致 | 快速迭代、降本 | 安全敏感、需透明 |
RLAIF 的质量取决于裁判模型。裁判越强,判断越准,但成本也越高。更微妙的问题是"偏见传承":裁判模型自带的偏见会通过偏好数据传给被训练的模型。如果裁判对某种风格、某种观点有偏好,被训模型就会学去模仿这种偏好,哪怕你的人类用户并不这么认为。
⚠️ 常见坑:用同一个模型家族当裁判和当被训模型,会出现"自我强化"——模型偏好自己生成的内容风格,越训越像自己,多样性丧失。建议裁判和被训模型用不同家族,或者引入多裁判投票降低单一偏见。
写宪法看着简单,实战很难。几个原则:第一,原则要可操作,别写"要做个好模型"这种废话,要写"不输出可执行的犯罪步骤"这种能判断的;第二,原则之间会冲突("要诚实"vs"要礼貌"),要约定优先级;第三,原则要覆盖你真实关心的维度,最好从过往的事故案例里反推。
一份好的宪法通常是分层的:顶层是几条不可动摇的红线(安全、合法),中间是行为规范(诚实、有用),底层是风格偏好(简洁、有温度)。层级清楚,冲突时知道谁让谁。
宪法 AI 的自我批评依赖模型"能识别自己的错误"。但模型的能力是有上限的——如果一个问题它本来就理解错了,它也很难批评出自己错在哪。这就像让一个不懂医学的人自查诊断,他查不出自己不知道的病。所以宪法 AI 对"模型能力边界内"的违规很有效,对"模型本身就没理解对"的问题效果有限。
💡 关键直觉:宪法 AI 不是万能的。它的价值在于"把对齐目标显式化、可审计",而不是"保证模型绝对正确"。一份好的宪法加自我批评能挡住大部分明显的违规,但挡不住模型认知盲区里的错误。后者还得靠外部评估和人类抽检。
| 场景 | 推荐 | 理由 |
|---|---|---|
| 快速验证、预算紧 | RLAIF | 成本低,能快速迭代 |
| 安全合规敏感 | 宪法 AI | 原则可审计,便于合规沟通 |
| 通用对话产品 | RLAIF + 宪法 AI 组合 | 既省成本又透明 |
| 高风险领域(医疗、法律) | RLHF 为主,RLAIF 辅助 | 关键判断不能全交给 AI |
下一节看一个绕过强化学习的新范式——DPO 直接用偏好数据优化策略,以及怎么用 HHH 框架评估对齐效果。
用 AI 当裁判解放了标注产能,但也引入了三类新问题,规模化之前必须想清楚对策。第一类是自我偏好:裁判模型会系统性偏爱和自己风格相近的回答,长此以往模型群会朝单一文风收敛,多样性流失。缓解办法是混用多个异构裁判,并在对比实验里定期插入"盲测人类样本"校准裁判与人的一致率。第二类是宪法原则的执行漂移:原则写得抽象("要有帮助且无害"),裁判的理解和执行就宽,同一原则在不同批次里打分口径不一。原则应该写成可判定的具体条款,最好每条附正反例,并且对裁判做少量示范标注来锚定口径。第三类是成本结构的变化:AI 反馈把标注成本换成了推理成本,当宪法很长、需要逐条自评修订时,一次批评-修订循环的 token 开销可能是原始生成的十几倍,做成本模型时别只算单次调用。
还有个容易被忽略的收益值得说:宪法是显式资产。人类偏好数据是隐式的——标注员的价值观藏在几万条对比里,没法审计也没法修改;宪法是白纸黑字的原则清单,出了争议可以定位到具体条款、修订后重新生成。对于要过合规审查的产品,这种可审计性本身就是卖点。工程上建议把宪法当版本化管理的产品文档对待:谁改的、为什么改、影响哪些下游行为,都要留痕。
补充一个判断 AI 反馈质量的具体方法:构造"已知答案"的探针集。取一批你已经确知好坏优劣的样本对(比如一个事实正确、一个事实错误),让裁判模型打分,看它能不能把分差拉对。这个探针集要覆盖你最在意的维度——安全性、事实性、指令遵循——每个维度几十对就够了。裁判模型换版本、宪法改条款后都重跑一遍探针,一致率掉了就先修裁判再继续生产。这个方法成本极低,但能把"AI 裁判靠不靠谱"从感觉变成数字,团队里值得指定专人维护这个探针集,它是对齐流水线的温度计。