衡阳网站建设 千度网络网站建设需要学什么语言

张小明 2026/1/11 9:13:10
衡阳网站建设 千度网络,网站建设需要学什么语言,云浮新增病例详情,宣城网站seo强化学习如何在大模型中应用#xff1f;#xff08;2#xff09;RLHF-PPO 文章目录强化学习如何在大模型中应用#xff1f;#xff08;2#xff09;RLHF-PPO1. RLHF-PPO的四个模型1.1 策略模型 / Actor Model1.1.1 Actor Model的作用1.1.2 Actor Model 的Loss计算1.1.3 N…强化学习如何在大模型中应用2RLHF-PPO文章目录强化学习如何在大模型中应用2RLHF-PPO1. RLHF-PPO的四个模型1.1 策略模型 / Actor Model1.1.1 Actor Model的作用1.1.2 Actor Model 的Loss计算1.1.3 NLP任务中即时奖励r t r_trt​的Token分配问题1.2. 评判模型 / Critic Model1.2.1 Critic Model的作用1.2.2 Critic Model的训练过程1.2.2.1 策略采样轨迹Actor 收集数据1.2.2.2 Critic 的目标值目标是什么1.2.2.3 怎么构造这个“目标值”1.2.2.4 得到 Critic 的训练目标1.2.3 Critic Model的Loss1.3 参考模型 / Reference Model1.3.1 Reference Model的作用1.3.2 Reference Model对Actor Model的策略约束1.4 奖励模型 / Reward Model1.4.1 Reward Model的作用1.4.2 Reward Model的训练过程1.4.3 Reward Model的Loss1.4.3.1 Sigmoid 形式1.4.3.2 Softmax形式2. RLHF-PPO 系统梳理2.1 训练流程梳理2.1.1 Step1采样Actor生成轨迹2.1.2 Step2KL惩罚计算2.1.3 Step3Reward Model 计算整体评分2.1.4 Step4构造每步 Reward 序列2.1.5 Step5Critic Model估计价值2.1.6 Step6Advantage 估计GAE2.1.7 Step7计算 PPO 目标 Ratio2.1.8 Step8Actor 策略更新PPO loss2.1.9 Step9Critic 更新Value Loss2.1.10 Step10LM Loss非必须2.2 RLHF‑PPO 训练伪代码2.3 RLHF-PPO的优缺点2.3.1 优点2.3.2 缺点3. Preview本文将在前文基础上以PPO为例展开RLHF在NLP或LLM语境下的整体框架想直接梳理整体RLHF-PPO流程的可以直接看第二部分哦1. RLHF-PPO的四个模型RLHF-PPO包含四个模型在RLHF-PPO过程中Actor/Critic Model需要训练Reward/Reference Model不用训练Actor Model策略模型要训练的目标语言模型Actor模型直接用SFT训练出的模型进行初始化Critic Model评判模型预计期望总收益Critic模型在SFT模型的基础上加数值头后训练得到Reward Model奖励模型计算即时收益Reward模型在SFT模型的基础上加数值头后训练得到这里是指奖励模型训练不是指RLHF-PPO训练Reference Model参考模型它的作用是在RLHF阶段给语言模型增加一些“约束”防止语言模型训歪。Reference 模型直接用SFT训练出的模型进行初始化后续对各个Model分开讲解的时候也会带到其他的Model所以需要大家先对四个模型有个简单的了解整体框架如下图所示具体四个模型是做什么的如何交互整个框架为什么这么设计我会在下面详细展开1.1 策略模型 / Actor Model1.1.1 Actor Model的作用Actor Model的作用是在给定 prompt前缀s t s_tst​下产生下一个 token策略π θ \pi_\thetaπθ​并通过 PPO 迭代更新使整段回复的回报最大显而易见Actor Model是参与RLHF-PPO的训练的直接用SFT训练出的模型进行初始化对应图中的Step1训练目的是让Actor模型能产生符合人类喜好的回复输入给Actor模型用户查询将产生的response和query一起计算损失用于更新Actor模型那Actor Model的Loss该如何计算呢1.1.2 Actor Model 的Loss计算1最初的Actor Model Loss强化学习的核心目标是最大化累积奖励max ⁡ π E τ ∼ π [ ∑ t 0 T γ t r ( s t , a t ) ] \begin{equation}\max_\pi\mathbb{E}_{\tau\sim\pi}\left[\sum_{t0}^T\gamma^tr(s_t,a_t)\right]\end{equation}πmax​Eτ∼π​[t0∑T​γtr(st​,at​)]​​其中V t V_tVt​表示t时刻预期收益π ( a t ∣ s t ) \pi (a_t | s_t)π(at​∣st​)表示采取a t a_tat​动作的概率由上Actor Model的损失可以定义为L o s s A c t o r − ∑ t T V t log ⁡ π ( a t ∣ s t ) \begin{equation}Loss_{Actor}-\sum_t^TV_t\log\pi(a_t|s_t)\end{equation}LossActor​−t∑T​Vt​logπ(at​∣st​)​​当Critic评估的状态价值V t V_tVt​为正时应该增加该动作的概率更直观的来看当某步“好”V t V_tVt​大时就增大该步被采样的对数概率反之减小2将V t V_tVt​换成优势函数A t A_tAt​V t V_tVt​是Critic模型预测出来的采取行动a t a_tat​后的实际收益为Q ( s a , a t ) r t γ V t 1 Q(s_a, a_t) r_t \gamma V_{t1}Q(sa​,at​)rt​γVt1​PPO这类On-Policy算法采用GAE计算的优势A t A_tAt​A t ( r t γ V t 1 − V t ) γ λ A t 1 \begin{equation}A_t(r_t\gamma V_{t1}-V_t)\gamma\lambda A_{t1}\end{equation}At​(rt​γVt1​−Vt​)γλAt1​​​λ \lambdaλ是GAE的超参不了解GAE的可以看一下我的这篇文章GAE-Paper2Code替换后Loss变成L o s s A c t o r − A t l o g π ( a t ∣ s t ) \begin{equation}Loss_{Actor}-A_tlog\pi(a_t|s_t)\end{equation}LossActor​−At​logπ(at​∣st​)​​3引入重要性采样为了允许同一批数据多轮minibatch更新这也是PPO原论文surrogate objective提到的关键点引入重要性采样后的Loss变成消除对数计算L o s s A c t o r − A t π ( a t ∣ s t ) π o l d ( a t ∣ s t ) \begin{equation}Loss_{Actor}-A_t\frac{\pi(a_t|s_t)}{\pi_{old}(a_t|s_t)}\end{equation}LossActor​−At​πold​(at​∣st​)π(at​∣st​)​​​4引入PPO关键优化Clip因为我们反复使用旧策略采到的样本需用r t π / π old r_t\pi/\pi_{\text{old}}rt​π/πold​做重要性修正但比值可能很大更新会炸所以PPO用裁剪目标稳定训练Loss变成L o s s A c t o r − m i n ( A t π ( a t ∣ s t ) π o l d ( a t ∣ s t ) , A t c l i p ( π ( a t ∣ s t ) π o l d ( a t ∣ s t ) , 1 − ϵ , 1 ϵ ) ) \begin{equation}Loss_{Actor}-min(A_t\frac{\pi(a_t|s_t)}{\pi_{old}(a_t|s_t)},A_tclip(\frac{\pi(a_t|s_t)}{\pi_{old}(a_t|s_t)},1-\epsilon,1\epsilon))\end{equation}LossActor​−min(At​πold​(at​∣st​)π(at​∣st​)​,At​clip(πold​(at​∣st​)π(at​∣st​)​,1−ϵ,1ϵ))​​这便是PPO Actor_Loss的最终形式1.1.3 NLP任务中即时奖励r t r_trt​的Token分配问题由式3我们可知优势A t A_tAt​的计算需要即时奖励r t r_trt​那在NLP任务中奖励信号是如何分解到Token级的呢更直观一些来理解这个问题模型生成的回复是一个Token一个Token逐步生成的并且只有生成一个完整的回复时Reward Model会反馈给Actor Model一个分数来衡量整体response的好坏具体如何反馈会在后续Reward Model部分展开但为了用 PPO 这类逐步策略优化算法我们必须把这个整体分数拆分成每个 Token 的“奖励信号”那具体奖励是如何分配到每个Token的呢如果不进行奖励Token级拆分那Token级的奖励序列就会变成r 1 0 , r 2 0 , . . . , r T − 1 0 , r T R M s c o r e \begin{equation}r_10,r_20,...,r_{T-1}0,r_T\mathrm{RM~score}\end{equation}r1​0,r2​0,...,rT−1​0,rT​RMscore​​这也能 Work但非常稀疏PPO 性能会很差接下来我们看看是如何拆分Token级的即时奖励的Token级的“即时奖励”由两部分组成1Token级的KL惩罚为了维持生成内容不偏离原始语言模型Reference Policy每步都加一个 KL 惩罚作为“即时奖励”r t K L − β ⋅ K L ( π θ ( ⋅ ∣ s t ) ∥ π r e f ( ⋅ ∣ s t ) ) \begin{equation}r_{t}^{\mathrm{KL}}-\beta\cdot\mathrm{KL}{\left(\pi_{\theta}(\cdot\mid s_{t})\parallel\pi_{\mathrm{ref}}(\cdot\mid s_{t})\right)}\end{equation}rtKL​−β⋅KL(πθ​(⋅∣st​)∥πref​(⋅∣st​))​​其中π θ \pi_\thetaπθ​是当前策略π ref \pi_{\text{ref}}πref​是冻结的参考 LM比如 SFT 模型β \betaβ是一个权重2回合末整体从Reward Model获取的奖励Reward Model 给出的整体奖励R R M ( x , y ) \begin{equation}R_{\mathrm{RM}}(x,y)\end{equation}RRM​(x,y)​​这个分数只在生成结束时出现将两部分合在一起就可以得到每步的即时奖励r t r_trt​r t { − β ∗ K L t , t T − β ∗ K L T R R M ( x , y ) , t T \begin{equation}r_t\begin{cases}-\beta*\mathrm{KL}_t,tT\\-\beta*\mathrm{KL}_TR_{\mathrm{RM}}(x,y),tT\end{cases}\end{equation}rt​{−β∗KLt​,−β∗KLT​RRM​(x,y),​tTtT​​​​把KL散度展开也可以写为r t { − β ∗ ( log ⁡ π ( a t ∣ s t ) π r e f ( a t ∣ s t ) ) , t ≠ T − β ∗ ( log ⁡ π ( a t ∣ s t ) π r e f ( a t ∣ s t ) ) r t , t T \begin{equation}r_t\begin{cases}-\beta*(\log\frac{\pi(a_t|s_t)}{\pi_{ref}(a_t|s_t)}),t\neq T\\-\beta*(\log\frac{\pi(a_t|s_t)}{\pi_{ref}(a_t|s_t)})r_t,tT\end{cases}\end{equation}rt​{−β∗(logπref​(at​∣st​)π(at​∣st​)​),−β∗(logπref​(at​∣st​)π(at​∣st​)​)rt​,​tTtT​​​​我们可以用更直观的角度来理解上式当 t T 时当一个回复的Token没有生成结束时考虑的是“生成这个 token 跟参考策略相比差了多少”是逐 token的即时奖励。当 t T 时一个回复的Token全部生成结束时考虑的是策略模型是否遵从了参考模型的约束和真正的即时收益r t r_trt​也只有最后时刻的r t r_trt​计算对整个用户查询回复的奖励值其余时刻的即时奖励就用策略模型与参考模型之间的距离。Reward Model 只负责评估整个回复的好坏但我们通过“终止奖励逐 Token KL 惩罚”的组合把这个整体评分有效分配到了每一 Token上供 PPO 计算 advantage 和更新策略。1.2. 评判模型 / Critic Model1.2.1 Critic Model的作用在Actor Model部分的Loss函数部分曾提到“V t V_tVt​是Critic模型预测出来的”那Critic Model的作用也很清晰了负责估计当前状态s t s_tst​的“未来收益”V ( s t ) V(s_t)V(st​)作为基线用来计算优势A t A_tAt​从而指导策略更新显而易见Critic Model也要参与RLHF-PPO的训练那问题就来了Critic Model是怎么训练的1.2.2 Critic Model的训练过程在 PPO 里Critic 不是为了评价 Reward Model 的分数本身而是为了给 Actor 提供一个价值基线value baseline从而计算优势Advantage让策略更新更稳健、方差更低Critic Model的训练过程如下1.2.2.1 策略采样轨迹Actor 收集数据先用当前的策略模型也就是 Actor去 生成很多轨迹Trajectory如下所示状态: s_0 → 生成 token a0 → 得到奖励 r0 → 进入 s_1 状态: s_1 → 生成 token a1 → 得到奖励 r1 → 进入 s_2 ... 直到 generate 完整 response终止这些轨迹的组成为①s t s_tst​状态②a t a_tat​token③r t r_trt​即时奖励经 Reward Model KL 组合④s t 1 s_{t1}st1​下一个状态1.2.2.2 Critic 的目标值目标是什么Critic Model输出V ϕ ( s t ) \begin{equation}V_\phi(s_t)\end{equation}Vϕ​(st​)​​这是 Critic 对“**从s t s_tst​开始未来所有奖励总和”**的估计值但实际上 Critic 不能直接观测真实未来回报它只能用采样的轨迹来“近似”真实值1.2.2.3 怎么构造这个“目标值”当然是广义优势估计GAE了A t G A E δ t γ λ A t 1 G A E \begin{equation}A_t^{\mathrm{GAE}}\delta_t\gamma\lambda A_{t1}^{\mathrm{GAE}}\end{equation}AtGAE​δt​γλAt1GAE​​​其中δ t r t γ V ϕ ( s t 1 ) − V ϕ ( s t ) \begin{equation}\delta_tr_t\gamma V_\phi(s_{t1})-V_\phi(s_t)\end{equation}δt​rt​γVϕ​(st1​)−Vϕ​(st​)​​具体的GAE内容可以看我之前的文章GAE-Paper2CodeGAE把这种误差做了指数平滑得到一个更稳健的优势估计1.2.2.4 得到 Critic 的训练目标从优势估计的定义可得A t G A E ( r t γ V ϕ ( s t 1 ) − V ϕ ( s t ) ) γ λ A t 1 G A E \begin{equation}A_t^{\mathrm{GAE}}(r_t\gamma V_\phi(s_{t1})-V_\phi(s_t))\gamma\lambda A_{t1}^{\mathrm{GAE}}\end{equation}AtGAE​(rt​γVϕ​(st1​)−Vϕ​(st​))γλAt1GAE​​​可以将上式改写为Critic的目标价值V t t a r g e t V ϕ ( s t ) A t G A E \begin{equation}V_t^{\mathrm{target}}V_\phi(s_t)A_t^{\mathrm{GAE}}\end{equation}Vttarget​Vϕ​(st​)AtGAE​​​展开一下V t t a r g e t V ϕ ( s t ) ( r t γ V ϕ ( s t 1 ) − V ϕ ( s t ) ) γ λ A t 1 G A E \begin{equation}V_t^\mathrm{target}V_\phi(s_t)(r_t\gamma V_\phi(s_{t1})-V_\phi(s_t))\gamma\lambda A_{t1}^\mathrm{GAE}\end{equation}Vttarget​Vϕ​(st​)(rt​γVϕ​(st1​)−Vϕ​(st​))γλAt1GAE​​​整理一下V t t a r g e t ( r t γ V ϕ ( s t 1 ) ) γ λ A t 1 G A E \begin{equation}V_t^{\mathrm{target}}(r_t\gamma V_\phi(s_{t1}))\gamma\lambda A_{t1}^{\mathrm{GAE}}\end{equation}Vttarget​(rt​γVϕ​(st1​))γλAt1GAE​​​上式即为Critic理想的目标值它汇总了①实际观察到的奖励r t r_trt​②Critic 对下一个状态价值的估计③Advantage 平滑的信息1.2.3 Critic Model的LossCritic Model 的Loss与Actor-Critic模型的评估模型损失一致用 **MSE均方差**让自己预测的V ϕ ( s t ) V_\phi(s_t)Vϕ​(st​)尽可能接近由采样 GAE 得出的“目标价值”V t target V_t^{\text{target}}Vttarget​L o s s C r i t i c ( V ϕ ( s t ) − V t a r g e t ( s t ) ) 2 \begin{equation}Loss_{Critic}(V_\phi(s_t)-V^{\mathrm{target}}(s_t))^2\end{equation}LossCritic​(Vϕ​(st​)−Vtarget(st​))2​​展开可得L o s s C r i t i c [ V ϕ ( s t ) − ( r t γ V ϕ ( s t 1 ) γ λ A t 1 G A E ) ] 2 \begin{equation}Loss_{Critic}[V_\phi(s_t)-(r_t\gamma V_\phi(s_{t1})\gamma\lambda A_{t1}^{GAE})]^2\end{equation}LossCritic​[Vϕ​(st​)−(rt​γVϕ​(st1​)γλAt1GAE​)]2​​1.3 参考模型 / Reference Model1.3.1 Reference Model的作用在RLHF-PPO框架中Reference Model 是一个不更新、不训练的语言模型它在 RLHF-PPO 训练过程中始终保持不变它的存在不是为了提供奖励或做价值判断而是约束 Actor 的行为那具体是如何约束的呢1.3.2 Reference Model对Actor Model的策略约束在2.3中我们曾详细展开NLP任务中即时奖励r t r_trt​的Token分配问题其中Token级的即时奖励包含的r t K L − β ⋅ K L ( π θ ( ⋅ ∣ s t ) ∥ π r e f ( ⋅ ∣ s t ) ) \begin{equation}r_t^\mathrm{KL}-\beta\cdot KL(\pi_\theta(\cdot|s_t)\parallel\pi_\mathrm{ref}(\cdot|s_t))\end{equation}rtKL​−β⋅KL(πθ​(⋅∣st​)∥πref​(⋅∣st​))​​就是来自Reference Model的具体的优化目标就是max ⁡ π E x ∼ D , y ∼ π [ r ( x , y ) − β D K L ( π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ) ] \begin{equation}\max_\pi E_{x\sim\mathcal{D},y\sim\pi}[r(x,y)-\beta D_{KL}(\pi(y|x)||\pi_{ref}(y|x))]\end{equation}πmax​Ex∼D,y∼π​[r(x,y)−βDKL​(π(y∣x)∣∣πref​(y∣x))]​​展开KL散度计算D K L ( π ∥ π r e f ) E ( x , y ) ∼ π [ log ⁡ π ( y ∣ x ) − log ⁡ π r e f ( y ∣ x ) ] \begin{equation}D_{KL}(\pi\|\pi_{\mathrm{ref}})E_{(x,y)\sim\pi}\left[\log\pi(y|x)-\log\pi_{\mathrm{ref}}(y|x)\right]\end{equation}DKL​(π∥πref​)E(x,y)∼π​[logπ(y∣x)−logπref​(y∣x)]​​优化目标变为max ⁡ π E ( x , y ) ∼ π [ r ( x , y ) − β ( log ⁡ π ( y ∣ x ) − log ⁡ π r e f ( y ∣ x ) ) ] \begin{equation}\max_\pi E_{(x,y)\sim\pi}[r(x,y)-\beta(\log\pi(y|x)-\log\pi_{\mathrm{ref}}(y|x))]\end{equation}πmax​E(x,y)∼π​[r(x,y)−β(logπ(y∣x)−logπref​(y∣x))]​​其中log ⁡ π ( y ∣ x ) \log\pi(y|x)logπ(y∣x)是由Actor Model产生的log ⁡ π r e f ( y ∣ x ) \log\pi_{\mathrm{ref}}(y|x)logπref​(y∣x)可以理解为是Reference Model的一个固定的常数分布不影响Actor的优化方向实际实现中我们也常把这两项写成log_probs与ref_log_probslog_probs - ref_log_probs的值越小说明策略模型和参考模型越接近策略模型Actor Model没有训练歪如果没有Reference ModelActor 可能会疯狂偏向 Reward Model 的漏洞更新也会极不稳定生成的分布会失去语义连贯性1.4 奖励模型 / Reward Model1.4.1 Reward Model的作用在Actor Model部分我们曾提到Reward Model 本身不是直接给每个 token 一个即时奖励它是用来对整个回复好坏进行评分的这个分数代表“人类对于这个回复的偏好程度”更宏观的描述是我们最终希望让模型在生成回复时更符合人类偏好评价注意奖励模型输出的奖励值是基于句子级别的在NLP场景中状态s 0 s_0 s0​用户询问 x动作a 0 a_0 a0​模型回复这个完整句子 yreward r ( x , y ) r(x,y)r(x,y)由 Reward Model 给出这就是单步 MDPReward Model在RLHF-PPO也是不训练的参数是冻结的即使用的是已经训练好的Reward Model那如何训练Reward Model呢如果使用回归分数进行训练人类难以对每条回复打一个绝对分值比如 0.72 / 0.95但我们可以给两个回复做比较哪个更好所以使用**对比学习preference learning**的方式来训练使其能“判断哪个回复更好”Step 21.4.2 Reward Model的训练过程Reward Model的如何进行对比学习呢针对同一个用户输入xReward Model 训练时用pairwise 比较y_w人类认为更好的回复preferredy_l人类认为不太好的回复dispreferredReward Model 的任务就是让y_w的分数比y_l的分数高1.4.3 Reward Model的Loss下面给出两种等价的Reward Model的Loss1.4.3.1 Sigmoid 形式L o s s R e w a r d − E ( x , y w , y l ) ∈ D [ log ⁡ σ ( r ( x , y w ) − r ( x , y l ) ) ] \begin{equation}Loss_{Reward}-\mathbb{E}_{(x,y_w,y_l)\in\mathcal{D}}\left[\log\sigma(r(x,y_w)-r(x,y_l))\right]\end{equation}LossReward​−E(x,yw​,yl​)∈D​[logσ(r(x,yw​)−r(x,yl​))]​​其中r ( x , y ) r(x, y)r(x,y)是 Reward Model 对某条回复输出的分数σ ( ⋅ ) \sigma(\cdot)σ(⋅)是 sigmoid当r ( x , y w ) r(x,y_w)r(x,yw​)大于r ( x , y l ) r(x,y_l)r(x,yl​)时sigmoid 趋近于 1 → log 趋近于 0 → loss 小换句话说让 Reward Model 分数反映人类真实偏好排序1.4.3.2 Softmax形式L o s s R e w a r d − E ( x , y w , y l ) ∈ D [ log ⁡ e r ( x , y w ) e r ( x , y w ) e r ( x , y l ) ] \begin{equation}Loss_{Reward}-\mathbb{E}_{(x,y_w,y_l)\in\mathcal{D}}\left[\log\frac{e^{r(x,y_w)}}{e^{r(x,y_w)}e^{r(x,y_l)}}\right]\end{equation}LossReward​−E(x,yw​,yl​)∈D​[loger(x,yw​)er(x,yl​)er(x,yw​)​]​​这就是一个二分类对比损失让r ( x , y w ) r(x,y_w)r(x,yw​)的指数比r ( x , y l ) r(x,y_l)r(x,yl​)大因为 softmax 自然会把大的分数推向更高概率这两者的Loss是等价的Sigmoid是优化一个“偏好差”的概率Softmax是将偏好问题转化成 2 类的分类从Loss形式也可以看出来Reward Model就是一个打分模型2. RLHF-PPO 系统梳理2.1 训练流程梳理从四个模型角度出发讲述RLHF-PPO框架是比较发散的不利于大家建立整体的算法框架下面就从训练的角度出发带大家走一遍RLHF-PPO的循环流程为了方便大家理解每一步的具体操作我把每个阶段都分为了四个部分对象只包括四种模型、输入不包括各种超参、操作、输出2.1.1 Step1采样Actor生成轨迹对象 Actor 策略模型π θ R L ( a t ∣ s t ) \pi_{\theta}^{\mathrm{RL}}(a_t|s_t)πθRL​(at​∣st​)输入用户的 querypromptx xx操作Actor逐Token采样生成一条完整回复示例如下s0 prompt a0 token1 s1 prompt token1 a1 token2 … aT tokenT sT prompt all tokens输出1一条Trajectory(s0,a0,πθ(a0|s0)), (s1,a1,πθ(a1|s1)), ... (sT,aT,πθ(aT|sT))2当前策略的log probability—log ⁡ π θ ( a t ∣ s t ) \log\pi_\theta(a_t|s_t)logπθ​(at​∣st​)3完整回复y yy之后我们需要算整体评分逐步即时奖励2.1.2 Step2KL惩罚计算对象 Reference Model输入Actor 生成的同一轨迹中的每一个 tokena t a_tat​操作计算每步 KL 值K L t \mathrm{KL}_tKLt​K L t log ⁡ π θ ( a t ∣ s t ) π r e f ( a t ∣ s t ) \begin{equation}\mathrm{KL}_t\log\frac{\pi_\theta(a_t|s_t)}{\pi_\mathrm{ref}(a_t|s_t)}\end{equation}KLt​logπref​(at​∣st​)πθ​(at​∣st​)​​​输出每步的 KL 惩罚r t K L r_t^\mathrm{KL}rtKL​r t K L − β ⋅ K L t \begin{equation}r_t^\mathrm{KL}-\beta\cdot\mathrm{KL}_t\end{equation}rtKL​−β⋅KLt​​​2.1.3 Step3Reward Model 计算整体评分对象 Reward Model输入采样阶段Actor生成的完整回复y yy以及用户输入的promptx xx(prompt x, generated reply y)操作计算Actor生成的reply的reward输出一个标量 reward 评分r R M ( x , y ) r_{RM}(x,y)rRM​(x,y)2.1.4 Step4构造每步 Reward 序列对象 None输入1Step2 中计算的每步的 KL 惩罚r t KL r_t^{\text{KL}}rtKL​2Step3 中 Reward Model 输出的整体分数r RM ( x , y ) r_{\text{RM}}(x,y)rRM​(x,y)操作组成每步的即时奖励序列r t { r t K L , t T r T K L r R M ( x , y ) , t T \begin{equation}r_t\{\begin{array}{cc}r_t^\mathrm{KL},tT\\r_T^\mathrm{KL}r_\mathrm{RM}(x,y),tT\end{array}\end{equation}rt​{rtKL​,rTKL​rRM​(x,y),​tTtT​​​输出完整的Reward序列r t r_trt​r0, r1, …, rT2.1.5 Step5Critic Model估计价值对象 Critic Model输入step1中轨迹序列中的状态序列s t s_tst​s0, s1, …, sT操作预测每个状态的预期总回报输出每步状态的价值预测V ϕ ( s t ) V_\phi(s_t)Vϕ​(st​)——用于计算优势V(s0), V(s1), ..., V(sT)2.1.6 Step6Advantage 估计GAE对象 None输入1Step4生成的完整Reward序列r t r_trt​2Step5生成的每步状态的价值预测V ϕ ( s t ) V_\phi(s_t)Vϕ​(st​)操作1先计算TD errorδ t r t γ V ϕ ( s t 1 ) − V ϕ ( s t ) \begin{equation}\delta_tr_t\gamma V_\phi(s_{t1})-V_\phi(s_t)\end{equation}δt​rt​γVϕ​(st1​)−Vϕ​(st​)​​2再用 GAE 平滑累计A t G A E δ t γ λ A t 1 G A E \begin{equation}A_t^{GAE}\delta_t\gamma\lambda A_{t1}^{GAE}\end{equation}AtGAE​δt​γλAt1GAE​​​输出优势估计序列A t G A E A_t^{GAE}AtGAE​A0, A1, ..., AT2.1.7 Step7计算 PPO 目标 Ratio对象 None输入1当前策略概率π θ ( a t ∣ s t ) π_\theta(a_t|s_t)πθ​(at​∣st​)用来在Step1采样的策2旧策略概率π old ( a t ∣ s t ) π_{\text{old}}(a_t|s_t)πold​(at​∣st​)操作计算比值r t ( θ ) π θ ( a t ∣ s t ) π o l d ( a t ∣ s t ) \begin{equation}r_t(\theta)\frac{\pi_\theta(a_t|s_t)}{\pi_{\mathrm{old}}(a_t|s_t)}\end{equation}rt​(θ)πold​(at​∣st​)πθ​(at​∣st​)​​​输出Ratio序列r t ( θ ) r_t(\theta)rt​(θ)——用于PPO Clip Lossr0(θ), r1(θ), ..., rT(θ)2.1.8 Step8Actor 策略更新PPO loss对象 Actor Model输入1Step6生成的优势估计序列A t G A E A_t^{GAE}AtGAE​2Step7生成的Ratio序列r t ( θ ) r_t(\theta)rt​(θ)操作最小化 PPO Clip LossL p o l i c y − E t [ min ⁡ ( r t ( θ ) A t , c l i p ( r t ( θ ) , 1 − ϵ , 1 ϵ ) A t ) ] \begin{equation}L_{\mathrm{policy}}-\mathbb{E}_t\left[\min(r_t(\theta)A_t,\mathrm{clip}(r_t(\theta),1-\epsilon,1\epsilon)A_t)\right]\end{equation}Lpolicy​−Et​[min(rt​(θ)At​,clip(rt​(θ),1−ϵ,1ϵ)At​)]​​输出Actor 模型参数更新后的梯度方向 → 生成新的 Actor 模型新策略2.1.9 Step9Critic 更新Value Loss对象 Critic Model输入1Step5生成的每步状态的价值预测V ϕ ( s t ) V_\phi(s_t)Vϕ​(st​)2Step6生成的优势估计序列A t G A E A_t^{GAE}AtGAE​操作1构造V t t a r g e t V_t^{\mathrm{target}}Vttarget​V t t a r g e t V ϕ ( s t ) A t G A E \begin{equation}V_t^{\mathrm{target}}V_\phi(s_t)A_t^{GAE}\end{equation}Vttarget​Vϕ​(st​)AtGAE​​​2最小化LossL v a l u e E t [ ( V ϕ ( s t ) − V t t a r g e t ) 2 ] \begin{equation}L_{\mathrm{value}}\mathsf{E}_t\left[(V_\phi(s_t)-V_t^{\mathrm{target}})^2\right]\end{equation}Lvalue​Et​[(Vϕ​(st​)−Vttarget​)2]​​输出Critic 模型参数更新后的梯度方向 → 生成新的 Critic 模型2.1.10 Step10LM Loss非必须对象 Actor Model输入通用预训练数据x ′ xx′操作防止策略忘掉预训练行为加 LM lossL L M − E x ′ [ log ⁡ π θ ( x ′ ) ] \begin{equation}L_{\mathrm{LM}}-\mathsf{E}_{x^{\prime}}[\log\pi_\theta(x^{\prime})]\end{equation}LLM​−Ex′​[logπθ​(x′)]​​输出增加到 Actor 的总损失里可选2.2 RLHF‑PPO 训练伪代码# ---------------------------------------------# 1) 初始化模型# ---------------------------------------------# 初始化 Actor 和 ReferenceactorSFT_pretrained_model()# 需要训练referencedeepcopy(actor)# 冻结不训练# 初始化 Reward Model 用偏好数据对比学习reward_modelRewardModel()train_reward_model(reward_model,preference_data)# 初始化 CriticcriticValueModel()critic.initialize_like(actor)# 价值网络初始化可从 Reward/Actor中共享部分权重# PPO 超参数beta0.1# KL 惩罚系数gamma1.0# 折扣lam0.95# GAE 参数epsilon0.2# PPO cliplm_coef0.02# 可选LM 保留损失权重bufferExperienceBuffer()# ---------------------------------------------# 2) 训练循环# ---------------------------------------------forepochinrange(num_epochs):# -----------------------------------------# Step A) 采样轨迹# -----------------------------------------buffer.clear()for_inrange(rollouts_per_epoch):promptsample_prompt(train_data)# Actor 生成回复序列 y [a0,a1,...,aT]trajectoryactor.generate(prompt)# trajectory 包含: states [s0,...,sT], actions [a0,...,aT], log_probs# -------------------------------------# Step B) 计算 reward 序列# -------------------------------------# 1) Reward Model 整体分数r_rmreward_model.score(prompt,trajectory.reply)# RewardModel(r(x,y)) - 一个标量# 2) 每步 KL 惩罚kl_rewards[]fort,(s_t,a_t)inenumerate(trajectory.steps):logp_actoractor.log_prob(a_t,s_t)logp_refreference.log_prob(a_t,s_t)kllogp_actor-logp_ref r_kl-beta*kl kl_rewards.append(r_kl)# 组合 instant rewardrewards[]fortinrange(len(trajectory.steps)):iftlen(trajectory.steps)-1:rewards.append(kl_rewards[t])else:# 最后一步 add reward_model scorerewards.append(kl_rewards[t]r_rm)# -------------------------------------# Step C) Critic 估计状态价值# -------------------------------------values[critic.predict(s)forsintrajectory.states]# 存入经验池buffer.store(trajectory.states,trajectory.actions,trajectory.log_probs,rewards,values)# -----------------------------------------# Step D) 计算 Advantage 和 Value Target# -----------------------------------------# 使用 GAE 估计 Advantagefortrajinbuffer:advantages,value_targetscompute_GAE(traj.rewards,traj.values,gamma,lam)traj.advantagesadvantages traj.value_targetsvalue_targets# -----------------------------------------# Step E) PPO 更新 Actor Critic# -----------------------------------------for_inrange(update_epochs):forbatchinbuffer.minibatches():# 1) Policy Loss (PPO 带 clip)new_log_probsactor.log_probs(batch.states,batch.actions)ratioexp(new_log_probs-batch.old_log_probs)surrogate1ratio*batch.advantages surrogate2clip(ratio,1-epsilon,1epsilon)*batch.advantages ppo_loss-mean(min(surrogate1,surrogate2))# (可选LM Loss 保持通用语言能力lm_loss0ifuse_lm_loss:lm_losscompute_lm_loss(actor,lm_train_data)# 2) Value Lossnew_valuescritic.predict(batch.states)value_lossmse(new_values,batch.value_targets)# 总损失total_lossppo_lossvalue_losslm_coef*lm_loss# 3) 反向传播total_loss.backward()actor_optimizer.step()critic_optimizer.step()# -----------------------------------------# Step F) 更新 old policy# -----------------------------------------# PPO 下一轮把当前 Actor 的参数作为 old policyactor_olddeepcopy(actor)2.3 RLHF-PPO的优缺点2.3.1 优点1与 Reward Model 能结合得很好PPO 可以处理延迟的整体奖励Reward Model 给整个回复一个分数并把它转成可用的策略优化信号使模型更符合人类偏好2更新稳定、训练更可靠PPO 的核心是clip剪辑策略更新比率这一技巧不允许策略变化太大大幅提高训练的稳定性比传统策略梯度方法 SPG/REINFORCE 更稳3 样本利用率较高相较于一些纯策略梯度方法如简单 REINFORCEPPO 允许在一次采样的轨迹上做多次小步更新对数据的利用效率更高4适合大模型训练PPO 是目前工业级 RLHF 微调大语言模型的事实标准不仅在 OpenAI 的 InstructGPT/ChatGPT 上成功验证也在很多学术和实用场景中表现稳定5可控性强PPO 的一些组件如 KL 惩罚系数、clip 范围等可以用来显式控制策略更新幅度避免模型迭代过程过度偏离原始语言模型行为从而提升语言生成的可控性和安全性。2.3.2 缺点1训练过程复杂且成本高完整 RLHF PPO 需要四个模型Actor/Policy、Reward Model、Critic、Reference训练过程涉及多次采样/计算各模型间有依赖关系计算和工程复杂度高2超参敏感PPO 有很多超参如clip ε、KL 惩罚系数β、GAE 的λ、折扣γ等对训练稳定性和最终质量有大影响需要大量调参3Reward Model 的偏差会被放大如果 Reward Model 给出的分数不准确或有系统偏见例如对某类输出不公平PPO 会优化到这种“偏差”可能造成模型过度追求错误目标4算力/样本效率仍然不够理想尽管比 REINFORCE 更高效但相比监督微调SFT这种方法在算力、标注human feedback需求上仍然昂贵尤其是需要大量偏好数据5依赖 Reward Model 的质量Reward Model 本身需要大规模、质量高的偏好标注数据训练。标注不一致性、偏见或噪音都会直接影响 PPO 优化过程的有效性3. PreviewRLHF-PPO讲完了那下一个必须干GRPO
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学校网站建设问卷调查wordpress怎样获取文章分类的id

