人类反馈强化学习RLHF核心原理与实战:从对齐问题到奖励模型及PPO

发布时间:2026/10/26 4:18:57
人类反馈强化学习RLHF核心原理与实战:从对齐问题到奖励模型及PPO 去年我拿到一个对话应用的微调任务把预训练语言模型接到客服页面之后很快撞上一个尴尬场景用户问“我想注销账号怎么操作”模型回复了一整段账号注册流程。句子通顺、结构清晰、甚至分了三点但完全没有回答用户的问题。问题不在语言能力模型根本不理解“什么回答才是用户想要的”。后来我系统接触了人类反馈的强化学习RLHF才意识到这属于目标问题——不是让模型把句子写得更顺而是让模型学会按人的偏好去输出。这篇是“人类反馈的强化学习之书”系列的第一卷我会把RLHF的骨架拆开讲清楚它解决什么问题、三段式流程如何分工、数学原理为什么长那样、我实际复现时踩过的反直觉坑。适合正在做对话产品、智能助手或者单纯想把大模型对齐原理搞明白的读者。1. 为什么模型学会了生成文本却学不会“做正确的事”1.1 预训练目标函数决定了模型只学“衔接”不学“意图”先看预训练语言模型在做什么。无论模型多大、参数多少它的核心训练目标就是预测下一个词给定上文算每个候选词的概率然后最大化正确答案的似然。用公式表示就是P(y_t | x, y_1, ..., y_{t-1})模型学到的本质上是一张条件概率表——在某个上下文语境里哪个词接在后面最自然。这个目标非常强大它让模型从海量文本里吸收语法、常识、事实性知识但也带来了一个隐性代价模型关心的只是“接下来说什么才通顺”而不是“这句话对用户有没有用”。拿注销账号的例子来说模型看到“怎么操作”这个Query它联想的是“操作步骤”“注册流程”这类高频共现文本于是顺着概率往下一路生成。它没有一个机制去判断“用户此刻的真实意图是什么”“这条回答和问题的语义是否对齐”。这是预训练目标本身的结构性盲区不是模型变大了就能自动解决的。1.2 AI对齐问题能力越强跑偏越危险当模型能力弱的时候答非所问最多让人无语当模型能力越来越强它能生成的内容越来越像真的答非所问就可能造成实质后果——比如让用户照着错误指引执行操作。于是业界开始把这类问题统称为对齐Alignment我们希望模型的行为符合人类的意图与价值观而不仅仅符合文本概率分布。这个目标说起来简单做起来难因为“人类意图”没有精确的数学模型。你没法定义一个损失函数说“用户满意度误差0.3”你只能通过间接信号来逼近它。人类反馈的强化学习就是在这样一个背景下出现的。它的思路很直接既然模型的目标函数和人类意图不一致那我们就额外训练一个“打分器”来表达人类偏好再用强化学习让模型的目标从“追求通顺”逐渐迁移到“追求高分”。换句话说RLHF不是让模型更聪明而是让模型知道朝什么方向努力。围绕对齐其实还有不少其他做法比如在提示词里写规则约束、做基于规则的输出过滤、有监督地构造安全样本等等。这些方法不是没用而是覆盖不了“开放生成对错取决于主观判断”的场景。等你要处理的问题没有唯一正确答案时规则和过滤就很难穷举RLHF这类基于人类偏好的方案就成了主线。1.3 RLHF适用边界什么场景该用什么场景别硬上我在项目里吃过亏这里先给一个明确判断RLHF适合那些“答案没有标准对错、但人类能凭偏好排序”的任务。典型场景包括对话回复、文案生成、故事写作、总结润色——这些任务的输出质量高度依赖主观感受同样是通顺的句子有的让人舒服有的让人皱眉传统指标根本反映不出来。反过来如果任务有明确正确性比如数学计算、代码是否能编译、搜索结果是否包含特定事实那就别优先考虑RLHF直接用有监督信号或者规则校验更可靠。RLHF的信号来自人类主观判断它天然有噪声你拿它去学一个二元对错问题反而会把结果搞模糊。打个比方预训练像是招了一个业务能力很强但完全不懂企业文化的新人SFT像是带他熟悉公司流程RLHF则是告诉他“我们团队真正看重的做事方式是什么”。业务能力强是底子但能不能在团队里发挥价值取决于后者。2. 三段式流水线SFT、奖励模型、策略优化各自解决什么问题RLHF不是单一算法而是由三个环节组成的完整流水线。我第一次接触时总觉得乱后来把三个阶段分别理解成“教姿势”“当裁判”“做调整”思路就清晰了。2.1 第一阶段SFT先用人工数据教模型“答题姿势”SFTSupervised Fine-Tuning有监督微调是整个RLHF链条的起点。为什么需要这一步因为预训练模型是个“续写器”你给它指令它并不天然知道该输出“答案”它可能继续补充背景、提问、甚至顺着你的话闲聊。你需要一批人工写好的“指令-回答”样本让模型先学会问答格式和基本应答方式。这一阶段的数据量不需要很大主流做法大概在几千到几万条高质量人工样本之间。重点在于样本质量要去掉重复表达、冗长套话尽量覆盖目标场景的各种提问角度。训练方式就是传统的交叉熵损失让模型在给定指令下生成标准回答的概率变大。跑完这一步模型已经能像一个“有模有样但不够聪明”的助手了。2.2 第二阶段奖励模型把“我觉得好”变成数值SFT解决了表达方式但没有解决价值判断。两个回答都通顺哪个更符合用户预期这需要有一个裁判。奖励模型Reward ModelRM就是为这个目的训练的它接受指令和回答输出一个标量分数分数越高表示越符合人类偏好。训练RM需要的是偏好数据格式通常是成对比较同一个指令下有两个回答标注者选出更好的一个。为什么不用打分制我后面会专门展开说明简单讲就是人做相对排序比做绝对打分稳定得多。RM训练完成后它的参数是冻结的后面只负责给回答打分。2.3 第三阶段策略优化模型顺着奖励调整自己有了裁判接下来就是让选手进步。这一阶段把SFT得到的模型当作策略让它对一批指令生成回答交给RM打分然后用策略梯度类算法更新模型参数使得高分回答的概率上升、低分回答的概率下降。这一阶段最大的风险是“奖励黑客”模型会找到RM打分漏洞生成一些RM看起来高分但人类觉得奇怪的内容。所以实际训练中会在目标函数里加一个KL散度约束限制模型偏离SFT版本太远。这部分是整个RLHF的技术难点第三卷我会专门写PPO的实现细节这里先建立整体概念。三个阶段我用一张表梳理核心差异方便对照阶段输入输出核心目标常用数据量级SFT指令人工标准回答具备基本应答能力的模型学会格式与基础行为几千到几万条奖励模型指令回答对含偏好标注可给任意回答打分的模型表达人类偏好数万到数十万对策略优化指令生成回答RM打分行为对齐后的最终模型让行为质量提升复用RM阶段数据或新采数据三阶段环环相扣跳过SFT直接做RLHF不是不可以但模型连基本问答格式都没稳强化学习很容易在错误的行为基线上乱飘RM质量不够高策略优化就会跟着跑歪。所以老老实实按顺序来。3. 数学地基语言模型、KL散度与RLHF为什么长这样想真正理解RLHF不能只看流程图必须把底层数学瞄一眼。不需要做到能手推全部公式但要把几个核心概念的工具直觉建立起来。3.1 自回归语言模型就是在算条件概率链现代主流语言模型基本都是自回归结构生成一句话可以分解成每一步的条件概率乘积P(y_1, y_2, ..., y_T | x) ∏ P(y_t | x, y_1, ..., y_{t-1})训练时我们最大化这条概率链的对数似然推理时逐个采样下一个token。理解了这一点你就明白“模型生成回答”本质上是在一个巨大的概率空间里游走它每一步选择的方向都由上下文条件概率决定。这个分解有个重要推论模型无法跳出条件概率的框架去规划“整段回答的最终价值”。每一步都选局部最可能的词全局却可能走向一个用户不满意的结果。就像跟着导航在每个路口选“最顺的路”最后可能绕回了起点。3.2 高概率不等于高质量一个反直觉但很常见的事实如果概率高等于质量好那模型只需要在所有指令下都回复“这个问题比较复杂建议您咨询专业人士”就好了——这句话在任何语境下概率可能都不低但它不是一个好回答。现实里更常见的情况是模型输出一堆正确的废话或者只重复安全话术。这些内容在训练语料里高频出现条件概率很高但对用户的实际价值趋近于零。所以语言模型天然缺少一个“好与坏”的维度它只有“像与不像”“常见与不常见”。这正是RLHF介入的位置通过引入奖励模型的打分把训练目标从纯概率拉伸到“概率价值”的复合维度让模型在保持语言能力的同时学会向有价值的方向偏置。3.3 KL散度RLHF用来给模型“上锚”的关键工具KL散度Kullback-Leibler Divergence是衡量两个概率分布之间差异的指标定义式是D_KL(P || Q) Σ P(x) · log( P(x) / Q(x) )它回答一个直觉问题我用分布Q去近似分布P时平均会损失多少信息。KL散度是不对称的D_KL(P||Q)不等于D_KL(Q||P)但在RLHF里我们主要把它当作一个距离约束来用这个不对称性在数学推导上有意义工程上我们更关心它能不能阻止分布漂移。在RLHF中的角色很清晰策略优化每走一步模型分布都可能剧烈改变比如为了讨好RM而反复生成某种套路句式。KL惩罚相当于在目标和约束之间加了一根绳子一端是奖励高分另一端是不要偏离SFT模型太远两者博弈的平衡点就是最终策略。我的经验是第一次上手RLHF的人最容易忽视KL系数的调节。它太大模型学不到新东西它太小模型放飞自我。这个平衡没有固定答案每轮训练结束都要结合生成样本一起判断不能只看某个单一指标。4. 奖励模型内部构造从偏好样本到数值分数需要走过这些路奖励模型是RLHF里最容易被低估的组件。很多人以为反正是“给回答打分”拿个模型加个头训练就行实际做下来会发现RM质量几乎决定了整个RLHF的上限——策略优化再厉害裁判打分歪了选手练的方向就歪了。4.1 偏好数据长什么样为什么选成对比较而非直接打分RM训练数据的基本单位是一个偏好对同一个指令x下有两个回答y_a和y_b标注者指明哪一个更好。有些标注还会给“差不多”选项但主流实现通常过滤掉或直接丢给随机胜负避免模糊样本削弱训练信号。为什么用成对比较因为人的主观判断是相对的。你让标注者给单个回答打“4分还是5分”不同人的尺度千差万别但你让他在两个回答里选“哪个更好”稳定性高得多。这就像你问朋友“这家店好不好吃”不如问“这家店和旁边那家比怎么样”来得准确。实际构建偏好数据还有很多细节重点是同一指令要覆盖不同难度和类型避免偏好对集中在极端好坏样本上标注前要做一致性筛查比如相同问题标注两次剔除标注结果波动太大的标注员数据。我在项目中用到的经验是先跑一小批比如200条试标数据做一致性分析合格后再放大规模能省掉后面大量清洗成本。4.2 Bradley-Terry模型与RM损失函数RM是怎么从偏好对里学会打分的核心是一个叫Bradley-Terry的偏好模型。它假设每个回答背后存在一个真实但不可观测的潜在分数r(x, y)而“回答A比回答B好”的概率由两者的分数差经过sigmoid函数得到P(y_a 优于 y_b) σ( r(x, y_a) - r(x, y_b) )σ是sigmoid函数把分数差映射到0到1的概率区间。分数差越大A胜出的概率越接近1分数越接近越接近随机猜。这个建模非常巧妙它把相对比较转化成了绝对分数之间的差让模型可以学习一个稳定的标量打分函数。给定标注好的偏好对训练目标就是最大化对数似然等价于最小化下面的损失L_RM -E [ log σ( r(x, y_好) - r(x, y_差) ) ]实现时就是在预训练模型的最后一层隐藏状态之上接一个线性层输出维度为1得到标量reward。RM的初始化常选用SFT模型而不是原始基座模型因为SFT已经适应了指令问答场景能够更快学习到偏好信号。4.3 训练RM容易被忽略的细节长度归一化与相对分数的局限性第一回答长度归一化是必须处理的。如果不做归一化模型很容易学会“越长越好”——因为长回答包含了更多信息排序标注时往往占优势。常见做法是对奖励分数除以序列长度取平均或者除以对数长度。这个操作虽然简单但直接影响RM的公正性。第二要时刻记住RM输出的是相对偏好分数不是绝对质量分。不同指令域之间同一个分数的含义不可直接比较。比如“写诗”场景下的0.5分和“写代码”场景下的0.5分没有可比性。在训完RM后我习惯先跑一组验证集按照不同指令类型分组计算准确率而不是只看全局一个数字。第三数据规模需要和模型容量匹配。模型很小时喂几十万对偏好数据收益增长会迅速放缓模型很大时数据不足RM的泛化又会崩。一个务实的做法是先在几千对数据上跑通流程、确认代码逻辑和标注质量再扩大数据规模。5. PPO阶段实战笔记目标函数与几个必盯的指标三阶段里我花最多时间调试的其实是最后一段策略优化。这部分的工程复杂度不在理论而在于训练过程很不稳定稍不注意模型就从一个极端滑向另一个极端。5.1 RLHF目标函数奖励和KL惩罚怎么平衡策略优化阶段的目标函数长这样max E [ r(x, y) ] - β · D_KL( π_θ(y|x) || π_ref(y|x) )意思是对所有采样指令x、由当前策略π_θ生成的回答y我们要最大化RM给出的奖励r(x,y)同时要对当前策略和参考策略π_ref的KL散度施加惩罚β是惩罚系数。参考策略π_ref通常取SFT阶段的模型。为什么要锚定SFT而不是完全自由发挥因为SFT模型的行为模式是正常人类的近似表达奖励模型是从人类偏好里学出来的它本身也有盲区和噪声完全自由优化必然钻空子。KL惩罚就是防止策略跑出合理表达范围。β值的设定对训练影响极大。我通常从0.01到0.1之间起调然后观察KL变化。如果KL增长过快、而RM分数也快速上涨多半是β太小、模型在钻奖励的空子如果RM分数不涨说明β太大、模型被锚死。不少开源实现会动态调整β但我建议自己动手先摸一遍静态β。5.2 PPO为什么是主流选择重要性采样、clip与GAE传统策略梯度方法对每个样本只更新一次参数样本利用效率太低而RLHF每次生成回答的成本很高必须反复使用采样到的轨迹。PPO近端策略优化通过重要性采样实现off-policy更新用旧策略采到的轨迹来更新新策略的参数并用重要性权重修正两者分布差异。PPO最核心的机制是clip。它限制新旧策略的概率比不能偏离1太远一旦更新幅度超过阈值就截断梯度防止单次更新把模型推得太狠。这个设计的工程目的很直白RLHF训练数据噪声大奖励信号不稳定步子太大会直接把模型训成复读机。另一块是GAE广义优势估计它用来计算“这个token比其他token好多少”。简单理解就是对一段回答的奖励做时间维度上的减权和平滑单步噪声。实际实现里GAE的参数λ也好clip范围也好都不是玄学每改一个参数都能在训练日志和生成样本里看到明显差异。5.3 训练中必须盯住的核心指标我跑PPO训练时最常看的四个指标是RM分数均值、KL散度均值、token长度、clip触发比例。RM分数上升是好事但如果KL同时快速上升就需要警惕clip触发比例过高说明更新幅度太大通常要降低学习率或者增大batchtoken长度突变往往意味着模型在生成套路化长文本。比所有指标都重要的是每几百个step就要抽一批实际生成样本亲眼看。指标只能告诉你方向是否合理但“回答是否自然”“是否啰嗦”“是不是在讨好RM”只有人眼扫一遍才能判断。我曾经有一个训练过程所有指标都在正常范围内抽样本一看模型学会用“好的这是一个非常有意思的问题”开头接上大段空话——这是指标完全反映不出来的。6. 我在复现中看到的几个反直觉现象这一章我汇总几个我实操中踩过的坑它们几乎都不在经典教程框架里但迟早会碰到。6.1 RM分数上涨人类满意度反而下降奖励过度优化的经典症状我早期有一次训练RM分数曲线一路上涨我一度以为稳了。结果拿生成样本做人工评估发现回答开始出现大量“车轱辘话”——反复总结、堆砌关键词、用看似权威的句式掩盖内容空洞。这是典型的奖励过度优化模型找到了RM偏好的表面特征但那种特征和人类真正认可的质量并不完全一致。解决办法是双指标控制RM分数和KL散度一起画到图上人工评估集定期回归。当RM分数还在涨、但KL散度已经暴涨到偏离参考分布好几个单位时宁可提前停止也不要让它继续跑。这也解释了为什么RLHF训练终点不是RM分数最高点而是“RM涨、KL相对可控、人类评估通过”的交集区间。6.2 模型太小RLHF效果可能反而退步很多初学者以为RLHF是万能药小模型照做也会有提升。我亲测下来小模型的收益远小于大模型甚至在逻辑任务上出现下滑。原因在于SFT已经把模型的能力压榨得差不多RLHF并不会有增量能力只是重新分配行为偏好小模型容量有限分配完偏好之后还可能遗忘部分原本的技能。这背后有个残酷的现实对齐是有代价的。模型在追求高分的过程中可能会牺牲多样性、牺牲部分边缘知识、牺牲长文生成的连贯性。容量越小牺牲越明显。所以在小模型上做RLHF之前先想清楚“行为对齐”和“能力保持”哪个更不能接受。6.3 偏好数据不是越多越好数量会欺骗你我做过一组对照实验同一套SFT模型分别用1万、5万、20万对偏好数据训练RM再接到同一套PPO流程里。结果是20万对并没有线性优于5万对甚至在某些指令类型上还略差。原因不是数据有毒而是量大之后低质量标注的比例也会放大噪声样本开始主导梯度。真正影响RM质量的三要素是覆盖分布的广度、标注一致性的准确度、样本多样性。我后来只保留通过一致性筛选的数据并用聚类方法检查指令类型分布数据量砍掉一半RM验证集准确率反而提升了3个百分点。如果预算有限与其扩量不如把已有的数据清洗得更干净。6.4 单轮偏好RM面对多轮对话时会失准我在做多轮对话项目时发现单轮指令上的RM打分和人类在多轮上下文中的感受并不一致。一个单独看非常好的回答放在连续多轮对话里可能显得突兀比如突然结束语气过于正式、或者重复了上一轮已经说过的信息。RM不了解上下文它只根据当前指令和回答打分对这类问题天然失明。要缓解这个问题需要在偏好数据里加入多轮上下文标注时给模型完整的历史对话让它只对最后一轮回答做判断。数据结构从“指令-回答”变成“多轮上下文-回答”。这个改造开销不小但对对话产品来说是绕不开的投入。7. 学RLHF之前需要掌握什么学习路线与第二章预告第一篇文章作为系列开篇我不想一上来就堆代码。但我理解读者看完概念后最关心的是“接下来学什么、怎么少走弯路”。7.1 前置技能清单想真正上手RLHF不是装个深度学习框架就能跑需要先确认三块基础一是自回归语言模型的训练逻辑至少能自己完成一次简单的next token prediction微调理解损失函数、生成采样这些基本概念二是策略梯度算法的直觉明白REINFORCE为什么能“奖励高则概率大”知道PPO是在什么背景下被提出来的三是工程上能独立跑通基于Transformers库和PyTorch的训练循环会高并行训练、断点续跑、日志监控。如果这些还不熟我建议先补再上RLHF。否则你会在训练代码里迷失分不清是算法没写对还是模型本身没调好。7.2 章节地图与第二章内容预告这个系列我打算按四卷来写第一卷是概念与原理也就是你现在看的这篇第二卷构建奖励模型包括数据准备、训练、评估第三卷写PPO的实现细节给出可复现的脚本和调参记录第四卷聊评估与工程化比如上线之后怎么持续维护、怎么检测奖励漂移。下一卷里我会用一个小规模的基座模型构造一个尽量简化的偏好数据集实际训练一个奖励模型记录训练过程里loss收敛情况、验证集准确率、以及如何根据这些信号去调数据。那时你会发现第一遍记住的每一个概念都会变成排查问题的工具。7.3 我自己的实操体会最后说几个我反复踩过的经验一是先跑通最小闭环再调参。我见过太多人数据还没清洗就急着把训练跑上结果问题全堆在一起根本无法定位。先用几百条数据把整个流程跑穿确认每个模块输出符合预期再放大规模这才是高效路线。二是KL系数不一定从头到尾固定。实践中我会在前中期用稍高的KL稳住模型后期适当降低让模型更充分地学习偏好。三是指标只是辅助每天抽出时间看生成样本这是最笨但最有效的评估方法。我自己从接触RLHF到能独立跑通完整的训练链路大概走了三周其中大部分时间花在理解PPO实现和调试KL系数上。如果提前有人把这些概念和应用场景串起来讲这个周期可以压缩很多。这也是我写这个系列的原因希望读到的人每一步都踏在稳的地方。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询