news 2026/3/26 1:05:09

小白也能看懂的RLHF-PPO:原理篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小白也能看懂的RLHF-PPO:原理篇

原文: https://mp.weixin.qq.com/s/8O7W8–x14-b1d3M9IS_3w

LLM-RL往期文章推荐

小白也能看懂的RL-PPO

收藏!强化学习从入门到封神:5 本经典教材 + 8 大实战项目 + 7个免费视频,一站式搞定

小白也能看懂的RLHF:基础篇

在上一篇小白也能看懂的RLHF:基础篇中,我们从直觉的层面阐述了RLHF,中间有许多不严谨的地方,这一篇将从更加严谨的理论层面介绍RLHF。

这篇将从强化学习中的核心元素与LLM任务的对应关系开始,逐步引入RLHF解决了SFT中的什么问题。再讲解RLHF具体是怎么做的,如Reward Model(奖励模型)、Actor Model (演员模型)、Reference Model(参考模型)和Critic Model(评论家模型)这些模型各自的运行机制,以及它们是如何协作完成RLHF的,重点讨论了PPO算法的Actor模型、Ctritic模型的目标函数。最后,结合RLHF的计算过程,重温下RLHF是如何解决stf存在的问题。

1. 强化学习原理

强化学习(Reinforcement Learning, RL)作为机器学习的重要分支,目标是让智能体(agent)与环境(environment)不断交互,学习任意环境状态下的最优行为策略(policy),最终实现期望回报的最大化。形式上,可通过价值函数(Value Function)迭代优化达成最大化期望回报。

一句话总结,通过探索和反馈机制,在任意环境状态下给出最优决策。

这里仅列出LLM与强化学习对应的核心要素,见下表。

强化学习核心要素RL核心要素与LLM对应关系说明
智能体(Agent)被微调的LLM根据用户输入/提示(环境状态)生成响应(动作)
环境(Environment)用户输入/提示(Prompt)+ 模型已经生成的内容模型根据输入内容生成响应
动作(Action)模型生成的token模型在当前环境下做出的决策
奖励(Reward)奖励模型(RW)分数衡量模型生成文本的质量与偏好,指导模型优化,只在模型输出最后一个token才会打分,其他分数为0。
价值函数(Value Function)RLHF中的Critic Model(评论家模型)模型输出每个token后,继续采用当前策略能带来多大的未来收益

对于强化学习中的其他元素,可参考小白也能看懂的RL-PPO。

2. SFT之后,为什么还需要RLHF

在小白也能看懂的RLHF:基础篇中,从两个角度阐述为什么RLHF对LLM这么重要:a) sft的局限性: 如标注数据覆盖范围有限、无法融入人能价值观;b) RLHF是LLM微调的新范式:让模型边学遍有人类导师指导,根据导师的偏好调整模型参数。但并没有介绍为什可以这样做?这篇将从更底层的角度探讨"SFT之后,为什么还需要RLHF?"。

2.1 负反馈缺失的代价

如下图所示,我们将STF和RLHF类比学生(模型)解题的过程:SFT相当于学生已经拿到了老师的答案,先看一遍答案,再模仿老师的答案;RLHF就像奋发图强的学霸党,决心绝不看老师的答案,自己尝试解题,老师根据解题步骤和结果打分,学生根据老师的反馈(奖励分数)不断内化自己的知识(调整模型参数),优化解决思路。

本质上, SFT是将模型输出的概率分布接近标准答案,学习的模式是根据前文的信息预测下一个token,即P ( E ∣ A B C D ) P(E|ABCD)P(EABCD),让下个tokenE EE越接近标准答案越好,但它并不知道什么样的token是不能生成的,这就是负反馈缺失的代价。

