大模型优化利器是什么?RLHF之PPO、DPO你了解吗?

2025-10-30 -

发一则小广告,知乎专栏《大模型前沿应用》里的内容,被收纳到了新书《揭秘大模型:从原理到实战》之中,倘若有感兴趣的朋友,能够去进行购买,多谢大伙的支持!

比起同存在SFT,就,强化学习,而言,它,能够,给,大语言模型,带去,什么样,哪些,好处,呢,?

2023年4月,针对这个问题,联合创始人John在EECS会议上,做了报告《from Human : and》,分享了在RLHF的进展,其中涉及分析监督学习存在的挑战,还涉及分析强化学习存在的挑战。

强化学习在大语言模型上的重要作用可以概括为以下几个方面:

正由于强化学习存有这般些优点,它于大模型范畴被普遍运用。在本文之中我们将要去介绍一下这一项强有力的技术。

RLHF

被研究的关于强化学习也就是 RL 的问题,是智能体 Agent 与环境交互的问题,其既定下来的目标是,要让智能体在复杂以及不确定的环境里,达成最大化奖励。强化学习有着如图 1 所示的基本框架,主要是由两部分构成的,分别是智能体和环境。处于强化学习的过程当中,智能体与环境在持续不断地交互。

图 1 强化学习基本框架

某个状态于环境里被智能体获取之后,会依据该状态输出一个动作,也称作决策 动作会在环境中予以执行 ,该动作致使的下一个状态与所带来的奖励会由环境依据智能体采取的动作给出 智能体的目标便是最大限度地从环境当中获取奖励

以图 1 为例,智能体与环境的交互过程如下:

时刻,环境的状态为

,到达这一状态所获得的奖励为

智能体观测到

,采取相应动作

智能体采取

后,环境状态变为

,得到相应的奖励

在这个过程里,智能体持续进行学习,其最终所追求的目标是,寻找到一个策略,该策略依据当前所观测到的环境状态以及奖励反馈,进而去挑选最佳的动作。

在被给定的环境里,有效动作的集合常常被称作动作空间,此动作空间被叫做Space,使用

进行表示。

策略属于智能体的动作模型,其对智能体的动作起到决定作用,策略能够借助函数当作表示形式,此函数可会将输入状态转变为动作,策略存在两种分类,分别是随机性策略与确定性策,对于随机性策略存在这种用于

函数表示,即

,输入一个状态

输出一个关于智能体所有动作的概率,借助这个概率分布进行采样,进而能够得到智能体将会采取的动作。确定性策略( )是智能体直接去采取最具可能性的动作,也就是

价值函数所具有的值,乃是针对未来奖励所作的预测,能够借由它去评估状态的优劣,并且,价值函数能够仅仅依据当下的状态 。

决定,使用

表示。也可以根据当前状态

以及动作

表示,使用

表示。

的具体定义如下:

其中,

为折扣因子( ),针对短期奖励和远期奖励进行折中;期望

的下标为

函数,其值反映在使用策略

时所能获得的奖励值。

RLHF主要分成两个步骤,一个是奖励模型训练,另一个是近端策略优化。奖励模型借助已由人类反馈标注好的偏好数据,借此去学习人类的偏好,进而判断模型回复的有用性,还要保证内容的无害性。奖励模型对人类的偏好信息做了模拟,能持续不断地给模型的训练提供奖励信号。在得到奖励模型之后,要借助强化学习对语言模型接着进行微调。多数任务里使用的强化学习算法都是近端策略优化算法( , PPO)。把奖励模型所给出的反馈拿来,用于对近端策略优化进行模型优化,借助持续不断地迭代,使得模型去进行探索,找到对于人类偏好而言更契合的回复策略,PPO的流程呈现情况如图2所示 。

图 2 PPO 算法实施流程

PPO 涉及到四个模型:

PPO 的实施流程如下:

下图详细展示了 PPO 的整个流程:

图3:PPO 训练流程奖励模型( Model)

