今年做过一段时间的 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 的论文有一个特点,就是数学推导过程超级的长(可能最初的就是强化学习的理论得来,数学基因在那里,也可能作者写论文的时候没啥好写的,开始秀起数学能力了,能占篇幅哈哈哈)。
DPO 我这里简单介绍一下,因为后面的改进都跟它有关,它跟 PPO 主要区别就是不用单独训练一个 reward 模型了,直接构造偏好数据集对齐原来的模型即可。
这里面的 y-w 就是正样本(你期望的输出),y-l 就是负样本(你不期望的输出),然后数据集就是(x,y-w,y-l)这样的 pair-wise 偏好数据集。下面是一些 RLHF 在 2024 年发展的一些代表性的技术,如果想了解 2023 年的一些 alignment 迭代方法,可以参考下面的链接,跟本文有少量交叉,另外,欢迎读者给出一些改进意见:https://zhuanlan.zhihu.com/p/662753985
KTO
Kahneman 和 Tversky 的前景理论告诉我们,人类以一种有偏见但定义明确的方式感知随机变量;例如,人类以厌恶损失而闻名。我们表明,将 LLM 与人类反馈相匹配的目标隐含地包含了许多这些偏见——这些目标(如 DPO)在交叉熵最小化方面的成功部分可以归因于它们属于我们称之为人类感知损失(HALO)的损失函数家族。
然而,这些方法赋予人类的效用函数仍然与前景理论文献中的效用函数不同。使用 Kahneman-Tversky 人类效用模型,论文提出了一种直接最大化生成效用的 HALO,而不是像目前的方法那样最大化偏好的对数可能性。
这种方法称为 KTO,它在 1B 到 30B 的尺度上与基于偏好的方法的性能相匹配或超过,尽管它只从二进制信号(0 或者 1)中学习输出是否可取。更广泛地说,我们的工作表明,没有一个 HALO 是普遍优越的;最佳损失取决于最适合给定设置的归纳偏差,这是一个经常被忽视的考虑因素。
KTO 的损失函数如下,本质上就是把 pair-wise 的公式变成了 point-wise 的方式:
为了更稳定的训练,我们不通过 z0 (当成类似常量的值,仅仅是求出来,也不产生梯度)进行反向传播;它纯粹是为了控制损失饱和而存在的。直观地说,KTO 的工作原理如下:如果模型以直接地(blunt manner,不知道咋翻译)的方式增加了理想示例的奖励,那么 KL 惩罚也会增加,并且不会取得任何进步。
这迫使模型准确地了解是什么让输出变得理想,这样就可以增加奖励,同时保持 KL 项持平(甚至减少)。在实际实现中,KL term 是通过当前 batch 里面的正负样本进行估计得到的,详细可以 debug KTOTrainer 的源代码:
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
模型对齐技术的比较如下图所示。ORPO 通过将弱惩罚分配给被拒绝的响应,将强适应信号分配给所选择的响应,并将简单的对数比值比项附加到负对数似然损失,以单步方式在没有参考模型(reference model)的情况下对齐语言模型。
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
直接偏好优化(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:
SimPO 的目标函数,本质上是在 DPO 的基础上多了一个 gamma(论文叫做target reward margin)的参数:
所以最终的损失函数为:
局限性:math benchmarks 性能会下降,缺乏理论依据,只注重 helpfulness,忽略了 safety 和 honesty 和 fairness。
请参考论文:
SimPO Simple Preference Optimization with a Reference-Free Reward
https://arxiv.org/abs/2405.14734
https://github.com/princeton-nlp/SimPO
TDPO
微调预训练的大型语言模型(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散度进行精细化的控制。
算法流程如下:
请参考论文:
Token-level Direct Preference Optimization
https://arxiv.org/abs/2404.11999
https://github.com/Vance0124/Token-level-Direct-Preference-Optimization
Step-DPO数学推理对大型语言模型(LLM )提出了重大挑战,因为要实现准确性需要广泛而精确的推理链。确保每个推理步骤的正确性至关重要。为了解决这个问题,旨在通过 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:
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。
Step-DPO 的示例如下,包括 prompt, initial_reasoning_steps, chosen_step, rejected step 这四个部分:
请参考论文:
Step-DPO: Step-wise Preference Optimization for Long-chain Reasoning of LLM
https://arxiv.org/abs/2406.18629
https://github.com/dvlab-research/Step-DPO
DMPO
在开发 language agents 时,将大型语言模型(LLM)调整为 agents 任务至关重要。直接偏好优化(DPO)是一种很有前途的适应技术,可以减轻复合错误,提供一种直接优化强化学习(RL)目标的方法。
然而,由于无法取消分区函数,将 DPO 应用于多轮任务会带来挑战。克服这一障碍需要使分区函数独立于当前状态,并解决首选和不首选轨迹之间的长度差异。
因此论文在 RL 目标中用状态动作占用度量约束替换策略约束,并在 Bradley-Terry 模型中添加长度规范化,从而产生一种名为 DMPO 的新型损失函数,用于多轮 agents 任务,并提供理论解释。在三个多轮 agents 任务数据集上进行的大量实验证实了 DMPO 损失的有效性和优越性。
DMPO 损失的说明如下图,它通过最大化首选轨迹相对于非首选轨迹的可能性来直接优化 RL 目标。
受模仿学习的启发,用 SAOM 约束代替策略约束,并得到以下 RL 目标:
公式推导的最终结果,公式打出来比较耗时,所以就直接截图了:
Case study,在本部分中,通过 WebShop 的一个示例比较了 DPO 和 DMPO 的性能。在该示例中,DPO 丢失了答案第一步所需的价格信息。相比之下,DMPO 在初始步骤中提供了全面的答案,从而获得了成功的结果。
请参考论文:
Direct Multi-Turn Preference Optimization for Language Agents
https://arxiv.org/abs/2406.14868
SPO
论文提出了自我对弈偏好优化(SPO),这是一种从人类反馈中进行强化学习的算法。SPO 方法是极简主义的,因为它不需要训练奖励模型,也不需要不稳定的对抗训练,因此相当容易实现。SPO 方法是极繁主义的,因为它可以证明处理非马尔可夫、非传递和随机偏好,同时对困扰离线顺序预测方法的复合误差具有鲁棒性。
为了实现上述品质,我们以极小极大赢家(Minimax Winner, MW)的概念为基础,这是社会选择理论文献中的偏好聚合概念,它将从偏好中学习定义为两种策略之间的零和博弈。
通过利用这种博弈的对称性,SPO 可以简单地让单个 agent 与自己对弈,同时保持强大的收敛保证,而不是使用传统的两种策略决斗技术来计算 MW。实际上,这相当于从策略中抽取多个轨迹,要求偏好或教师模型对它们进行比较,然后使用获胜比例作为特定轨迹的奖励。
在一系列连续控制任务中,能够比基于奖励模型的方法更有效地学习,同时保持对在实践中汇总人类判断时经常出现的不可传递(intransitive)和随机(stochastic)偏好的鲁棒性。
如下图,基于偏好的 RL / RLHF 的标准流程(左)涉及基于成对偏好数据集训练奖励模型(即分类器),然后通过 RL 对其进行优化。引入了 SPO(右),这种方法直接基于偏好或教师模型提供的偏好反馈进行优化,每个轨迹都会根据其偏好的其他 onpolicy 轨迹的比例获得奖励。我们通过经验证明和验证,这种方法比以前的研究对非传递、非马尔可夫和嘈杂偏好更具鲁棒性。
论文的贡献如下:
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 之间打破平局,这可能会让一半的人口感到不满意。实际上,这种打破平局是基于用于训练奖励模型的极其嘈杂的数据执行的,这完全是任意的。
由于篇幅限制,我就不展开讲这篇论文了,有兴趣可以参考论文:
A Minimaximalist Approach to Reinforcement Learning from Human Feedback
https://arxiv.org/abs/2401.04056
还有一篇 DNO 也是类似技术的延续,有兴趣可以参考链接:
https://arxiv.org/abs/2404.03715
MCTS-DPO
文引入了一种旨在通过迭代偏好学习过程增强大型语言模型(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 验证的性能说明了我们提出的方法与其离线变体相比的有效性和效率。
MCTS-DPO的流程如下(画红色方框的部分,下表弄错了,其中一个应该是y_w):
DPO 的损失函数如下,加入了 label smothing 平滑项 alpha, beta 则是 KL 散度的缩放参数:
由于篇幅限制,其他的内容请参考论文:
Monte Carlo Tree Search Boosts Reasoning via Iterative Preference Learning
https://arxiv.org/abs/2405.00451
https://github.com/YuxiXie/MCTS-DPO
应用场景
8.1 模型安全
这是 alignment 最开始的一个功能(论文里面提到的 safety, helpfulness 等),限制回答一些黄赌毒以及一些敏感的问题,主要是安全合规,能让大模型朝着积极有意义的发展的方向发展。
8.2 Agents应用
Agents 是现在大模型最流行的应用范式,现有的工作主要是利用 Agents 生成偏好数据,来优化模型,提升模型的性能;也有直接构造环境,使用环境的数据来做 agents 的偏好优化(比如 agentsQ 利用 MCTS-DPO 来实现订票),让 agents 的能力得到了拓展。
总结
总的来说,大模型的 Alignment 现在集中在损失函数的修改,以及 RL 理论的集成,数据的合成上面,训练方法从不稳定的 PPO 变成的 DPO 及其变体,虽然论文有一大堆的推导,实际上是越来越简单了,自然门槛会越来越低,后面出现了 AgentQ,我仔细看了一下原来是 MCTS+DPO,我有个没有依据的猜测,会不会后面没有 SFT 了,只有 DPO+environment,源源不断的跟环境交互进行训练。
暂无评论内容