当前位置: 首页 > news >正文

ScoreFlow:通过基于分数的偏好优化掌握 LLM 智体工作流程

25年2月来自 U of Chicago、Princeton U 和 U of Oxford 的论文“ScoreFlow: Mastering LLM Agent Workflows via Score-based Preference Optimization”。

最近的研究利用大语言模型多智体系统来解决复杂问题,同时试图减少构建它们所需的手动工作量,从而推动自动智体工作流优化方法的发展。然而,现有方法在依赖离散优化技术时,由于表征限制、缺乏适应性和可扩展性差,仍然缺乏灵活性。本文用 ScoreFlow 解决这些挑战,这是一个简单但高性能的框架,它利用连续空间中高效的基于梯度优化。ScoreFlow 结合 Score-DPO,一个直接偏好优化(DPO)方法的一种变型,它考虑定量反馈。在涵盖问答、编码和数学推理的六个基准测试中,ScoreFlow 比现有基线提高 8.2%。此外,它使较小的模型能够以较低的推理成本胜过较大的模型。

大语言模型 (LLM) 已证明其在解决自然语言任务方面表现出色 [25, 33, 1, 2, 41, 42]。此外,LLM 的多智体系统(工作流)中,多个智体协调并交换信息以完成任务,这使得基于 LLM 的智体能够协作并解决广泛领域的复杂任务,例如数学问题解决 [47, 38]、问答 [24] 和编码任务 [12, 28]。

然而,这些手动设计的智体工作流需要付出巨大努力,并且处理不同领域任务的能力有限。因此,该领域的新兴重点是通过开发自动化的工作流生成和优化方法来解决静态工作流的局限性。这些优化可以针对各个方面,包括快速细化、超参调整和工作流结构设计 [17, 49, 44, 14, 46, 7, 19, 21, 32, 45]。

自动优化方法可能受到预定义工作流结构固有限制和工作流空间表征的刚性限制 [17, 49, 44, 21]。DyLAN [21] 深思熟虑地强调 LLM 辩论中的通信结构,但忽略其他潜在的通信结构。GPTSwarm [49] 利用基于图的结构并采用强化微调进行优化。然而,图结构中缺乏对条件状态的考虑,对搜索空间施加限制。

为了提高表示能力,AFlow [46] 和 ADAS [14] 使用代码作为工作流的表示,从而促进稳健而灵活的工作流搜索。然而,ADAS 面临着搜索过程效率低下和工作流存储粗糙的挑战,这导致无关数据的积累和复杂性增加,最终降低其有效性。为了解决这些问题,AFlow 采用蒙特卡洛树搜索(MCTS)的变型作为优化方法来提高效率。然而,工作流结构收敛速度过快,再加上离散优化方法,限制搜索空间的探索,常常导致结果不理想。此外,它们都针对整个任务集优化单一工作流,这限制包含各种问题较大数据集的适应性和可扩展性 [45, 32]。

智体工作流优化

针对提示和超参的自动优化。强调提示优化 [11, 44, 40, 17] 或超参优化 [29] 的自动优化方法可以提高性能;但是,它们对工作流结构施加限制,并且通常需要手动修改以适应新任务,从而限制它们的适应性和可扩展性。

工作流结构的自动优化。工作流优化方法 [48, 49, 14, 46, 7, 19, 21, 32, 45] 专注于改进工作流的结构,使其更强大,可以处理各种任务。但是,工作流表征的不灵活性和局限性(例如图结构中条件状态的丢失)可能会限制搜索空间,从而妨碍适应多样化和复杂工作流的能力。

从语言模型的偏好中学习

PPO。近端策略优化 (PPO) [30] 分两个阶段处理偏好反馈。首先,在偏好数据集 D_R 上训练奖励模型 R_φ,其中每个条目 (x, y_w, y_l) 由提示 x、首选响应 y_w 和拒绝响应 y_l 组成。通过最小化以下损失函数来优化奖励模型,该函数的灵感来自 Bradley-Terry (BT) 模型 [5],用于对排名(pair-ranking)。

接下来,通过最大化分配给其生成响应的奖励来完善策略模型 π_θ,同时保持软 KL 散度约束以防止退化。

DPO。直接偏好优化 (DPO) [27] 使用偏好数据促进直接策略优化,无需显式奖励模型或主动策略采样。这种方法提高优化过程的效率和稳定性。从上述策略模型目标函数的闭式解中,隐式奖励可以表示为 R_φ(x, y) = β log π_θ^⋆ (y | x)/π_ref (y | x) + βZ(x),其中 π_θ^⋆ 是最优策略,Z(x) 是分区函数。然后可以使用上述奖励目标直接优化策略模型,从而导致 DPO 损失。

ScoreFlow 是一种自动化且经济高效的多智体工作流生成框架,它采用优化方法来实现高性能、可扩展性和适应性。其流程如下:

请添加图片描述