这会导致一个现象,为了和标准答案相似,模型可能会认为P ( E ∣ A C D ) P(E|ACD)P(EACD)P ( E ∣ A B D ) P(E|ABD)P(EABD)等也该被提高概率,,但没有反馈机制告诉模型: “你这样回答虽然看着很像,其实并不对,下次不要这样干”。以P ( E ∣ A C D ) P(E|ACD)P(EACD)为例,缺失的token B和加上B token完全可能是相反的意思。

RLHF有负反馈啊,就是reward model,具体算法上怎么做的,下文有讲解。直觉上理解,就像学生练习做题,做对了老师给满分,中间结果对,给个步骤分,做错了给零分,还会在习题册上告诉你错哪里了。

2.2 loss计算的本质

SFT在预测下个tokenE EE时,只会参考A B C D ABCDABCD这些前文信息,不具备向后看的能力,即不会预测当前这个token对回答最终效果的影响,每个token的loss是平均的。换句话说,SFT是一种局部的、有偏的训练方法。

RLHF则不同,它具有全局观、微观视角。全局方面,RLHF首先会评估模型回答的整体效果,是好还是坏。微观方面,计算单个token对未来的影响程度,即从此刻开始到整个句子结束能够带来多大的收益,让模型能够从未来的视角审视,此刻更应该输出哪个token,每个token的loss权重是不同的。简单的说,RLHF是全局的、加权的训练方法,至于怎么加权,后面会有解释。

3. RLHF执行过程

下图是DeepSpeed-Chat中完整的 RLHF 训练流水线,严格遵循 InstructGPT 的三阶段训练逻辑,SFT、RW和PPO。

在正式介绍RLHF之前,我们先了解下RL-PPO中的四大模型:

  • Actor Model (演员模型π θ \pi_{\theta}πθ):用SFT后的模型作为初始模型,通过PPO训练调整参数,得到最终的模型,使其生成的回答更符合人类偏好,参数可变
  • Reference Model(参考模型π b a s e \pi_{base}πbase:SFT后的模型,用于限制Actor Model不要偏离Reference Model太远,参数冻结
  • Reward Model(奖励模型r θ r_{\theta}rθ:对模型回答打分,表示贴合人类偏好的程度,训练完后,在PPO中是参数冻结的;
  • Critic Model(评论家模型V t V_{t}Vt:用于预测期望总收益,为优势函数A t A_{t}At提供基线,使策略更新更稳定,参数可变

3.1 有监督微调(Supervised Finetuning, SFT)

让预训练模型学习人类如何回应查询,建立基础的指令遵循能力。

具体的执行过程如下

  • 数据输入:筛选高质量的<人类查询,人类回应> 标注数据对,例如各类问答、指令任务数据。
  • 微调过程:使用这些标注数据对预训练语言模型进行微调,使模型输出贴合人类的回答风格和逻辑,而非单纯的文本续写。
  • 输出产物:得到 SFT 模型,即PPO阶段中演员模型(Actor Model)的初始版本,具备基础的指令理解和回应能力。

3.2 奖励模型训练(Reward Model, RW)

我们知道,RLHF的终极目标是让模型学会按人类喜好作出回答,为了实现这个目标,需要有个模型评估模型生成内容的好坏,这就是奖励模型(Reward Model, RW)要干的活。

RW模型训练的大体过程:提供一组提示,让LLM生成多个回答,由人工按照既定的规则,对同个问题的多个回答排序,利用标注好的排序数据训练一个可量化人类偏好的RW。

假设有个问题x xx,模型给出两个不同的回答,由人工标注两种回答:y + y^+y+为好的回答,y − y^-y为不好的回答。我们希望训练出的RW模型r ( . ) r(.)r(.)能打出和人类一致的分数,即r ( x , y + ) > r ( x , y − ) r(x, y^+) > r(x, y^-)r(x,y+)>r(x,y)

基于概率形式的目标函数为

P ( y + > y − ∣ x ) = σ ( r ( x , y + ) − r ( x , y − ) ) P(y^+ > y^- | x) = \sigma(r(x, y^+)-r(x, y^-) )P(y+>yx)=σ(r(x,y+)r(x,y))

其中σ \sigmaσ是 sigmoid 函数,取值范围为0-1之间,r ( x , y + ) − r ( x , y − ) r(x, y^+)-r(x, y^-)r(x,y+)r(x,y)差值越大概率越接近1,说明RW更有可能选择好的答案。

基于所有样本的损失函数为

L R W ( θ ) = − E ( x , y + , y − ) ∼ D p r e f [ l o g σ ( r ( x , y + ) − r ( x , y − ) ) ] \begin{align} L^{RW}(\theta) = -E_{(x, y^+, y^-) \sim {D_{pref}}} [log\sigma(r(x, y^+)-r(x, y^-) )] \end {align}LRW(θ)=E(x,y+,y)Dpref[logσ(r(x,y+)r(x,y))]

这样我们就能训练出一个RW模型,识别模型输出内容的好坏,分数越高,表示模型输出内容越贴合人类偏好。

3.3 PPO微调(Proximal Policy Optimization,PPO)

以奖励模型的评分为反馈,通过RL-PPO进一步优化 SFT 后的模型,使其生成的回答更符合人类偏好。

1). 输入提示x xx到参考模型π b a s e \pi_{base}πbase(旧策略)和当前微调的模型π θ \pi_{\theta}πθ(新策略,对应上图中的π P P O \pi_{PPO}πPPO)。得到token序列

y ∼ π b a s e ( . ∣ x ) , y ∼ π θ ( . ∣ x ) y_{} \sim \pi_{base}(.|x),y \sim \pi_{\theta}(.|x)yπbase(.∣x)yπθ(.∣x)

2). 计算奖励分数,将微调模型π θ \pi_{\theta}πθ生成的序列y yy输入到奖励模型(Reward Model, RW),得到奖励分数r θ ( x , y ) r_{\theta}(x, y)rθ(x,y)

3). 评论家模型预测V t V_{t}Vt,根据价值函数V t V_{t}Vt和奖励分数r θ ( x , y ) r_{\theta}(x, y)rθ(x,y)计算优势A t A_{t}At,用以评估微调模型π θ \pi_{\theta}πθ本次输出的token比随机输出的优劣,辅助PPO决定该惩罚、奖励程度,让模型π θ \pi_{\theta}πθ的训练更稳健。

