找回密码
 立即注册
首页 业界区 业界 小白也能看懂的RLHF-PPO:原理篇

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

叟澡帅 2 小时前
原文: 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)迭代优化达成最大化期望回报。
一句话总结,通过探索和反馈机制,在任意环境状态下给出最优决策。
1.png

这里仅列出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就像奋发图强的学霸党,决心绝不看老师的答案,自己尝试解题,老师根据解题步骤和结果打分,学生根据老师的反馈(奖励分数)不断内化自己的知识(调整模型参数),优化解决思路。
2.png

本质上, SFT是将模型输出的概率分布接近标准答案,学习的模式是根据前文的信息预测下一个token,即 \(P(E|ABCD)\),让下个token \(E\) 越接近标准答案越好,但它并不知道什么样的token是不能生成的,这就是负反馈缺失的代价。
这会导致一个现象,为了和标准答案相似,模型可能会认为 \(P(E|ACD)\)、\(P(E|ABD)\) 等也该被提高概率,,但没有反馈机制告诉模型: "你这样回答虽然看着很像,其实并不对,下次不要这样干"。以 \(P(E|ACD)\) 为例,缺失的token B和加上B token完全可能是相反的意思。
RLHF有负反馈啊,就是reward model,具体算法上怎么做的,下文有讲解。直觉上理解,就像学生练习做题,做对了老师给满分,中间结果对,给个步骤分,做错了给零分,还会在习题册上告诉你错哪里了。
2.2 loss计算的本质

SFT在预测下个token \(E\)时,只会参考\(ABCD\)这些前文信息,不具备向后看的能力,即不会预测当前这个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(参考模型 \(\pi_{base}\) :SFT后的模型,用于限制Actor Model不要偏离Reference Model太远,参数冻结
  • Reward Model(奖励模型 \(r_{\theta}\) :对模型回答打分,表示贴合人类偏好的程度,训练完后,在PPO中是参数冻结的;
  • Critic Model(评论家模型 \(V_{t}\) :用于预测期望总收益,为优势函数 \(A_{t}\) 提供基线,使策略更新更稳定,参数可变
3.png

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

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

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

4.png

我们知道,RLHF的终极目标是让模型学会按人类喜好作出回答,为了实现这个目标,需要有个模型评估模型生成内容的好坏,这就是奖励模型(Reward Model, RW)要干的活。
RW模型训练的大体过程:提供一组提示,让LLM生成多个回答,由人工按照既定的规则,对同个问题的多个回答排序,利用标注好的排序数据训练一个可量化人类偏好的RW。
假设有个问题 \(x\),模型给出两个不同的回答,由人工标注两种回答: \(y^+\) 为好的回答, \(y^-\) 为不好的回答。我们希望训练出的RW模型  \(r(.)\) 能打出和人类一致的分数,即 \(r(x, y^+) > r(x, y^-)\)
基于概率形式的目标函数为
\(P(y^+ > y^- | x) = \sigma(r(x, y^+)-r(x, y^-) )\),
其中 \(\sigma\) 是 sigmoid 函数,取值范围为0-1之间,\(r(x, y^+)-r(x, y^-)\)差值越大概率越接近1,说明RW更有可能选择好的答案。
基于所有样本的损失函数为

\[\begin{align}L^{RW}(\theta) = -E_{(x, y^+, y^-) \sim {D_{pref}}} [log\sigma(r(x, y^+)-r(x, y^-) )]\end {align}\]
这样我们就能训练出一个RW模型,识别模型输出内容的好坏,分数越高,表示模型输出内容越贴合人类偏好。
3.3 PPO微调(Proximal Policy Optimization,PPO)

5.png

以奖励模型的评分为反馈,通过RL-PPO进一步优化 SFT 后的模型,使其生成的回答更符合人类偏好。
1). 输入提示 \(x\) 到参考模型  \(\pi_{base}\) (旧策略)和当前微调的模型 \(\pi_{\theta}\) (新策略,对应上图中的 \(\pi_{PPO}\) )。得到token序列
\(y_{} \sim \pi_{base}(.|x),y \sim \pi_{\theta}(.|x)\)。
2). 计算奖励分数,将微调模型 \(\pi_{\theta}\) 生成的序列 \(y\) 输入到奖励模型(Reward Model, RW),得到奖励分数 \(r_{\theta}(x, y)\) 。
3). 评论家模型预测 \(V_{t}\),根据价值函数\(V_{t}\)和奖励分数 \(r_{\theta}(x, y)\) 计算优势 \(A_{t}\),用以评估微调模型  \(\pi_{\theta}\) 本次输出的token比随机输出的优劣,辅助PPO决定该惩罚、奖励程度,让模型 \(\pi_{\theta}\) 的训练更稳健。
4).  PPO更新模型 \(\pi_{\theta}\) 参数,这里为了防止策略模型 \(\pi_{\theta}\) 过度偏离参考模型  \(\pi_{base}\) ,有两种形式保证模型在有限的空间里微调参数,一种是引入PPO-KL散度,

\[\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}\]
另一种PPO-CLIP比较直接,在目标函数中,限制新旧模型的差距在约定的区间内:

\[\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}\]
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采用重要性采样技术,利用旧策略\(\pi_{base}\)下采集的数据来估计新策略的期望。
简单来说,公式 \(\frac{\pi_\theta(a_t | s_t)}{\pi_{base}(a_t | s_t)}\)即为重要性采样比率 。其中,\(\pi_\theta(a_t | s_t)\)  和 \(\pi_{base}(a_t | s_t)\) 分别表示新旧策略。在该比率的调配下,PPO能够重复利用旧策略下的采样数据,使其适用于新策略的更新,从而提高数据利用率。
4.2 优势函数

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

