强化学习进化之路(PPO->DPO->KTO->ODPO->ORPO->simPO)

强化学习基础:强化学习分类,强化学习表示,值函数,策略迭代/值迭代, 主要的强化学习技术(蒙特卡洛学习/时间差分学习,DQN.REINFORCE,策略梯度/PPO/AC/A2C/TRPO)

强化学习策略更新方法on-policy与off-policy(重要性采样,q-Learning,sarsa)

需要LLM在训练过程中做生成的方法是 On Policy,其余的为Off Policy。
On Policy是包含了反馈机制,Off Policy不包含反馈机制。

若进行环境交互的模型与被更新的模型是相同的模型,通常这种更新策略被称为on-policy的策略。on-policy的方法会有一个问题,使用当前与环境交互的模型1得到的数据,不一定适合被用来更新得到模型2,并且需要每次更新都重新交互得到数据,十分的耗时。
而与之相对应的off-policy,通过使用其他Actor中与环境交互得到的数据来更新被训练的模型,也即进行环境交互的模型与被更新的模型是不同的模型。Off-policy的方式可以使用同一批采样数据多次更新模型。

on-policy: SARSA和REINFORCE算法,TRPO, PPO,GRPO
off-policy:Q-learning和DQN,DPO

在这里插入图片描述

一 PPO(Proximal Policy Optimization)

训练AC时需要与环境交互来采样很多轨迹,然后利用这些轨迹训练Actor和Critic;然而,这一过程是十分费时的,这可能导致我们无法高效的采集大量数据,进而充分的训练模型。因此,我们考虑是否能将已有的轨迹数据复用以提高训练效率。
这一思路将我们指向了off-policy RL的道路。具体而言,我们希望有两个策略网络π1和π2,其中π1不断与环境交互收集数据,这些数据可以重复使用以训练π2的参数。
有了这些铺垫,我们终于得到了一个可以高效训练的RL算法:Proximal Policy Optimization(PPO),近期获得很大关注的InstructGPT、ChatGPT便在底层使用了PPO进行强化学习。PPO是一种对上述Off-policy RL目标的实现,分析其优化目标不难发现,它首先最大化原始优化目标A*π2/π1,其次又防止π2/π1偏离1太多,即控制了两个分布的差距。

1.1 训练步骤

  1. 收集人类反馈,人工标注数据
    以summary任务为例,随机从数据集中抽取问题,对于每个问题,生成多个不同的回答
    人工标注,判断哪个回答更符合人类期望,给出排名
  2. 训练奖励模型(reward model, RM)
    对多个排序结果,两两组合,形成多个训练数据对
    奖励模型接受一对输入输出数据,给出评价:回答质量分数 (标量奖励,数值上表示人的偏好)
    调节参数使得高质量回答的打分比低质量的打分要高。
  3. 采用PPO强化学习,优化策略(Proximal Policy Optimization,近端策略优化)
    从数据集中抽取问题,使用PPO模型(包括ref model、actor model)生成回答(即不需要人工标注),并利用第二阶段训练好的奖励模型打分
    把奖励分数依次传递,由此产生策略梯度,通过强化学习的方式更新PPO模型参数,训练目标是使得生成的文本要在奖励模型上获得尽可能高的得分。
    在这里插入图片描述
    在这里插入图片描述

1.2 RM模型的训练

人工标注一些偏好数据(例如对于一个输入,我们让模型给出若干输出,并由标注人员对这些输出的好坏程度进行排序),并通过对比学习让RM最大化好输出与坏输出的分数差。

pairwise ranking loss:
在这里插入图片描述

RM 模型的目标是使得排序高的答案yw对应的标量分数要高于排序低的答案yl对应的标量分数,且越高越好,也就是使得损失函数中的rθ(x,yw)−rθ(x,yl)这个差值越大越好。’
将相减后的分数通过 sigmoid 函数,差值变成 - 1 到 1 之间,由于 sigmoid 函数是单调递增的函数,因此σ(rθ(x,yw)−rθ(x,yl))越大越好。越接近 1,表示yw比yl排序高,属于 1 这个分类,反正属于 - 1 这个分类,所以这里也可以看成是一个二分类问题。

