29f2eaab01948c485a3cfe2738ac8b10.png

知乎:是念
链接:https://zhuanlan.zhihu.com/p/710021282
学术分享,侵删

今年做过一段时间的alignment工作,做得有点不开心,各种social的原因,觉得自己的发挥受到了限制,最近又闲下来了,所以看了一些相关的论文,但是对这个方向还是挺感兴趣的,这里来分享一下我对alignment的一些理解。

对齐一般使用的是chat或者instruct模型,而不是base模型,自从OpenAI利用RLHF做人类偏好对齐后,开源社区就涌现了一些列的对齐技术,RL技术中,典型的是PPO(缺点是训练不太稳定,效率低),如果数据集是人类标注的,就是RLHF,如果是gpt,PaLM2等模型标注的,就是RLAIF,后面出现了非RL的技术,典型的就是DPO(直接构造偏好数据集进行优化),然后有一些工作觉得SFT+RLHF不是end2end,索性直接在SFT上加一个alignment的loss,这个典型的就是ORPO,还有一部分工作觉得DPO训练的pair-wise(x,y_w,yl)的数据集获取很困难,于是有了point-wise(x,y,label)的方法,典型的是KTO,还有一些就是优化Alignment的输出长度的,加了一个类似正则化项的限制等等;最近又出现了一种step-wise的优化方法(例如Step-DPO),直接对reasoning的过程进行优化限制(step-level),而不是等模型输出完了再进行优化(Instance-level);另外,有人觉得reward model无法优化general perference(不可传递性偏好,比如a>b,b>c, c>a的情况)于是有了DNO,SPO(引入了纳什均衡,Nash equilibrium),有的人觉得DPO优化的是单轮,因此对多轮的偏好优化做了拓展(multi-turn DPO);最后还有一波人,索性直接摆烂,方法超不过你,就直接合成数据,用MCTS(exploration and exploitation保证多样性和质量)等方式造完数据,直接DPO开始训练就完了,完美的数据闭环,alignment的论文有一个特点,就是数学推导过程超级的长,(可能最初的就是强化学习的理论得来 ,数学基因在那里,也可能作者写论文的时候没啥好写的,开始秀起数学能力了,能占篇幅,哈哈哈)。

483cdde644a9f6c94b965cb0f843dad1.png

DPO我这里简单介绍一下,因为后面的改进都跟它有关,它跟PPO主要区别就是不用单独训练一个reward模型了,直接构造偏好数据集对齐原来的模型即可。316dee93d69f4cd50e60b3863cd81a34.pngb953ad90298f697a4a6bd56ce3fe8a4d.png

这里面的y-w就是正样本(你期望的输出),y-l就是负样本(你不期望的输出),然后数据集就是(x,y-w,y-l)这样的pair-wise偏好数据集。下面是一些RLHF在2024年发展的一些代表性的技术,如果想了解2023年的一些alignment迭代方法,可以参考下面的链接,跟本文有少量交叉,另外,欢迎读者给出一些改进意见:https://zhuanlan.zhihu.com/p/662753985

KTO: Model Alignment as Prospect Theoretic Optimization

Kahneman和Tversky的前景理论告诉我们,人类以一种有偏见但定义明确的方式感知随机变量;例如,人类以厌恶损失而闻名。我们表明,将LLM与人类反馈相匹配的目标隐含地包含了许多这些偏见——这些目标(如DPO)在交叉熵最小化方面的成功部分可以归因于它们属于我们称之为人类感知损失(HALO)的损失函数家族。然而,这些方法赋予人类的效用函数仍然与前景理论文献中的效用函数不同。使用Kahneman-Tversky人类效用模型,论文提出了一种直接最大化生成效用的HALO,而不是像目前的方法那样最大化偏好的对数可能性。这种方法称为KTO,它在1B到30B的尺度上与基于偏好的方法的性能相匹配或超过,尽管它只从二进制信号(0或者1)中学习输出是否可取。更广泛地说,我们的工作表明,没有一个HALO是普遍优越的;最佳损失取决于最适合给定设置的归纳偏差,这是一个经常被忽视的考虑因素。

KTO的损失函数如下,本质上就是把pair-wise的公式变成了point-wise的方式:

19d335bcd3b37037b601bc4268ce48aa.png

为了更稳定的训练,我们不通过 z0 (当成类似常量的值,仅仅是求出来,也不产生梯度)进行反向传播;它纯粹是为了控制损失饱和而存在的。直观地说,KTO 的工作原理如下:如果模型以直接地(blunt manner,不知道咋翻译)的方式增加了理想示例的奖励,那么 KL 惩罚也会增加,并且不会取得任何进步。这迫使模型准确地了解是什么让输出变得理想,这样就可以增加奖励,同时保持 KL 项持平(甚至减少)。在实际实现中,KL term是通过当前batch里面的正负样本进行估计得到的,详细可以debug KTOTrainer的源代码:

https://github.com/huggingface/trl/blob/dcee683d968444179f57bffa5a49a7ec13f57654/trl/trainer/kto_trainer.py#L852

论文链接:
KTO: Model Alignment as Prospect Theoretic Optimization
https://arxiv.org/abs/2402.01306
代码链接:
https://github.com/huggingface/trl/blob/main/trl/trainer/kto_trainer.py#L256

ORPO Monolithic Preference Optimization without Reference Model

模型对齐技术的比较如下图所示。ORPO通过将弱惩罚分配给被拒绝的响应,将强适应信号分配给所选择的响应,并将简单的对数比值比项附加到负对数似然损失,以单步方式在没有参考模型(reference model)的情况下对齐语言模型。

b85b8f0b1066b405ab553330fe4001b8.png

ORPO的目标函数如下:

ORPO的梯度:L Ratio的梯度进一步证明了使用比值比损失的合理性。它包括两个术语:一个是惩罚错误的预测,另一个是对选择的和拒绝的回答进行对比。当有利响应的几率相对高于不利响应的几率时,方程9中的δ(d)将收敛到0。这表明,如果模型更有可能产生被拒绝的响应,δ(d)将发挥惩罚项的作用,加速参数更新。

同时,方程10中的h(d意味着来自所选择的和被拒绝的响应的两个梯度的加权对比度。具体而言,当似然性P(y|x)的对应侧较低时,分母中的1−P(y|x)放大梯度。对于所选响应,随着可能性的增加,这加速了模型对所选响应分布的适应。

详细内容请参考论文:

论文链接:
ORPO: Monolithic Preference Optimization without Reference Model
https://arxiv.org/abs/2403.07691
代码链接: 
https://github.com/huggingface/trl/blob/main/trl/trainer/orpo_trainer.py

SimPO Simple Preference Optimization with a Reference-Free Reward

直接偏好优化 (DPO) 是一种广泛使用的离线偏好优化算法,它重新参数化了从人类反馈 (RLHF) 强化学习中的奖励函数,以提高简单性和训练稳定性。论文提出了 SimPO,这是一种更简单但更有效的方法。SimPO 的有效性归功于一个关键设计:使用序列的平均对数概率作为隐式奖励。这种奖励公式与模型生成更好地保持一致,并且消除了对参考模型的需求,使其计算和内存效率更高。此外,在 Bradley-Terry 目标中引入了目标奖励边际,以鼓励获胜和失败响应之间的更大边际,从而进一步提高算法的性能。实验的结果表明,SimPO 的表现始终显著优于现有方法,且不会大幅增加响应长度。具体而言,SimPO 在 AlpacaEval 2 上的表现比 DPO 高出 6.4 分,在 Arena-Hard 上的表现比 DPO 高出 7.5 分。基于 Llama3-8B-Instruct 构建的最佳模型在 AlpacaEval 2 上实现了惊人的 53.7 长度控制胜率——在排行榜上超越了 Claude 3 Opus,在 Arena-Hard 上实现了 36.5 胜率——使其成为最强大的 8B 开源模型。具体地,SimPO的reward函数添加了Length-normalized reward formulation:f22dcd0505f6984bd0fd314e0f8d6cec.pngSimPO的目标函数,本质上是在DPO的基础上多了一个gamma(论文叫做target reward margin)的参数:

所以最终的损失函数为: 

局限性:math benchmarks性能会下降,缺乏理论依据,只注重helpfulness,忽略了safety和honesty和fairness。

论文链接: 
https://arxiv.org/abs/2405.14734 
代码链接: 
https://github.com/huggingface/trl/blob/main/trl/trainer/cpo_trainer.py

Token-level Direct Preference Optimization

微调预训练的大型语言模型(LLM)对于使其与人类价值观和意图保持一致至关重要。该过程通常利用成对比较和KL散度等方法与参考LLM进行比较,重点是评估模型生成的完整答案。然而,这些反应的产生是在token级别上发生的,遵循顺序的、自回归的方式。论文介绍了 Token-level Direct Preference Optimization (TDPO),这是一种通过在Token-level 优化策略来使LLM与人类偏好保持一致的新方法。与之前在发散效率方面面临挑战的方法不同,TDPO为每个token引入了前KL 散度约束,提高了对齐和多样性。TDPO将Bradley Terry模型用于基于token的奖励系统,增强了KL散度的调节,同时保持了简单性,不需要显式的奖励建模。各种文本任务的实验结果表明,TDPO在平衡对齐与生成多样性方面具有卓越的性能。值得注意的是,在受控情绪生成(IMDB情感分析数据集)和单轮对话数据集中,TDPO的微调比DPO达到了更好的平衡,并且与基于DPO和PPO的RLHF方法相比,显著提高了生成响应的质量。

DPO,TDPO1,TDPO2的目标函数如下,sg表示的是stop gradient操作,TDPO1和TDPO2通过增加额外的参数对KL散度进行精细化的控制。8b22be115444272379ac1dd0002d75f6.png算法流程如下:be06fa524795129501623880bf20ca3f.png

论文链接: 
Token-level Direct Preference Optimization
https://arxiv.org/abs/2404.11999
代码链接: 
https://github.com/Vance0124/Token-level-Direct-Preference-Optimization

Step-DPO: Step-wise Preference Optimization for Long-chain Reasoning of LLM

数学推理对大型语言模型 (LLLM) 提出了重大挑战,因为要实现准确性需要广泛而精确的推理链。确保每个推理步骤的正确性至关重要。为了解决这个问题,旨在通过RLHF来增强 LLM 的稳健性和真实性。然而,直接偏好优化 (DPO) 对长链数学推理的益处有限,因为采用 DPO 的模型很难识别错误答案中的细节错误。这种限制源于缺乏细粒度的过程监督。论文提出了一种简单、有效且数据高效的 Step-DPO 方法,它将单个推理步骤视为偏好优化的单位,而不是整体评估答案。此外,为 Step-DPO 开发了一个数据构建pipeline,可以创建包含 10K 个逐步偏好对的高质量数据集。在 DPO 中,由于后者的分布不均性质,自生成数据比人类或 GPT-4 生成的数据更有效。研究结果表明,对于具有超过 700 亿个参数的模型,仅需 10,000 个偏好数据对和少于 500 个 Step-DPO 训练步骤即可使 MATH 的准确率提高近 3%。值得注意的是,当将 Step-DPO 应用于 Qwen2-72B-Instruct 时,在 MATH 和 GSM8K 的测试集上分别获得了 70.8% 和 94.0% 的分数,超越了一系列闭源模型,包括 GPT-4-1106、Claude-3-Opus 和 Gemini-1.5-Pro。下图显示了DPO和Step-DPO的区别:

Step-DPO的损失函数如下,本质上就是从以前的对运行结果的loss,加上了对中间推理过程的loss:

b440a54de851a6b3bdb0b3f32be95c19.png

Step-DPO的数据集构造过程如下:

  1. Error collection:使用了COT的推理prompt,例如"Let’s think step by step. Step 1:",这确保模型的推理结果被结构化为多个推理步骤,每个步骤都明确以“Step i:”开头。

  2. Step localization:假设每个错误推理结果都明确地呈现为一系列推理步骤 y = s1、s2、...、sn,继续验证每个推理步骤的正确性,直到找到第一个错误并记录其步骤号 k。此过程可以手动完成,也可以使用 GPT-4。我们选择 sk 作为错误推理步骤 s lose,从而得到一个包含错误步骤的数据集。

  3. Rectification:为了得到 D2 中每个样本对应的正确推理步骤,需要通过提示 x 和前面的正确推理步骤 s1∼k−1 推断模型 π ref,来抽样多个输出 y cont。我们保留最终答案与基本事实相符的输出。在剩余的输出中,选择 y_cont 中的第一个推理步骤作为 swin,从而得到最终数据集D。

8d2464b4e8e257828512d826e1c7a8d2.pngStep-DPO的示例如下,包括prompt, initial_reasoning_steps, chosen_step, rejected step这四个部分:

26490107463b239c4285230c5bb0b98f.png

论文链接: 
https://arxiv.org/abs/2406.18629 
代码链接: 
https://github.com/dvlab-research/Step-DPO

Direct Multi-Turn Preference Optimization for Language Agents

在开发language agents时,将大型语言模型 (LLM) 调整为agents任务至关重要。直接偏好优化 (DPO) 是一种很有前途的适应技术,可以减轻复合错误,提供一种直接优化强化学习 (RL) 目标的方法。然而,由于无法取消分区函数,将 DPO 应用于多轮任务会带来挑战。克服这一障碍需要使分区函数独立于当前状态,并解决首选和不首选轨迹之间的长度差异。因此论文在 RL 目标中用状态动作占用度量约束替换策略约束,并在 Bradley-Terry 模型中添加长度规范化,从而产生一种名为 DMPO 的新型损失函数,用于多轮agents任务,并提供理论解释。在三个多轮agents任务数据集上进行的大量实验证实了 DMPO 损失的有效性和优越性。
DMPO 损失的说明如下图,它通过最大化首选轨迹相对于非首选轨迹的可能性来直接优化 RL 目标。08141ba06e7448e5ceb2ce4290090f98.png受模仿学习的启发,用 SAOM 约束代替策略约束,并得到以下 RL 目标:b295c2e03b4ab2188980d8d327e051d5.png公式推导的最终结果,公式打出来比较耗时,所以就直接截图了:a3061cdd990159dc907e4e9af6cc4834.pngCase study,在本部分中,通过 WebShop 的一个示例比较了 DPO 和 DMPO 的性能。在该示例中,DPO 丢失了答案第一步所需的价格信息。相比之下,DMPO 在初始步骤中提供了全面的答案,从而获得了成功的结果。966ec312bf607bb4cfc85eeee30921c6.jpeg更多详细内容请参考论文链接:
https://arxiv.org/abs/2406.14868

A Minimaximalist Approach to Reinforcement Learning from Human Feedback

论文提出了自我对弈偏好优化 (SPO),这是一种从人类反馈中进行强化学习的算法。SPO方法是极简主义的,因为它不需要训练奖励模型,也不需要不稳定的对抗训练,因此相当容易实现。SPO方法是极繁主义的,因为它可以证明处理非马尔可夫、非传递和随机偏好,同时对困扰离线顺序预测方法的复合错误具有鲁棒性。为了实现上述品质,我们以极小极大赢家 (Minimax Winner, MW) 的概念为基础,这是社会选择理论文献中的偏好聚合概念,它将从偏好中学习定义为两种策略之间的零和博弈。通过利用这种博弈的对称性,SPO可以简单地让单个agent与自己对弈,同时保持强大的收敛保证,而不是使用传统的两种策略决斗技术来计算 MW。实际上,这相当于从策略中抽取多个轨迹,要求偏好或教师模型对它们进行比较,然后使用获胜比例作为特定轨迹的奖励。在一系列连续控制任务中,能够比基于奖励模型的方法更有效地学习,同时保持对在实践中汇总人类判断时经常出现的不可传递(intransitive)和随机(stochastic)偏好的鲁棒性。

如下图,基于偏好的 RL / RLHF 的标准流程(左)涉及基于成对偏好数据集训练奖励模型(即分类器),然后通过 RL 对其进行优化。引入了 SPO(右),这种方法直接基于偏好或教师模型提供的偏好反馈进行优化,每个轨迹都会根据其偏好的其他 onpolicy 轨迹的比例获得奖励。我们通过经验证明和验证,这种方法比以前的研究对非传递、非马尔可夫和嘈杂偏好更具鲁棒性。e7b2843af0487f2b6537a300add4ff5b.png

论文的贡献如下:

  1. 推导出 SPO:一种避免奖励建模、复合错误和对抗性训练的 RLHF 算法。通过基于社会选择理论中的 Minimax Winner 概念,能够将 RLHF 构建为双人零和游戏。然后,我们利用该游戏收益矩阵的对称性来证明可以简单地训练单个agent对抗自己。

  2. 使用基于归约的分析来研究 SPO 的收敛特性。当存在非传递偏好时,证明 SPO 以底层无悔算法(no-regret algorithm,一种在线学习的方法,在线学习中,数据是逐一呈现的,算法需要在收到每个数据点后立即做出决策,并且无法回过头去修改之前的决策。有兴趣可以问问gemini机器人)的速率收敛到近似的 Minimax Winner。当存在底层奖励函数时,该方法以与标准技术相匹配的快速速度收敛到最佳策略。

  3. 实验证明,在具有现实偏好函数的一系列连续控制任务中,SPO 比基于奖励模型的方法更有效。在各种偏好设置中,SPO方法能够比基于奖励模型的方法更高效地学习样本。这包括基于最简单情况下的地面实况马尔可夫奖励的轨迹级比较、随机偏好、轨迹级非马尔可夫偏好和通过聚合子群体而引起的非传递偏好。

一个非传递偏好函数 P1 超过(a, b, c, d)。如果 P(x ≻ y) = 1,则 P1(x, y) = 1;如果 P(x ≻ y) = 0,则 P1(x, y) = −1;如果 P(x ≻ y) = 0.5,则 P1(x, y) = 0。请注意,没有唯一的科普兰赢家(Copeland Winner)。下面的矩阵具有不传递性:a ≻ c,c ≻ d,d ≻ a。这意味着没有奖励函数可以解释上述偏好,因为它需要同时满足 r(a) > r(c)、r(c) > r(d) 和 r(d) > r(a),这是不可能的。因此,模型被迫在 a 和 d 之间打破平局,这可能会让一半的人口感到不满意。实际上,这种打破平局是基于用于训练奖励模型的极其嘈杂的数据执行的,这完全是任意的。59b682a55eba928f873edc8efbace45a.png

由于篇幅限制,我就不展开讲这篇论文了,有兴趣可以参考论文,论文链接:
https://arxiv.org/abs/2401.04056

还有一篇DNO也是类似技术的延续,有兴趣可以参考链接:
https://arxiv.org/abs/2404.03715

Monte Carlo Tree Search Boosts Reasoning via Iterative Preference Learning

文引入了一种旨在通过迭代偏好学习过程增强大型语言模型 (LLM) 推理能力的方法(叫做MCTS-DPO),该方法受到 AlphaZero 所采用的成功策略的启发。MCTS-DPO利用蒙特卡洛树搜索 (MCTS) 迭代收集偏好数据,利用其前瞻能力将实例级奖励分解为更细粒度的step-level信号。为了增强中间步骤的一致性,结合了结果验证和逐步自我评估,不断更新新生成数据的质量评估。所提出的算法采用直接偏好优化 (DPO) 来使用此新生成的步骤级偏好数据更新 LLM 策略。理论分析揭示了使用策略采样数据对于成功自我改进的重要性。对各种算术和常识推理任务的广泛评估表明,与现有模型相比,性能有显著提高。例如,MCTS-DPO方法在 GSM8K、MATH 和 ARC-C 上的表现优于 Mistral-7B 监督微调 (SFT) 基线,准确率分别大幅提升至 81.8% (+5.9%)、34.7% (+5.8%) 和 76.4% (+15.8%)。

如下图,蒙特卡洛树搜索 (MCTS) 通过迭代偏好学习提升模型性能。MCTS-DPO框架的每次迭代(左侧)包含两个阶段:MCTS 用于收集step level偏好,偏好学习用于更新策略。具体来说,我们使用 MCTS 估计的动作值 Q 来分配偏好,其中 Q 值较高和较低的步骤将分别标记为正数据(绿色)和负数据(紫色)。Q 的比例在颜色图中可视化。使用右侧训练过程中的验证准确率曲线展示了迭代学习框架中在线方式的优势。ARC-C 验证的性能说明了我们提出的方法与其离线变体相比的有效性和效率。4ef32d8158901a303db322f809dde038.pngMCTS-DPO的流程如下(画红色方框的部分,下表弄错了,其中一个应该是y_w):0c6a6c37dd2af9598b0f95967458af12.pngDPO的损失函数如下,加入了label smothing平滑项alpha, beta则是KL散度的缩放参数:84973882c35baa6b88e243db65aa4aec.png由于篇幅限制,其他的内容请参考论文:

论文链接: 
https://arxiv.org/abs/2405.00451 
代码链接: 
https://github.com/YuxiXie/MCTS-DPO


应用场景

模型安全

这是alignment最开始的一个功能(论文里面提到的safety, helpfulness等),限制回答一些黄赌毒以及一些敏感的问题,主要是安全合规,能让大模型朝着积极有意义的发展的方向发展。

Agents应用

Agents是现在大模型最流行的应用范式,现有的工作主要是利用Agents生成偏好数据,来优化模型,提升模型的性能;也有直接构造环境,使用环境的数据来做agents的偏好优化(比如agentsQ利用MCTS-DPO来实现订票),让agents的能力得到了拓展。


总结

总的来说,大模型的Alignment现在集中在损失函数的修改,以及RL理论的集成,数据的合成上面,训练方法从不稳定的PPO变成的DPO及其变体,虽然论文有一大堆的推导,实际上是越来越简单了,自然门槛会越来越低,后面出现了AgentQ,我仔细看了一下原来是MCTS+DPO,我有个没有依据的猜测,会不会后面没有SFT了,只有DPO+environment,源源不断的跟环境交互进行训练。


参考文献

  1. A Comprehensive Survey of LLM Alignment Techniques: RLHF, RLAIF, PPO, DPO and More
    https://www.arxiv.org/abs/2407.16216

  2. RLAIF vs. RLHF: Scaling Reinforcement Learning from Human Feedback with AI Feedback
    https://arxiv.org/abs/2309.00267

  3. Direct Preference Optimization: Your Language Model is Secretly a Reward Model
    https://arxiv.org/abs/2305.18290


备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

1e6b685e91ebf1cec5b2849508622a0e.png

id:DLNLPer,记得备注

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