ScoreFlow 的推理过程概述,如图所示。给定数学任务 A 和 B,以及可选择的智体类型(程序员、可自定义操作员、集成操作员和审阅人),将为每个任务生成一个基于 Python 的工作流,其中工作流 A 和 B 的智体集分别包含一个和五个状态。然后将每个任务输入到其各自的工作流中以产生执行结果。

请添加图片描述
现在将 LLM 多智体工作流优化问题和一些符号形式化如下。

给定一个输入任务 q,格式化为提示,希望确定解决此任务的最佳工作流 G(q),其中 G 是工作流生成器。工作流函数 W_f 定义为某个任务 q 和智体集 V ,(q,V)的集成到执行结果 W_f (q,V) 的映射,通常是该任务的解决方案。智体集 V 由一组智体组成,每个智体都以其系统提示、温度设置和其他相关参数为特征。然后,将工作流定义为智体集和工作流函数的组合:(V,W_f)。定义工作流搜索空间为:W = {(V,W_f)| V ⊂ V,(V,W_f)满足条件 C},其中 V 表示整个智体空间。

条件 C 对搜索空间施加约束,使得 W_f 对于智体集 V 是可执行的。给定这些符号,优化目标是确定最佳的工作流生成器:

请添加图片描述
其中 D 表示任务数据集,S 是针对任务 q 执行工作流 G(q) 所生成结果的第三方评估器,例如人工提供的分数、平均胜率或其他相关指标。
使用代码作为工作流函数 W_f [14, 46] 的表示可以解释线性序列、循环、条件逻辑,并提供超出图或网络结构的灵活性。此外,按照 Aflow [46],将 V 中的智体表征为操作员。操作员是预定义的、可重复使用的智体节点组合,代表常见操作,例如程序员、审阅员、校对员、问答操作员、集成操作员、测试操作员和可定制操作员等。通过允许生成器 G 自定义操作员内的系统提示,实现提示的优化,扩展智体空间 V,丰富搜索空间 W。

为了使工作流适应输入任务 q,即根据输入问题调整所选的操作员和生成工作流的结构复杂性,需要从 q 中提取语义信息。具体来说,用一个开源的预训练大语言模型作为生成器 G 的基础模型。生成器的输入包括任务 q 和生成指南的组合,包括格式要求和可用操作员的介绍,所有这些都被格式化为一个指导提示。

直接使用 DPO 对收集的偏好数据进行生成器微调,会导致收敛速度慢并且无法达到最佳性能。这些问题是由于评估分数中的错误和方差造成的。本文提出一种广泛适用的优化方法 Score-DPO,这是 DPO 的改进版,旨在解决这些挑战。本文实验证明 Score-DPO 在优化 LLM 工作流生成器方面的优势,表明它适用于类似的设置。

增强的采样分布。在设置中应用 DPO 时观察的收敛速度慢和性能不佳,可以归因于收集的偏好数据不准确,这是由评估分数中不可避免的方差和误差造成的。为了解决这个问题,建议增加样本对 (w, l) 的权重,使分数差异 s_w − s_l 更大。具体来说,引入一个函数 d(x, y) : [0, 1]2 → [0, 1],该函数关于 x − y 严格单调递增。然后,根据 P^⋆(w, l) ∝ d(s_w, s_l)P(w, l) 增加得分差异较大的数据对采样概率,通过增加其可能性来提高权重,其中 P(w, l) 表示偏好数据集 D_pre 上的均匀随机采样分布。此调整可确保在采样过程中优先考虑得分差异较大的对,从而提高优化过程的有效性。

将评估分数纳入排名目标。Bradley-Terry (BT) [5] 排名目标 σ(r_w −r_l) 有一些替代公式,比 DPO [23, 4, 26] 更有效,其中 r_w := β log(π_θ(y_w|x)/π_ref (y_w|x)) 和 r_l := β log(π_θ(yl|x)/π_ref (yl|x))。在设置中,结合评估分数来指导隐性奖励。具体来说,将基于分数的 BT 排名目标定义为 σ(r_w − r_l),其中 r_w := f(s_w)r_w,r_l^⋆ := (1 − f(s_l))r_l,f(x) : [0, 1] → [0, 1] 是严格单调递增函数。从经验上讲,这种方法可确保,具有更确定性评估分数的数据点,对损失函数的影响更大。最后,将 Score-DPO 的损失函数定义为

请添加图片描述

虽然 DPO 很难有效地学习偏好排名 [6],但以下定理将证明这种分数-指导方法将每个样本对优化目标的影响与其评估分数的大小相一致。
为了使分析形式化,引入符号来量化每个特定样本对优化目标的影响。

定义 1(每个样本的影响)。对于给定的样本 z,z 对目标函数的影响(称为每个样本的影响)定义为:

请添加图片描述