奖励模型中每个问题对应的答案数量即K值为什么选 9 更合适,而不是选择 4 呢?
进行标注的时候,需要花很多时间去理解问题,但答案之间比较相近,假设 4 个答案进行排序要 30 秒时间,那么 9 个答案排序可能就 40 秒就够了。9 个答案与 4 个答案相比生成的问答对多了 5 倍,从效率上来看非常划算;
K=9时,每次计算 loss 都有 36 项rθ(x,y)需要计算,RM 模型的计算所花时间较多,但可以通过重复利用之前算过的值(也就是只需要计算 9 次即可),能节约很多时间。

奖励模型的损失函数为什么会比较答案的排序,而不是去对每一个答案的具体分数做一个回归?
每个人对问题的答案评分都不一样,无法使用一个统一的数值对每个答案进行打分。如果采用对答案具体得分回归的方式来训练模型,会造成很大的误差。但是,每个人对答案的好坏排序是基本一致的。通过排序的方式避免了人为的误差。

1.3 生成模型训练

“输入-生成模型输出-RM反馈”作为一个只有一步的轨迹(输入是s1,输出是a1,RM的反馈是奖励),并在这些轨迹上利用PPO进行强化学习。

训练过程中,policy model 会不断更新,为了不让它偏离SFT阶段的模型太远,OpenAI在训练过程中增加了KL离散度约束,保证模型在得到更好的结果同时不会跑偏,这是因为Comparison Data不是一个很大的数据集,不会包含全部的回答,对于任何给定的提示,都有许多可能的回答,其中绝大多数是 RM 以前从未见过的。对于许多未知(提示、响应)对,RM 可能会错误地给出极高或极低的分数。如果没有这个约束,模型可能会偏向那些得分极高的回答,它们可能不是好的回答。

RL 模型的优化目标是使得RL模型生成的文本在奖励模型中的得分越高越好,损失函数可以分为三个部分,打分部分、KL 散度部分以及预训练部分。

  • 打分部分:将 RL 模型的问题数据集x,通过π_ϕRL模型得到答案y,然后再把这对(x,y)代入 RW 模型进行打分,即损失函数公式中的rθ(x,y)。该分数越高,代表模型生成的答案越好。
  • KL 散度部分:在每次更新参数后,π_ϕRL会发生变化,x通过π_ϕRL生成的y也会发生变化,而rθ(x,y)奖励模型是根据π_SFT模型的数据训练而来。如果π_ϕRL和πSFT差的太多,则会导致rθ(x,y)的分数估算不准确。因此需要通过 KL 散度来计算,π_ϕRL生成的答案分布和πSFT生成的答案分布之间的距离,使得两个模型之间不要差的太远。损失函数公式中的log(π_ϕRL(y∣x)/πSFT(y∣x))就是在计算 KL 散度。由于 KL 散度是越小越好,而训练目标是损失函数越大越好,因此在前面需要加上一个负号。
  • 预训练部分:预训练部分对应损失函数中的Ex∼Dpretrain[log(πϕRL(x))]。如果没有该项,那么模型最终可能只对这一个任务能够做好,在别的任务上会发生性能下降。因此,需要将预训练阶段的目标函数加上,使得前面两个部分在新的数据集上做拟合的同时保证原始的数据也不会丢弃。

1.4 PPO训练技巧

原文:Advanced Tricks for Training Large Language Models with Proximal Policy Optimization

下文将介绍三类 PPO 训练技巧:
1)LLM 专用技巧,
2)PPO 专用技巧,以及
3)最新研究中的创新策略。
LLM 和 PPO 的专用技巧已经在多个 RL 框架中应用并取得了良好的效果。然而,最近提出的创新策略的任务适用性仍未得到验证。