Model基于人类反馈训练,能很好地评估人类偏好,从理论上讲,可通过强化学习,用人类标注的反馈数据直接微调模型,然而,因工作量和时间受限,每次优化迭代时,人类很难提供足够反馈,更有效的方法是构建Model,模拟人类评估过程,Model在强化学习里起着关键作用,它决定智能体怎样从与环境交互中学习并优化策略,以达成预定任务目标。

Model的输入,是包含着某部分内容的,pair对,呈现情况如下图所示。

图4: Model 输入

Model 一般会采用基于架构的预训练语言模型,在 Model 里,将最后一个非嵌入层移除,并且在最终的层之上叠加了一个额外的线性层,不管输入的是哪种文本,Model 都能够为文本序列之中的最后一个 token 赋予一个标量奖励值,样本质量越高,奖励值也就越大。

Model 的损失定义如下:

其中

是 函数,

代表参数为

的奖励模型的值,

表示针对输入提示

和输出

所预测出的单一标量奖励值。

PPO

近端策略优化,也就是PPO,是对强化学习里策略梯度方法的改进,它能解决传统策略梯度方法里存在的高方差问题,能解决低数据效率问题,能解决易发散等问题,进而提高了强化学习算法的可靠性,还提高了适用性。PPO在各种基准任务中取得了非常出色的性能,而且在机器人控制领域有广泛应用,在自动驾驶领域有广泛应用,在游戏玩家领域也有广泛应用。在多个使用强化学习的任务中都采用了该方法,并且把该方法成功应用于微调语言模型,使其遵循人类指令,使其符合人类偏好。

策略梯度

策略梯度方法存在三个基本组成部分,分别是演员(Actor),还有环境以及奖励函数,像图示呈现的那样,Actor能够采取各类可能的动作和环境产生交互,在发生交互期间,环境会按照当前环境状态以及Actor的动作给出对应的奖励,并且对自身状态作出修改,Actor的目的在于对策略加以调整,也就是依照环境信息来决定采取何种动作以便使奖励最大化 。

图 5 Actor 与环境交互过程

上述过程可以形式化的表示为:设环境的状态为

,Actor 的策略函数

是从环境状态

到动作

的映射,其中

是策略函数

的参数;奖励函数

从环境状态以及 Actor 动作,到奖励值进行映射,这种映射是有的,一次完整的交互过程,如图 5 所示。

图 6 Actor 与环境交互过程

环境初始状态为

,Actor 依据初始状态

采取动作

,奖励函数依据

给出奖励

,环境接受动作

的影响修改自身状态为

,把这一过程持续不断地重复下去,一直抵达交互结束的时候。于这一交互的进程当中,为环境状态进行定义

Actor 动作

组成的序列为轨迹()

给定策略函数参数

,可以计算某条轨迹发生的概率

为:

其中,

是初始状态

发生的概率,

为给定状态

策略函数采取动作

的概率,

为给定当前状态

和动作

,环境转移到状态

的概率。

给定轨迹

,累计奖励为

累计奖励被称作回报()。期望着 Actor 在交互进程当中回报始终尽可能地多,然而回报并不是一个标量值,鉴于 Actor 采取哪一个动作 。

以及环境转移到哪一个状态

均以概率形式发生,因此轨迹

和对应回报

均为随机变量,只能计算回报的期望:

其中

表示使用参数为

的策略与环境交互的期望回报,轨迹

服从

的概率分布。

给定一条轨迹,回报总是固定的,因此只能调整策略函数参数

保证高回报的轨迹出现可能性尽量高,让低回报的轨迹出现可能性尽量低,是为了对参数进行优化。

,可以使用梯度上升方法,优化

使得期望回报

尽可能大:

观察上式可以注意到,只有

有关。考虑到

公式5所展示的那样是多个概率值的连乘,而这种情况难以开展梯度优化,所以就要将

转化为

的形式使之易于计算。

根据

,带入公式 7 可得:

在上式基础上,将公式 5 带入

,可以继续推导得到:

这里是对策略函数参数

求梯度,而

由环境决定,与策略函数参数

无关,因此这两项的梯度为 0。将上式带入公式 8 可得:

由于期望无法直接计算,因此在实践中,通常是从概率分布