4). PPO更新模型π θ \pi_{\theta}πθ参数,这里为了防止策略模型π θ \pi_{\theta}πθ过度偏离参考模型π b a s e \pi_{base}πbase,有两种形式保证模型在有限的空间里微调参数,一种是引入PPO-KL散度,

L P P O − K L ( θ ) = E τ ∼ π b a s e t [ π θ ( a t ∣ s t ) π b a s e ( a t ∣ s t ) A t − β D K L ( π b a s e ( . ∣ x t ) ∣ ∣ π θ ( . ∣ x t ) ) ] \begin{align} L^{PPO-KL}(\theta) = E_{\tau \sim {\pi_{base}}}^t [\frac{\pi_\theta(a_t | s_t)}{\pi_{base}(a_t | s_t)} A_{t} - \beta D_{KL}(\pi_{base}(.|x_t) || \pi_{\theta}(.|x_t))] \end {align}LPPOKL(θ)=Eτπbaset[πbase(atst)πθ(atst)AtβDKL(πbase(.∣xt)∣∣πθ(.∣xt))]

另一种PPO-CLIP比较直接,在目标函数中,限制新旧模型的差距在约定的区间内:

L p p o − c l i p ( θ ) = E τ ∼ π b a s e t [ m i n ( π θ ( a t ∣ s t ) π b a s e ( a t ∣ s t ) A t , c l i p ( π θ ( a t ∣ s t ) π b a s e ( a t ∣ s t ) , 1 − ε , 1 + ε ) A t ) ] \begin{align} L^{ppo-clip}(\theta)=E_{\tau \sim {\pi_{base}}}^t [min( \frac{\pi_\theta(a_t | s_t)}{\pi_{base}(a_t | s_t)} A_{t}, \ \ clip(\frac{\pi_\theta(a_t | s_t)}{\pi_{base}(a_t | s_t)}, 1-\varepsilon,1+\varepsilon)A_{t})] \end {align}Lppoclip(θ)=Eτπbaset[min(πbase(atst)πθ(atst)At,clip(πbase(atst)πθ(atst),1ε,1+ε)At)]