LLM专用技巧

  • Token 级 KL 惩罚:
    计算 RL 模型与 SFT 模型的响应分布之间的 KL 散度。将其作为惩罚项加入训练中的奖励函数,具体而言,每个 Token 的奖励如下表示:
    在这里插入图片描述
    其中,x表示指令,y表示回复,I(St=EOS)表示是否是最后一个token.
  • 广义优势估计:
    GAE,一种 TD(λ) 回报估计方法,用于估算 PPO 中按 Token 划分的奖励。在实际操作中,我们通常将设置为1,这样 GAE 就变成了蒙特卡洛估计方法,代码链接:experience_maker.py
  • 设置GAE的为1
    使用基于规则的奖励模型时,能减少由价值网络引入的偏差。
  • 加入 SFT 损失:
    将监督下一个 Token 预测损失与 KL 散度一起融入 PPO,可以保留 SFT 模型的原有能力。

PPO专用技巧

  • 模型初始化:
    在使用 PPO 训练 LLM 时,需要初始化两个模型:演员模型和评论员模型。具体来说,使用 SFT 模型初始化演员模型,用奖励模型初始化评论员模型,从而确保 PPO 训练的高效性。
  • Adam 学习率:
    演员模型的 Adam 学习率通常是 SFT 模型学习率的十分之一。例如,在 OpenRLHF 中,SFT 模型的 Adam 学习率为,而演员模型的学习率为。此外,评论员模型的学习率大约是 SFT 模型的两倍,为。
  • 小批量更新:
    在学习阶段,PPO 通过打乱训练数据索引大小为 N × M(其中 N 为重放缓冲区的大小,M 为每个响应的长度),将数据分成小批量来计算梯度并更新策略。
  • 价值函数损失裁剪 :
    给定 ,PPO 通过最小化以下损失来拟合价值网络:
  • 奖励归一化和裁剪 :
    Bradley-Terry 模型通常会对容易的样本过拟合,而忽略较难的样本,导致简单响应对之间的奖励差距大于困难对之间的差距。这种变异会导致梯度不平衡。奖励归一化和裁剪通过使所有样本的奖励分布均匀化来缓解这一影响。我们采用分数归一化方法, = ( - ) / ,其中为训练数据集的奖励均值,为标准差。
  • 优势归一化:
    在使用均方误差训练价值网络时,算法对较大值较为敏感。归一化优势可以减轻这些大值的影响。采用分数归一化方法, = ( - ) / ,其中 是批次内样本的均值,为标准差。
  • 少量训练轮次:
    在训练策略网络时,限制训练轮限制训练轮次的数量是至关重要的。这一约束防止了更新后的模型的响应分布与旧模型的响应分布显著偏离,从而避免了对非策略样本的训练。具体而言,将训练轮次的数量设置为 1。

创新策略

  • 冻结演员模型参数以防止初始训练阶段的策略更新:
    当演员模型更新其策略时,生成的响应分布会逐渐偏离之前的分布。这会导致对优势函数的估计不准确,从而可能误导随后的策略更新。为了解决这一问题,冻结演员模型的参数可以确保响应分布保持不变,让评论员模型能够对该稳定的分布进行准确估计。
  • 奖励基线 :
    论文ChatGLM-RLHF: Practices of Aligning Large Language Models with Human Feedback发现在同一任务内或不同任务间,奖励分数存在显著的差异。因此,单纯依靠一个高奖励的响应来评判其质量是不准确的,必须考虑到其相关提示词和任务的影响。为了解决这些问题,作者提出引入一个参考基线,来减少由于绝对奖励值变化所带来的不稳定性:表示在当前策略下提示的回复。
  • PPO 中的拒绝采样微调:
    拒绝采样微调的过程包括从模型中采样K个输出,使用奖励模型选择最优的候选输出,并将该候选结果用于微调模型。论文Llama 2: Open foundation and fine-tuned chat models中将拒绝采样微调和近端策略优化 (PPO) 相结合,按顺序更新策略。在每个阶段,他们首先利用拒绝采样更新模型,然后再应用 PPO 进一步优化。

