前言
前面几期内容,我们主要介绍强化学习中更新模型的手段,比如 GRPO、GSPO 等,那么这一期我们想把顺序理清楚,向大家完善强化学习的框架,并从原理角度介绍 PPO 算法;如果前几期内容没有了解的,可以直接点击下方的链接:
用 GRPO 让 Qwen 学会自我评判——强化学习后训练入门-CSDN博客
从 GRPO 到 GSPO:Qwen 序列级强化学习后训练原理拆解-CSDN博客
框架流程
在介绍 RLHF 框架之前,我们要先明白我们做强化学习是为了些什么?强化学习作为一个无监督算法,我们想通过这样的学习方式,让模型不通过标准答案进行对照,而是自己判断好坏,从而不断的更新迭代,去尽可能对齐人类的偏好,这样的过程我们可以称之为:大模型对齐
大模型对齐
大模型对齐的方式有很多种,前面我们学习的 SFT 就是其中一种;其原理是通过给出多组人为规定好的示例,让模型自己去模仿示例的表达方式,不断的更新迭代,从而学会人为想要的表达;常见的对齐方式还有 RHLF、RLAIF、DPO 等;
前面我们所学习的 GRPO、GSPO 等,实际上就是优化的方式,也就是Policy Optimization;它解决的是:已经有 Reward 以后,怎么更新模型
RLHF 框架
RLHF 的全称是:基于人类反馈的强化学习
从命名上可以猜测到这个框架应该想解决的是:训练好一个大模型之后,怎么让大模型的输出更加偏向人类喜欢的回答;因为同一个问题,大模型可能会输出不同的答案,生成的回答可能都没错,但是由于人的偏好,我们可能会更趋向其他的回答;对于传统的 SFT,比较难处理这种 A对,但是 B 更好的情况,因此 RLHF 就是专门解决这种:不判断对错,而是判断人类偏好
SFT 的缺陷
之前我们讲到用 SFT 做微调,当时我们的数据组是(prompt,response)让模型学习,但是前面提到 SFT 主要是模仿能力,但是现实生活中往往没有标准的答案的,比如一个任务输出 ABCD,也许都可以是标准答案,这个时候我们关心的并不是谁是标准答案,而是偏好关系
RLHF 的流程
RLHF 的流程主要分成三个过程:
- SFT 让模型先学会正常的回答是什么?
- Preference → Reward Model 让模型学会人类的偏好
- RL 让 Policy 主动去追求高 Reward
下面我们详细介绍相关流程:
阶段一: SFT 微调
RLHF 通常不是从一个完全没调过的 Base Model 直接开始,一般都是在预训练模型经过 SFT 微调后,再进行 RLHF;具体 SFT 的流程可以看看我主页的视频,里面有对其介绍;
阶段二:收集 Preference Data
给同样的 prompt 让模型输出多个回答,让人类标注那个答案更加好,用下面的形式保存答案:
其中 x 表示的是 prompt,y_w 表示 winner chosen、y_l 表示 loser rejected,偏好回答不仅记录好的,同时也记录差的;那为什么不直接那这个数据训练?经典 RLHF 当时的想法是:我先训练一个模型,让它学会模拟人类的评分;这个内容也就是 —— Reward Model
之前的文章我们提到过奖励模型,是对回答进行评分的模型,主要是判断这个回答有多符合人类偏好;那这样的 RM 模型是怎么进行训练的?
我们有:
我们希望:
常见做法来自 Bradley-Terry preference model:
其中 σ 表示的是 sigmoid 函数;
其中训练 Loss 通常类似:
模型不断学习以后:
让这样的结论越来越成立;
在之前我们的 WM 是用 LLM as Judge,让大模型去作为裁判进行评分,这样的评分框架有点类似 RLAIF;但是核心的思想是类似的,都是把“人的偏好”转成一个可以给 Policy 提供 Reward 的评分器;
阶段三:RL
前面的阶段我们训练好一个得分模型,接下来我们有一个 Policy:
也就是正在训练的大模型;那我们优化的目标是什么呢?通常优化的是:
简单来说就是:调整模型参数,使未来自己生成出来的 Response 平均 Reward 更高
前面的文章我们有说过,假设我们只是最大化得分的话,可能会出现 Reward Hacking 的情况,也就是说在优化的过程中,模型发现了得分的漏洞,然后疯狂往漏洞方向更新;
因此经典 RLHF 需要 Reference Model,冻结之前的基础模型 —— SFT,做 KL 散度限制;进一步,我们优化的目标是:
实际上在经典的 RLHF 中,我们通常是采用优化模型通常是 PPO,下面我们对这个算法进行一个简单的介绍:
PPO 算法介绍
中文全称:近端策略优化
在 PPO 算法中,我们通常会保存两个模型,分别是当前的 Policy 和旧模型 Old-Policy,这个在我们之前的 GRPO、GSPO 都有介绍过,从公式的角度上就是:
有了比率之后,我们要怎么看是增加还是减少,这个时候我们采用优势函数,也就是我们前面介绍的 A,表示这个行为比预期好还是坏;因此目标函数就是:
对于优势函数 A,在 RLHF-PPO 算法中,我们通常是采用 Value Model 也就是 Critic,公式上的表达:
表示的是当前状态未来可能获得的期望奖励,价值函数本质上也是一个神经网络,也是需要训练;
但是存在我们的比率大小很大,因此我们要做一次截断操作去控制我们的比率,也就是 clip,公式上的表达就是:
接着就是我们 KL 散度做约束,防止模型越走越偏,不要让 RL 后模型忘掉原来的语言能力;
因此在经典的 RLHF 中,训练过程可能会涉及到比较多的模型,如下:
| 模型 | 作用 |
|---|---|
| Policy Model | 真正要训练的大模型 |
| Reference Model | 防止 Policy 漂移 |
| Reward Model | 模拟人的偏好 |
| Value/Critic Model | 估计 Advantage |
因为模型参数可以很大,那么这些东西的显存和计算开销会非常恐怖,这也就是为什么后面大量的研究都是在想:能不能删模型?
PPO vs GRPO
我们知道 PPO 的价值函数特别贵,因此 GRPO 在此基础上做优化,采用同一个问题多组回答的形式,用实际值与平均值做减法的形式计算优势函数;
总结
上述介绍了 RLHF 框架的基本流程和 PPO 算法的流程,希望这篇文章可以帮助大家进一步理解强化学习算法;若有错误和其他简介,可以在评论区提出!制作不易,希望读者可以点赞关注!支持博主!