FaceFusion人脸检测算法升级:支持多角度、遮挡场景下的稳定识别在地铁闸机前,一位乘客戴着口罩、侧着脸快速走过,系统却依然准确识别并开启通道;教室里学生戴着口罩上课,考勤系统自动完成签到而无需摘下防护——这些曾…

张小明 2026/1/1 7:22:17 网站建设

建一家网站多少钱中山网站制作策划

Akagi雀魂AI助手完整配置指南 【免费下载链接】Akagi A helper client for Majsoul 项目地址: https://gitcode.com/gh_mirrors/ak/Akagi Akagi是一款专为雀魂游戏设计的智能麻将辅助客户端,通过集成先进的AI分析模型,能够实时解析牌局并提供精准…

张小明 2026/1/7 5:46:26 网站建设

个人建站做淘客网站备案wordpress主题安装不成功

导语:大模型进入"智能代理"实用化阶段,Kimi K2以MoE架构重新定义企业级AI效率标准 【免费下载链接】Kimi-K2-Base Kimi K2 是一款前沿的专家混合(MoE)语言模型,激活参数达320亿,总参数量达1万亿。…

张小明 2026/1/1 21:43:48 网站建设

o2o网站策划建设学院实验网站的作用

GPT-SoVITS语音合成在动画配音流程中的效率革命 在一部10分钟的二维动画制作中,传统配音环节动辄耗时两周——预约声优、反复试音、协调档期、后期修音……整个流程像一条缓慢爬行的链条,稍有变动便全盘停滞。而如今,只需一段1分钟的原始录音…

张小明 2026/1/7 16:03:01 网站建设

网站按内容分可以分为wordpress 百度云加速

文章目录 0 前言1 主要功能3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系…

张小明 2026/1/11 7:40:36 网站建设