二 DPO (Direct Preference Optimization)

论文:https://arxiv.org/pdf/2305.18290.pdf (NIPS 2023)
解读:https://zhuanlan.zhihu.com/p/642569664 (loss的解读很清晰,提供了最小实现)

DPO 的核心思想

2.1 DPO 的核心思想

跳过了奖励建模步骤,直接使用偏好数据优化语言模型;
解决三个阶段的训练(SFT->RM->PPO)过程较长,更新迭代较慢的问题
https://juejin.cn/post/7302993899106713600

DPO (Direct Preference Optimization) 提出了一种使用二进制交叉熵目标来精确优化 LLM 的方法,以替代基于 RLHF 的优化目标,从而大大简化偏好学习 pipeline。也就是说,完全可以直接优化语言模型以实现人类的偏好,而不需要明确的奖励模型或强化学习。

与现有的算法一样,DPO 也依赖于理论上的偏好模型(如 Bradley-Terry 模型),以此衡量给定的奖励函数与经验偏好数据的吻合程度。然而,现有的方法使用偏好模型定义偏好损失来训练奖励模型,然后训练优化所学奖励模型的策略,而 DPO 使用变量的变化来直接定义偏好损失作为策略的一个函数。鉴于人类对模型响应的偏好数据集,DPO 因此可以使用一个简单的二进制交叉熵目标来优化策略,而不需要明确地学习奖励函数或在训练期间从策略中采样。

2.2 DPO 的Loss

在这里插入图片描述
在这里插入图片描述

2.3 为什么DPO里Chosen和Rejected概率会同时下降???

在DPO优化过程中, 对于chosen优化的方向是有不确定性的,DPO实际上优化保证整体
增大 ,而不是单一的让chosen prob增大。

解决方案
为chosen/rejected ratio设定不同的
我们在DPO优化时,可以确定性的优化使得正例reward>0,如DPO-P
在DPO优化时,同时对正利增加SFT优化
我们可以确定性优化单个策略,如KTO

总结
DPO优化调整参数后,chosen/rejected prob的变化不是确定性的一增一减
我们用最简单的数值来说明DPO实际上对chosen策略优化方向是具有不确定性的,而这个不确定性在BTmodel里就存在我们设定的Case里容易chosen/rejected prob同时下降,改进方法实际上要避免hacking的发生,尽量提升chosen prob,降低rejected prob
DPO实际优化是token序列,并不会像我们示例(仅1个token策略)那么脆弱

三 KTO: (Kahneman-Tversky Optimization)

https://zhuanlan.zhihu.com/p/693163438
论文:https://arxiv.org/pdf/2402.01306.pdf
代码:https://github.com/ContextualAI/HALOs

DPO依赖特殊的训练数据:问题 - 期望回答 - 拒绝回答
KTO避免了这个问题:只要告诉我这个回答是不是所期望的就行。
具体做法也很简单,把DPO的loss拆分成正负两部分:

如果只有正样本,那就只计算正样本的loss
如果只有负样本,那就只计算负样本的loss
如果正负样本都有(像DPO那种数据),那就都计算

r是DPO、RLHF中的loss,z是KL散度
在这里插入图片描述

四 ODPO(DPO with an offset)

论文:https://arxiv.org/abs/2402.10571
代码:https://github.com/rycolab/odpo

出发点是并非所有的偏好对都是相等程度的:在某些情况下,首选响应只比不受欢迎的响应稍微好一点,而在另一些情况下,对一个响应的偏好可能更强烈,例如,当另一个响应包含有害或有毒内容时。
本文提出了DPO的一种泛化形式,称为带偏移的DPO(ODPO),在微调过程中不会平等对待每个偏好对。直观地说,ODPO要求首选响应和不受欢迎响应之间的可能性差异大于一个偏移值。偏移值的确定基于一个响应相对于另一个响应的偏好程度。