\[\begin{align}A_t = R_t + \gamma*V_{t+1} - V_t\end{align}\]
其中, \(A_t = R_t + \gamma*V_{t+1}\) 表示按Actor 模型 \(\pi_{\theta}\) 在 \(t\) 时刻选择某个token后,能够获取的实际收益;\(V_{t}\) 为Actor 模型为随机选择某个token后,Critic模型预估的整体收益。
\(R_{t}\)表示 Actor 模型产生每个token带来的即时收益。需要注意的是,\(R_{t}\) 的设计不止一种,例如可以将 \(t=T\) 时替换成所有token的即时奖励的平均值,这里以deepspeed-chat的RLHF为例

\[\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}\]

  • \(kl\_ctl\) : 用以控制比例的缩放因子,是个常量,默认为0.1
  • \(log\frac{P_\theta(a_t | s_t)}{P_{base}(a_t | s_t)}\) : 可以理解为公式(2)后半部分的KL散度,如3.3部分中介绍的那样,主要为了防止 Actor Model 偏离Reference Model太远
  • \(r_{\theta}\) :Reward Model对整个句子的回答打分
我们再仔细研究下公式(5),可以得出以下结论:

  • 在 \(t\not=T\) 时,PPO算法应关注 Actor 模型是否在 Reference 模型的约束下生成 token
  • 在 \(t=T\) 时,PPO算法除了关注 Reference 模型约束,还关注生成的整个句子符合人类偏好的程度 \(r_{\theta}\)
从公式(4)可以看出,这里通过引入基于参考基线 \(V_{t}\) 的优势函数引导Actor模型向更优的方向调整,相当于借鉴了时序差分 (Temporal-Difference, TD) 方法,该方法存在低方差,高偏差的问题。为进一步平衡方差和偏差,可以结合蒙特卡罗(Monte-Calo, MC),引入对未来优势的考虑,也就是 广义优势估计(Generalized Advantage Estimation, GAE)。
为了更方便描述,这里对公式(4)改写,

\[\begin{align}\delta_t = R_t + \gamma*V_{t+1} - V_t\end{align}\]
将优势函数改写为\(Adv_{t}\)

\[\begin{align}Adv_t = \delta_t + \gamma* \lambda*Adv_{t+1}\end{align}\]
公式(7)在实际使用中,会采用动态规划的方式计算, 首先计算最后时刻的\(Adv_{T}\),对应的未来收益 \(V_{T+1}\) 和未来优势 \(Adv_{T+1}\)  均为0,则 \(Adv_{T} = R_T - V_T\),对于 \(T-1, T-2, ..., t\) 时刻,可以通过公式(7),不断迭加后面时间步上的优势函数,就可以平衡真实奖励所带来的高方差和使用价值函数所带来的高偏差。
4.3 评论家模型 \(V_{t}\) 的损失函数


\[\begin{align}L^{Critic}({\phi}) &= E_t [(R_t + \gamma V_{t+1} - V_t)^2]   \end {align}\]
\(V_{t}\) :  Critic 模型对 \(t\) 时刻收益的预估,即未来和即时收益的整体预估
\(R_t + \gamma*V_{t+1}\) :  计算得到的即时收益 \(R_{t}\),Critic 模型预测出 \(t+1\) 时刻之后的折损收益
5. 再谈RLHF对LLM的重要性

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

从公式(2)或(3)可以看出,RLHF是通过优势函数 \(Adv_{t}\) 对模型的回答进行正负反馈的,当 \(Adv_{t}\) 为正时,提高Actor对应动作的概率,相反,降低Actor对应动作的概率,这个\(Adv_{t}\) 函数就扮演着老师的角色,对学生的答题过程打分,并及时纠正学生错误的解题思路。
更细致的说,首先看学生是否答题完整,如果完整,通过RW模型给个整体分数,否则,RW模型打0分,对应公式(5)的计算过程。之后,通过 \(Adv_{t}\) 中的即时反馈 \(\delta_{t}\) ,查看解题步骤中是否有亮点、或严重错误,在RW的基础上加、减分数。
5.2 loss计算的优势

在2.2小节中说到,RLHF的loss具有全局、微观的视角,同时具有向后看的能力。这里的全局视角就是在loss函数中融入了RW模型的打分 \(r_{\theta}\),让Actor模型知道本次响应整体效果如何。微观的视角,通过 \(Adv_{t}\) 函数计算每个token的即时反馈 \(\delta_t = R_t + \gamma*V_{t+1} - V_t\)(公式6),及未来的影响\(\gamma* \lambda*Adv_{t+1}\)(公式7),\(\gamma* \lambda*Adv_{t+1}\) 可以让模型具备向后审视的能力,即模型本次输出的token对未来能够带来多大的收益。结合(7),可以发现,对于不同的token,公式(2)或(3)中的loss权重是不同的。
本文是RL系列内容的第三篇,从原理层面阐述了RLHF,下一篇我们将介绍常用的RLHF方法,敬请期待。
参考资料


  • Illustrating Reinforcement Learning from Human Feedback (RLHF)
  • DeepSpeed-Chat: Easy, Fast and Affordable RLHF Training of ChatGPT-like Models at All Scales
  • 大语言模型 RLHF 全链路揭秘:从策略梯度、PPO、GAE 到 DPO 的实战指南
  • 图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读
  • 大模型中的强化学习

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册