4. PPO目标函数拆解

这节会为大家梳理下PPO公式(2)或(3)各个部分的具体含义。顺便提下,大家可能看到很多博主的文章,会按照「策略梯度」 -> 「REINFORCE」-> 「Actor-Critic算法」 -> 「Actor-Critic算法的各种优化方法」的思路讲解,最后再给出PPO的公式。回头再看前面的内容,可能和PPO的公式有较大差异,这里提醒下大家,这种讲法是为了帮助RL小白更好的理解PPO内容,从RL的发展历程来说的。这篇博文采用相反的思路,先给大家介绍 「为什么会需要RLHF」 -> 「RLHF的执行步骤」 -> 「RLHF的底层原理」,跳过中间复杂的推导过程,如果相对RL进一步了解,请看小白也能看懂的RL-PPO 。接下来将详细介绍下RLHF中的PPO底层原理。

4.1 重要性采样

在强化学习中,策略π θ \pi_{\theta}πθ的参数更新通过从环境中采集的数据训练得到的。但,直接用新策略π θ \pi_{\theta}πθ进行采样效率低下,需要更新一次参数,生成一次训练数据。为此,PPO采用重要性采样技术,利用旧策略π b a s e \pi_{base}πbase下采集的数据来估计新策略的期望。

简单来说,公式π θ ( a t ∣ s t ) π b a s e ( a t ∣ s t ) \frac{\pi_\theta(a_t | s_t)}{\pi_{base}(a_t | s_t)}πbase(atst)πθ(atst)即为重要性采样比率 。其中,π θ ( a t ∣ s t ) \pi_\theta(a_t | s_t)πθ(atst)π b a s e ( a t ∣ s t ) \pi_{base}(a_t | s_t)πbase(atst)分别表示新旧策略。在该比率的调配下,PPO能够重复利用旧策略下的采样数据,使其适用于新策略的更新,从而提高数据利用率。

4.2 优势函数

对于NLP任务来说,优势函数A t A_{t}At用于评估<状态,动作>对的相对优劣程度,衡量在给定的状态(用户输入/提示(Prompt)+ 模型已经生成的内容)下,Actor 模型π θ \pi_{\theta}πθ选取的动作(token)相对于随机选取的优劣,引导Actor 模型π θ \pi_{\theta}πθ向更优的方向调整,即提高A t A_{t}At为正的动作概率,降低A t A_{t}At为负的动作概率。

在实际应用中,优势函数A t A_{t}At的定义如下:

A t = R t + γ ∗ V t + 1 − V t \begin{align} A_t = R_t + \gamma*V_{t+1} - V_t \end{align}At=Rt+γVt+1Vt

其中,A t = R t + γ ∗ V t + 1 A_t = R_t + \gamma*V_{t+1}At=Rt+γVt+1表示按Actor 模型π θ \pi_{\theta}πθt tt时刻选择某个token后,能够获取的实际收益;V t V_{t}Vt为Actor 模型为随机选择某个token后,Critic模型预估的整体收益。

R t R_{t}Rt表示 Actor 模型产生每个token带来的即时收益。需要注意的是,R t R_{t}Rt的设计不止一种,例如可以将t = T t=Tt=T时替换成所有token的即时奖励的平均值,这里以deepspeed-chat的RLHF为例