实现也很简单,类似于triplet loss,加了一个offset
方法一,手动指定绝对值
方法二,指定比例

五 ORPO(Odds Ratio Preference Optimization)

(解释的很清晰,从PPO到DPO到ORPO

ORPO是一种创新的方法,旨在通过单步过程直接优化语言模型,而不需要独立的奖励模型或参考模型。这种方法通过修改传统的有监督微调(SFT)阶段的损失函数实现,以便更直接地对偏好进行学习和优化。

key sights:SFT可以有效提升正确样本的生成概率,但是SFT之后正样本和负样本的生成概率有同时上升的现象,从而导致SFT之后还需要一个进一步的纠正。
该现象的原因:SFT交叉损失熵: L=−m1k=1∑mi=1∑∣V∣yi(k)⋅log(pi(k))
其中 yi 是一个布尔值,表示词汇表V中的第i个标记是否为标签标记, pi 表示第 i 个标记出现的概率,m表示序列的长度。单独使用交叉熵不会对non-answer令牌的对数进行直接惩罚 ,因为 yi 将被设置为0,没有机制来惩罚被拒绝的响应,因此被拒绝的响应中令牌的对数概率随着选择的响应而增加,这从偏好对齐的角度来看是不希望的。
SFT loss对于rejected data没有惩罚项,所以SFT阶段不仅使得chosen data的Log Probability增加了,同时也增加了rejected data的Log Probability。通过实验观察,验证了这个假设。可以看到只用正例做SFT的同时观察负例的生成概率,会得到结论两者是同时上升的。通过ORPO的loss改进,这个问题得到了解决。

在这里插入图片描述
在这里插入图片描述

5.1 梯度对比

ORPO从本质上来说和DPO在解决的是同一个问题:拉远正负样本的距离,让模型更好地区分正负样本。
区别在于DPO是RLHF的一个无损推理(收敛到最优的policy上),ORPO则采用了加入惩罚项来加速模型更新。

Lratio的梯度进一步证明了使用优势比损失的合理性。由两个项组成:一个用于惩罚错误的预测δ(d) ,一个用于对比选择和拒绝的相应h(d) .
在这里插入图片描述

当有利响应的几率相对高于不利响应时,式9中的 δ(d) 将收敛于0。这表明 δ(d) 将扮演惩罚项的角色,如果模型更有可能产生被拒绝的响应,则加速参数更新。

公式中的h(d)表示选择响应和拒绝响应的两个梯度的加权对比。具体来说,当似然P(y|x)的对应侧较低时,分母中的1−P(y|x)放大了梯度。即当P不够大的时候,1-P 可以放大这一项从而加速优化。

5.2 计算负荷对比

与RLHF和DPO不同,ORPO不需要参考模型。从这个意义上说,ORPO在两个方面比RLHF和DPO计算效率更高:
• 内存分配
• 每批更少的FLOPs:DPO(4次前向传递) vs ORPO(2次)

RLHF和DPO背景下的参考模型( π SFT)表示经过监督微调(SFT)训练的模型,该模型将作为RLHF或DPO更新参数的基线模型。因此,在训练过程中需要两个 πSFT,一个是冻结的参考模型,另一个是经过调整的模型。此外,理论上,每个模型应计算两次正向传递,以获得所选响应和被拒绝响应的对数。换句话说,对于单个批次,总共发生了四次向前传递。另一方面,由于 π SFT是直接更新的,ORPO中不需要参考模型。这导致训练期间每批前传次数减少了一半。

六 simPO

详细参考参考1-微信文章

相比DPO,simPO不需要reference model,并且有更好的效果。simPO的另一个好处是,能够保持生成结果在较短长度下的质量。

6.1 DPO的局限

DPO的reward function有一个closed-form expression
在这里插入图片描述
基于此,通过Bradley-Terry model进行建模,得到损失函数
在这里插入图片描述

理论上,DPO的优化目标和RLHF是一致的,但是DPO有两个缺陷:

  • 仍然需要一个reference model,这样依然有比较大的内存和计算开销
  • 训练过程中优化的reward和推理时的生成指标存在差异,也就是训练和推理的目标不完全对齐

第二点怎么理解呢?模型在自回归生成response时,理论上是寻找最大化所有token平均log likelihood的组合,即
在这里插入图片描述
当然实际上这个组合空间太大了,没法直接遍历寻找,因此会使用一些解码策略来寻找局部最优解,比如greedy decoding、beam search或者top-k sampling等,不过我们还是可以按这个公式近似计算。另外这个公式还是可用在多个response/多选题的排序上的。
可以看到推理时的这个目标和DPO的reward差了个reference model。那么在DPO里,满足
在这里插入图片描述
论文做了一个统计,对于DPO,满足 和 两个结果对齐的比例大概只有50%,如下图所示
在这里插入图片描述
这就是训练和推理目标没有完全对齐。

6.2 simPO可以完全对齐

在这里插入图片描述

从上面这个分析,我们自然就想到要把训练的目标往推理目标上靠拢对齐。那么最直接的做法,就是把reward从
在这里插入图片描述
(这里省略了配分函数Z)变成
图片

注意这里有个长度归一化项,这个很重要,没有这一项的话,模型会倾向于生成长度更长但是低质量的内容。
除了修改reward的计算,simPO和IPO、ODPO一样,引入了一个reward margin,这是一个固定的超参,要求winning response和losing response的reward差值要大于reward margin在这里插入图片描述
按已有的经验,增大这个margin有助于提高模型泛化能力,但是太大的margin也会导致模型的退化。

至此我们得到了simPO的损失函数
在这里插入图片描述

6.3 梯度区别

在这里插入图片描述

DPO和simPO的梯度有两个主要区别:

  • 梯度权重:simPO的梯度权重没有包含reference model,这样当policy model给dispreferred response更高的reward的时候,权重就会变大,加强对这个错误case的修正力度。
  • simPO的梯度更新带有length-normalized;而如《Disentangling length from quality in direct preference optimization》所发现,DPO里更长的token会有更大的梯度值从而主导了梯度更新的过程,这导致训练出来的模型倾向于生成更长的模型。

10 综述

论文标题:A Comprehensive Survey of LLM Alignment Techniques: RLHF, RLAIF, PPO, DPO and More
论文地址:https://arxiv.org/pdf/2407.16216

奖励模型的子主题包括:1. 显式奖励模型与隐式奖励模型;2. 逐点奖励模型与偏好模型;3. 响应层面的奖励与 token 层面的奖励;4. 负偏好优化。
反馈的子主题包括:1. 偏好反馈与二元反馈;2. 成对反馈与列表反馈;3. 人类反馈与 AI 反馈
强化学习的子主题包括:1. 基于参考的强化学习与无参考的强化学习;2. 长度控制式强化学习;3. 强化学习中的不同分支;4. 在线策略强化学习与离线策略强化学习。
优化的子主题包括:1. 在线 / 迭代式偏好优化与离线 / 非迭代式偏好优化;2. 分离 SFT 和对齐与合并 SFT 和对齐。

10.1 直接人类偏好优化

传统 RLHF 方法通常涉及到优化源自人类偏好的奖励函数。该方法虽有效,但也可能带来一些难题,比如增大计算复杂度以及在估计和优化奖励时需要考虑偏置 - 方差权衡。参阅论文《High-dimensional continuous control using generalized advantage estimation》。
近期有研究探索了其它一些旨在根据人类偏好(无需依赖某个标量的奖励信号)来直接优化 LLM 策略的方法。
这些方法的目标是通过更直接地使用偏好数据来简化对齐流程、降低计算开销以及实现更稳健的优化。通过将该问题描述为一个偏好优化问题,而不是奖励估计和最大化问题,这些方法能提供一种将语言模型与人类判断对齐的不同视角:
SliC-HF,使用人类反馈进行序列似然校准,参阅论文《SliC-HF: Sequence likelihood calibration with human feedback》。
RSO,拒绝采样优化,参阅论文《Statistical rejection sampling improves preference optimization》。
DPO,直接偏好优化,参阅论文《Direct preference optimization: Your language model is secretly a reward model》。
DPOP,DPO-positive,参阅论文《Smaug: Fixing failure modes of preference optimisation with DPO-positive》。
β-DPO,参阅论文《β-DPO: Direct preference optimization with dynamic β》。
IPO,身份偏好优化,参阅论文《A general theoretical paradigm to understand learning from human preferences》。
sDPO,逐步 DPO,参阅论文《sDPO: Don’t use your data all at once》。
GPO,广义偏好优化,参阅论文《Generalized preference optimization: A unified approach to offline alignment》。

10.1 token 级 DPO

使用 DPO 时,奖励会被一起分配给 prompt 和响应。相反,使用 MDP 时,奖励会被分配给各个动作。后续的两篇论文在 token 层面阐述了 DPO 并将其应用扩展到了 token 级的分析。

DPO 可以执行 token 级信用分配的研究,参阅论文《From r to Q∗: Your language model is secretly a Q-function》,报道《这就是 OpenAI 神秘的 Q*?斯坦福:语言模型就是 Q 函数》。
TDPO,token 级 DPO,参阅论文《Token-level direct preference optimization》。

10.2 迭代式 / 在线 DPO

使用 DPO 时,会使用所有可用的偏好数据集来对齐 LLM。为了持续提升 LLM,应当实现迭代式 / 在线 DPO。这就引出了一个有趣的问题:如何高效地收集新的偏好数据集。下面两篇论文深入探讨了这一主题。

自我奖励式语言模型,参阅论文《Self-rewarding language models》。
CRINGE,参阅论文《The cringe loss: Learning what language not to model》。

10.3 二元反馈

事实证明,收集偏好反馈比收集二元反馈(比如点赞或点踩)的难度大,因此后者可促进对齐过程的扩展。KTO 和 DRO 这两项研究关注的便是使用二元反馈来对齐 LLM。

KTO,Kahneman-Tversky 优化,参阅论文《KTO: Model alignment as prospect theoretic optimization》。
DRO,直接奖励优化,参阅论文《Offline regularised reinforcement learning for large language models alignment》。

10.4 融合 SFT 和对齐

之前的研究主要还是按顺序执行 SFT 和对齐,但事实证明这种方法很费力,并会导致灾难性遗忘。后续的研究有两个方向:一是将这两个过程整合成单一步骤;二是并行地微调两个模型,最终再进行融合。

ORPO,比值比偏好优化,参阅论文《ORPO: Monolithic preference optimization without reference model》。
PAFT,并行微调,参阅论文《PAFT: A parallel training paradigm for effective llm fine-tuning》。

10.5 长度控制式 DPO 和无参考 DPO

之前有研究表明,LLM 的输出往往过于冗长。为了解决这个问题,R-DPO 和 SimPO 的关注重心是在不影响生成性能的前提下实现对响应长度的控制。
此外,DPO 必需参考策略来确保已对齐模型不会与参考模型有太大偏差。相较之下,SimPO 和 RLOO 提出了一些方法,可以在不影响 LLM 效果的情况下消除对参考模型的需求。

R-DPO,正则化 DPO,参阅论文《Disentangling length from quality in direct preference optimization》。
SimPO,简单偏好优化,参阅论文《SimPO: Simple preference optimization with a reference-free reward》,报道《全面超越 DPO:陈丹琦团队提出简单偏好优化 SimPO,还炼出最强 8B 开源模型》。
RLOO,REINFORCE Leave-One-Out,参阅论文《Back to basics: Revisiting reinforce style optimization for learning from human feedback in LLMs》。

10.6 逐列表的偏好优化

之前在 PPO 和 DPO 方面的研究关注的是成对偏好,而 RLHF 方面的研究则是收集逐列表的偏好来加速数据收集过程,之后再将它们转换成成对偏好。尽管如此,为了提升 LLM 的性能,直接使用逐列表的数据集来执行偏好优化是可行的。以下三篇论文专门讨论了这种方法。

LiPO,逐列表偏好优化,参阅论文《LIPO: Listwise preference optimization through learning-to-rank》。
RRHF,参阅论文《RRHF: Rank responses to align language models with human feedback without tears》。
PRO,偏好排名优化,参阅论文《Preference ranking optimization for human alignment》。

10.7 负偏好优化

这些研究有一个共同前提:当前这一代 LLM 已经在翻译和总结等任务上超越了人类性能。因此,可以将 LLM 的输出视为期望响应,而无需依靠将人类标注的数据视为偏好响应;这样做是有好处的。反过来,不期望得到的响应依然也可被用于对齐 LLM,这个过程就是所谓的负偏好优化(NPO)。

NN,否定负例方法,参阅论文《Negating negatives: Alignment without human positive samples via distributional dispreference optimization》。
NPO,负例偏好优化,参阅论文《Negative preference optimization: From catastrophic collapse to effective unlearning》。
CPO,对比偏好优化,参阅论文《Contrastive preference optimization: Pushing the boundaries of llm performance in machine translation》。

10.8 纳什学习

之前的研究通常是使用逐点奖励和 BT 模型来得到成对偏好。但是,这种方法比不上直接成对偏好建模并且无法解决成对偏好中的不一致问题。为了克服这些局限,一些研究提出了纳什学习方法。
根据人类反馈的纳什学习,参阅论文《Nash learning from human feedback》。

SPPO,自博弈偏好优化,参阅论文《A minimaximalist approach to reinforcement learning from human feedback》。
DNO,直接纳什优化,参阅论文《Direct nash optimization: Teaching language models to self-improve with general preferences》。

10.9 不同方法的比较

一些研究则是为了比较这些不同方法。这类研究可以阐释每种方法各自的优缺点。

  • 评估 DPO 及其变体
    论文《Insights into alignment: Evaluating dpo and its variants across multiple tasks》在推理、数学问题求解、可信度、问答和多任务理解等多种任务上全面评估了隐式奖励模型,即无强化学习算法,包括 DPO、KTO、IPO 和 CPO。这些评估涉及三个不同场景:1) 微调监督式微调(SFT)模型、2) 微调预训练模型、3) 微调指令模型。
    该研究发现,在大多数基准上,KTO 比其它对齐方法更优。此外,研究表明,对齐并不会显著提升模型的推理和问答性能,但确实能大幅提升模型的数学问题求解能力。该研究还注意到了数据量的重要性,对齐方法在较小的数据子集上的性能最佳。此外,研究发现 KTO 和 CPO 能有效绕过 SFT 阶段,在不影响性能的前提下直接进入对齐阶段。相比之下,当绕过 SFT 阶段,直接进入对齐阶段时,
    DPO 和 IPO 会表现出明显的性能下降。
  • DPO 是比 PPO 更好的 LLM 对齐方法吗?
    论文《Is DPO superior to PPO for LLM alignment? A comprehensive study》表明,DPO 可能存在固有局限,可能会产生有偏差的解答,并可能由于分布变化而导致性能下降,
    他们发现,DPO 训练出的策略倾向于未曾见过的响应,尤其是分布外的样本。而迭代式 / 在线 DPO 则能缓解这个问题,其做法是广泛探索响应空间并不断更新参考模型。相较之下,RLHF/PPO 则是通过优势归一化、大批量大小以及对参考模型使用指数移动平均来解决这些挑战。最终,这些发现表明 PPO 优于迭代式 / 在线 DPO,而这又进一步优于标准 DPO。

猜你喜欢

转载自blog.csdn.net/weixin_36378508/article/details/144066651
今日推荐