大模型强化学习对齐:从 RLHF 框架到 PPO 算法原理

前言

前面几期内容,我们主要介绍强化学习中更新模型的手段,比如 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 算法的流程,希望这篇文章可以帮助大家进一步理解强化学习算法;若有错误和其他简介,可以在评论区提出!制作不易,希望读者可以点赞关注!支持博主!

相关推荐
Profile排查笔记1 小时前
指纹浏览器推荐:用一套验收清单筛选 Profile、代理与自动化能力
前端·人工智能·后端·自动化
CET中电技术1 小时前
预付费电表计费系统是什么?云综能Lite如何重构水电费管理?
人工智能·物联网·重构
用户739548002061 小时前
本地 CSV 清洗的小细节:先标准化,再去重,并保留可检查的报告
python
GEO实战经验分享1 小时前
GEO知识投毒风险解析与多维防御策略指南
人工智能
Qforepost1 小时前
72 量子比特跑真实道路图像,量子机器学习进入“硬仗”
人工智能·机器学习·量子计算
数字孪生视频孪生1 小时前
三维实时重构异构底座 核工危化无感定位跨境轨迹一屏统揽
大数据·运维·人工智能·重构·架构
举个栗子。1 小时前
Marin:开源基础模型研究与开发框架,从数据到模型全链路可复现
人工智能·ai·开源
undsky_2 小时前
【n8n教程】:Email Trigger IMAP节点,实现邮件自动化处理
人工智能·ai·aigc·ai编程
腾讯云大数据2 小时前
腾讯云AI Native数据平台功能发布合集【8月】
大数据·人工智能·云计算·腾讯云