R t = { − k l _ c t l ∗ ( l o g P θ ( a t ∣ s t ) P b a s e ( a t ∣ s t ) ) , t ≠ T − k l _ c t l ∗ ( l o g P θ ( a t ∣ s t ) P b a s e ( a t ∣ s t ) ) + r θ , t = T \begin{align} R_t = \begin{cases} -kl\_ctl *(log\frac{P_\theta(a_t | s_t)}{P_{base}(a_t | s_t)}), &\text t\not =T \\ -kl\_ctl *(log\frac{P_\theta(a_t | s_t)}{P_{base}(a_t | s_t)}) + r_\theta, &\text t=T \end{cases} \end{align}Rt={kl_ctl(logPbase(atst)Pθ(atst)),kl_ctl(logPbase(atst)Pθ(atst))+rθ,t=Tt=T

  • k l _ c t l kl\_ctlkl_ctl: 用以控制比例的缩放因子,是个常量,默认为0.1
  • l o g P θ ( a t ∣ s t ) P b a s e ( a t ∣ s t ) log\frac{P_\theta(a_t | s_t)}{P_{base}(a_t | s_t)}logPbase(atst)Pθ(atst): 可以理解为公式(2)后半部分的KL散度,如3.3部分中介绍的那样,主要为了防止 Actor Model 偏离Reference Model太远
  • r θ r_{\theta}rθ:Reward Model对整个句子的回答打分

我们再仔细研究下公式(5),可以得出以下结论:

  • t ≠ T t\not=Tt=T时,PPO算法应关注 Actor 模型是否在 Reference 模型的约束下生成 token
  • t = T t=Tt=T时,PPO算法除了关注 Reference 模型约束,还关注生成的整个句子符合人类偏好的程度r θ r_{\theta}rθ

从公式(4)可以看出,这里通过引入基于参考基线V t V_{t}Vt的优势函数引导Actor模型向更优的方向调整,相当于借鉴了时序差分 (Temporal-Difference, TD) 方法,该方法存在低方差,高偏差的问题。为进一步平衡方差和偏差,可以结合蒙特卡罗(Monte-Calo, MC),引入对未来优势的考虑,也就是 广义优势估计(Generalized Advantage Estimation, GAE)。

为了更方便描述,这里对公式(4)改写,

δ t = R t + γ ∗ V t + 1 − V t \begin{align} \delta_t = R_t + \gamma*V_{t+1} - V_t \end{align}δt=Rt+γVt+1Vt

将优势函数改写为A d v t Adv_{t}Advt

A d v t = δ t + γ ∗ λ ∗ A d v t + 1 \begin{align} Adv_t = \delta_t + \gamma* \lambda*Adv_{t+1} \end{align}Advt=δt+γλAdvt+1

公式(7)在实际使用中,会采用动态规划的方式计算, 首先计算最后时刻的A d v T Adv_{T}AdvT,对应的未来收益V T + 1 V_{T+1}VT+1和未来优势A d v T + 1 Adv_{T+1}AdvT+1均为0,则A d v T = R T − V T Adv_{T} = R_T - V_TAdvT=RTVT,对于T − 1 , T − 2 , . . . , t T-1, T-2, ..., tT1,T2,...,t时刻,可以通过公式(7),不断迭加后面时间步上的优势函数,就可以平衡真实奖励所带来的高方差和使用价值函数所带来的高偏差。

4.3 评论家模型V t V_{t}Vt的损失函数

$$
\begin{align}
L^{Critic}({\phi}) &= E_t [(R_t + \gamma V_{t+1} - V_t)^2]

\end {align}
$$

V t V_{t}Vt: Critic 模型对t tt时刻收益的预估,即未来和即时收益的整体预估

R t + γ ∗ V t + 1 R_t + \gamma*V_{t+1}Rt+γVt+1: 计算得到的即时收益R t R_{t}Rt,Critic 模型预测出t + 1 t+1t+1时刻之后的折损收益

5. 再谈RLHF对LLM的重要性

现在,我们结合第3、4部分的内容,尝试从算法的底层原理解释下第2部分提到的RLHF重要性:a) 负反馈机制; b) loss计算的优势。