中采样

条轨迹近似计算期望:

可以使用学习率为

的梯度上升方法优化策略参数

,使之能够获得更高的回报:

为了解决训练过程中的不稳定问题,通常会在回报

上减去一个基线()

致使这一项的期望成为 0,如此在实际进行更新时概率值更新会出现有的是正的有的是负的情况,最终概率更新幅度加起来大致为 0,进而防止因某些动作未被采样致使动作概率降低的问题,回报的梯度如下所示:

其中

也就是回报的那种期望,这一项于实践里常用的计算法子是,于训练进程中去记录历史 。

的均值用以估计回报的期望。

公式 (13) 中仍然存在另外一个问题值得考虑,

的权重始终为

这就表明,于一条轨迹里,全部的动作具备同样的价值。然而,按直觉来讲的话,一条轨迹中通常不会所有动作皆是优良的,而是存在一些动作是好的,与此同时,存在另外一些动作是差的事情,可是当前这些动作却会以相同的方式来更新概率,这同样会致使训练出现不稳定的状况。所以,有必要赋予每个动作其理应得到的奖励。鉴于在交互进程中,Actor采取某一个动作仅仅会对于之后的状态产生影响,而不会对之前的状态产生影响。致使,没必要让每个动作的权重都成为全部奖励的总和,

,而只需要累计在当前动作之后的奖励之和

有一种直觉是,当下的动作对距现在时间较近的状态所产生的影响较大,而对时间距离较远的状态所施加的影响较小。基于此,在开展计算累计奖励这项行为的时候,针对未来距离较远的奖励采用予以折扣这样的处理方式,也就是

。引入新的奖励之后,公式(13)中回报的梯度表示为:

公式(14)中的

反应了给定状态

下采取动作

的收益,该收益称为动作价值( Value),并用

表示。而

算是动作价值的期望,鉴于动作价值的期望和具体动作没关联,所以这个期望也被称作状态价值(State Value),用以 。

来表示。 即:

将状态-动作

的梯度权重抽象为

。给定状态

下,

衡量了具体动作

的价值,而

则表示 Actor 采取各种可能动作的期望价值。因此

可以理解为采取特定动作

相比较于随机一个动作的优势()。优势越大,说明采取动作

要比其他可能动作更好,使用

来表示优势函数。

以前面公式(10)为依据,以公式(12)为参考,策略梯度的基本形式呈现如下:

实际计算时,需要从环境中采样很多轨迹

,然后按照上述策略梯度公式对策略函数参数

进行更新。但是由于

是从概率分布

中采样得到,一旦策略函数参数

更新,那么概率分布

就会出现改变,故而先前采样过的轨迹无法再度使用。所以策略梯度方法需在持续与环境交互里学习,而不能借助历史数据。因而此方法的训练效率不高。

在策略梯度方法里,存在一种情况,负责跟环境进行交互的 Actor,和负责学习的 Actor 是一样的,这样的训练方法被称作 On - 训练方法,与之相反,Off - 训练方法会把这两个 Actor 分开,让一个 Actor 固定地跟环境交互且不更新它,然后把交互所获得的轨迹交给另外一个负责学习的 Actor 去训练,Off - 的优势在于能够重复利用历史数据,进而提升训练效率,近端策略优化,也就是 PPO,它属于 Off - 。

假设负责学习的智能体策略为

,负责采样的智能体策略为

。按照公式(16)计算

,但由于 Off-,不能从

中采样得到

,只能从

中采样,因此可以对公式(16)进行修正:

回到之前所讲述的,关于策略梯度的具体的定义,就如同公式(14)那样,并且搭配结合优势函数 。

,可以将公式(14)策略梯度的计算改为如下形式:

结合公式(18),将其改写为如下形式:

此时优势函数从

变成

,采样策略也从

变成

由于:

假设状态只与环境有关,与具体策略无关,那么

,那么公式(20)可以改写为:

从上述式子的梯度形式反推原来的目标函数,可以得到如下公式:

其中,

表示需要优化的目标函数。

为了保证分布

不要相差太多,PPO 使用KL 散度来约束