每个样本的影响 I(z) 是样本 z 贡献的梯度,表示 z 对优化目标的定量影响。当 I(z) > 0 时,优化过程会增加 z 的对数,使其更有可能被优先考虑。当 I(z) < 0 时,它会降低 z 的对数,使其不太可能被优先考虑。以下定理 2 展示分数指导对 I(z) 的影响。

定理 2。假设函数 d(x, y) : [0, 1]^2 → [0, 1] 关于 x − y 严格单调递增,函数 f(x) : [0,1] → [0,1] 关于 x 严格单调递增。样本 z 的每个样本影响由以下公式给出:

请添加图片描述

当 −(1 − f(s_z))−1 ≤ r_z ≤ f^−1(s_z) 成立时,该影响随得分 s_z 严格单调递增。

因此,Score-DPO 可以将得分信息纳入自采样偏好优化中,使优化过程能够考虑定量信息,而不是仅使用赤裸裸偏好对信息,并且可以减少得分不准确造成的误差和方差。请注意,定理 2 中所述的条件不是限制性的,因为 |r_z | ≤ 1 为其有效性提供充分条件。此外,实验结果表明,在收敛之前的优化过程中,|r_z| ≤ 1 成立的概率约为 91.1%。

最后总结的算法如下:

请添加图片描述

数据集。专注于六个公共数据集,涵盖一系列任务,包括数学问题、问答问题和编码问题。具体来说,利用 HumanEval [8] 和 MBPP [3] 的完整数据集。按照 Aflow [46] 的方法,对于 GSM8K [9],在测试集中使用 1,319 个数据点。对于 MATH 数据集,为了强调高级和具有挑战性的问题,从以下问题类型中选择难度级别为 5 的问题:组合和概率、数论、初等代数和初等微积分,就像 Hong [12] 所做的那样。对于 DROP [10] 和 HotpotQA [43],遵循 Hu [14]、Shinn [31] 和 Zhang [46] 概述的方法,从每个数据集中随机选择 1,000 个样本。使用 1:4 的比例将数据分成验证集和测试集。

基线。手动设计的静态工作流基线包括:直接 LLM 调用、思维链 [36]、自洽性 CoT(对集成生成 5 个响应)[34]、MedPrompt(3 个响应和 5 张票)[24]、多人辩论 [35] 和自我优化(2 轮)[22]。还与代码表示自动化工作流优化方法进行比较:ADAS [14] 和 Aflow [46],其中使用 GPT-4o-mini 作为它们的优化模型。将 Aflow 的迭代轮数设置为 20,如 Zhang [46] 所述。

模型。默认情况下,用 Llama-3.1-8B-Instruct 作为生成器的基础模型(使用 vLLM [18] 进行推理),并使用 GPT-4o-mini 作为执行器(通过 API 进行推理,温度为 0)。在消融研究中,用 Qwen2.5-7B-Instruct [39] 作为生成器,并使用 GPT-4o 和 DeepSeek 系列模型 [20] 作为执行器。所有实验均使用 2 个 A6000 GPU 和 LoRA [13]。

指标和评估分数。在最终结果中报告解决率(评估 3 次并取平均值)。用 GPT-4o-mini 作为 MATH、DROP 和 HotpotQA 的评判模型,以避免格式不一致问题。在优化过程的每次迭代中(总共 3 次迭代),为每个问题生成 k = 8 个工作流并获得它们的评估分数,其中不使用判断模型来降低成本和计算开销。具体来说,用 F1 分数作为 DROP 和 HotpotQA 的评估指标,并解决剩余数据集的速率(评估 3 次并取平均值)。为了应用 Score-DPO,将 f (x) = x 和 d(x, y) = (x − y)^3 设置为默认选择。


http://www.mrgr.cn/news/91300.html

相关文章:

  • DeepSeek等大模型功能集成到WPS中的详细步骤
  • 英语---基础词汇库
  • 未加cont修饰的左值引用不能绑定到右值
  • 什么是3D视觉无序抓取?
  • 深入探索 C++17 中的 std::hypot:从二维到三维的欧几里得距离计算
  • Day4 25/2/17 MON
  • deepseek本地部署方案(超简单)
  • GPT-4o悄然升级:能力与个性双突破,AI竞技场再掀波澜
  • ping6 命令介绍和 IPv6 常见的网段划分
  • 想要追踪一个在传送带上运动的东西,该怎么选择工业相机呢,需要考虑哪些因素
  • Linux相关概念和易错知识点(28)(线程控制、Linux下线程的底层)
  • 【在时光的棋局中修行——论股市投资的诗意哲学】
  • Java 运行时常量池笔记(详细版
  • 【深度学习】环境和分布偏移
  • 【vmware虚拟机安装教程】
  • 用deepseek学大模型03-数学基础 概率论 最大似然估计(MLE)最大后验估计(MAP)
  • pptx文档提取信息
  • ROS基本功能
  • 大话风险-风险模型监测三道防线
  • C# windowForms 的DataGridView控件的使用