5.1 RLHF是如何负反馈的

从公式(2)或(3)可以看出,RLHF是通过优势函数A d v t Adv_{t}Advt对模型的回答进行正负反馈的,当A d v t Adv_{t}Advt为正时,提高Actor对应动作的概率,相反,降低Actor对应动作的概率,这个A d v t Adv_{t}Advt函数就扮演着老师的角色,对学生的答题过程打分,并及时纠正学生错误的解题思路。

更细致的说,首先看学生是否答题完整,如果完整,通过RW模型给个整体分数,否则,RW模型打0分,对应公式(5)的计算过程。之后,通过A d v t Adv_{t}Advt中的即时反馈δ t \delta_{t}δt,查看解题步骤中是否有亮点、或严重错误,在RW的基础上加、减分数。

5.2 loss计算的优势

在2.2小节中说到,RLHF的loss具有全局、微观的视角,同时具有向后看的能力。这里的全局视角就是在loss函数中融入了RW模型的打分r θ r_{\theta}rθ,让Actor模型知道本次响应整体效果如何。微观的视角,通过A d v t Adv_{t}Advt函数计算每个token的即时反馈δ t = R t + γ ∗ V t + 1 − V t \delta_t = R_t + \gamma*V_{t+1} - V_tδt=Rt+γVt+1Vt(公式6),及未来的影响γ ∗ λ ∗ A d v t + 1 \gamma* \lambda*Adv_{t+1}γλAdvt+1(公式7),γ ∗ λ ∗ A d v t + 1 \gamma* \lambda*Adv_{t+1}γλAdvt+1可以让模型具备向后审视的能力,即模型本次输出的token对未来能够带来多大的收益。结合(7),可以发现,对于不同的token,公式(2)或(3)中的loss权重是不同的。

本文是RL系列内容的第三篇,从原理层面阐述了RLHF,下一篇我们将介绍常用的RLHF方法,敬请期待。

参考资料

  1. Illustrating Reinforcement Learning from Human Feedback (RLHF)
  2. DeepSpeed-Chat: Easy, Fast and Affordable RLHF Training of ChatGPT-like Models at All Scales
  3. 大语言模型 RLHF 全链路揭秘:从策略梯度、PPO、GAE 到 DPO 的实战指南
  4. 图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读
  5. 大模型中的强化学习
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 7:34:27

基于springboot的实习管理系统毕业论文+PPT(附源代码+演示视频)

文章目录基于springboot的实习管理系统一、项目简介&#xff08;源代码在文末&#xff09;1.运行视频2.&#x1f680; 项目技术栈3.✅ 环境要求说明4.包含的文件列表&#xff08;含论文&#xff09;前台运行截图后台运行截图项目部署源码下载基于springboot的实习管理系统 如需…

作者头像 李华
网站建设 2026/3/25 6:17:36

Hmsc建模实战:环境、系统发育与种间关联的综合考量

生态学家们一直在寻找更好的方法来研究多个物种如何在环境中共同生存。联合物种分布模型&#xff08;JSDM&#xff09;就是这样一个强大的新工具&#xff0c;它让我们能同时分析整个物种群落的分布规律。其中&#xff0c;一个名为Hmsc的R语言程序包受到了广泛关注。这个模型就像…

作者头像 李华
网站建设 2026/3/21 9:47:37

少儿编程Scratch3.0教程——02动作积木(基础知识)

在 少儿编程Scratch3.0教程——01初识Scratch 中我已经将Scratch软件的各个组成部分都简单的介绍了一下&#xff0c;接下来就会分不同的文章来详细介绍九种不同类型的积木&#xff0c;每种积木类型我都会分成两遍文章&#xff0c;第一篇是基础知识&#xff0c;是来说明每个积木…

作者头像 李华