,使之更加相似,表示如下:

公式(23)就是 PPO 最终的优化目标。

DPO

我们在之前详细介绍了RLHF的原理,整个过程是稍微有些复杂的。首先要训练好Model,接着在PPO阶段要加载4个模型,分别是Actor Model、Mode、Model和Model。这对计算资源的要求是极其高的,而且训练时间也是很长的,因而对于一般人来讲是很难玩得起的。

好在,2023年5月,斯坦福大学提出了PPO的简化版,即DPO,它只需加载2个模型,且不需要在线采样数据,极大地节省了训练开销,下图右边是DPO的训练流程。

图 7:PPO 和 DPO 的区别

下面就简单介绍下 DPO 是如何简化 PPO 的。

首先回顾一下前面讲的 RLHF 是怎么训练的:

第一步是进行训练,所训练的对象是Model,用于训练的数据是同一个的2个回答,这2个回答要让人或者GPT - 4o去标注出哪个回答更好,之后Model会去对如下目标进行优化,

其中

就是 Model 用来给回答打分。

是训练数据集,

是 ,

存在好的回答,存在不好的回答。即意味着,要尽可能地使好的回答产生较高得分,此种得分要高于不好的回答,进而将二者之间的差别予以拉大。

第二步是用 RL 算法来提升模型的得分。优化的目标是:

其中

是我们需要训练的 LLM,

对于这个优化所要达成的目标而言,是希望大型语言模型输出的回答在评分方面能够达到尽可能高的程度,而且,是Model

不要偏离

太多。

DPO 的作者们意识到,后面的这个式子是有显式解的。因为:

如果我们归一化一下分母,即取

,也就可以构造出一个新的概率分布:

那么上式变成了:

至于,因KL散度于两个分布相等之际选取获取最小值,所以,我们得出了如此这般的结论,那便是,RLHF训练祈望得以达成的最优概率分布即为

另一个角度来说,由

的公式,我们相当于是得到了

的关系,那么是否我们可以把训练

转化成直接去训练

呢?

简单转换一下

的定义式,可以得到:

带入公式(25),也就有了:

同样的,我们可以直接用这个优化目标去求

最终,我们可以得出 DPO 的 loss 如下所示:

这不就是DPO的loss嘛,DPO借助上述公式转换,将RLHF极具巧妙地转换成了SFT,于训练之际,不再需一同运行4个模型,也就是Actor Model 、 Mode、 Model和 Model啦,而仅需跑Actor以及2个模型。

DPO 变种

在DPO出来以后,鉴于其具备简单易用的特性,它很快就变成了大模型训练的标准配置,紧接着又出现了各种各样的变种,像SimPO、Step-DPO、MCTS-DPO、SPO、-DPO。接下来就以-DPO作为例子,讲述一下做了何种改动。

-DPO

是 2024 年 Meta 提出的 DPO 改进版。

思路很简单,下面介绍下具体流程:

下图是 -DPO 的具体流程:

图 7:-DPO 流程

由于,DPO在每轮训练完成之后,都会依据最新模型再度采样数据,构建pair对,所以,DPO处于 - 和 - 之间。

下图是 DPO 的两阶段流程:

图 8: DPO 两阶段流程总结

现今,强化学习已然成为大型模型的标配技术,特别是伴随O1的发布,此技术作为其核心方法,掌握强化学习,并且熟练运用这,已然成为不可或缺的技能。本文简要概述了RLHF的基础知识,还初步介绍了PPO和DPO,待日后有机会,会进一步深入学习PPO的其他变体。

参考

这段改写后的句子为:聊天具备的容易、快速以及类似基于人类反馈的强化学习的那种情况,全然不存在 。 (但不确定是否真符合你要求,你再看看) 标点符号按

关于强化学习从人类反馈优化在大型中的第一部分,近端策略优化算法

: Your Model is a Model

朱小霖:DPO 是如何简化 RLHF 的

:DPO: 论文解读及代码实践

RLHF : From to RLHF

书籍:《大规模语言模型——从原理到实践》

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。

扫一扫在手机阅读、分享本文