读paper14-Multi-Agent-2

MALT: Improving Reasoning with Multi-Agent LLM Training

采用顺序多代理设置,异构 LLM 分配专门的角色:生成器、验证器和迭代解决问题的完善模型。我们提出了一种基于轨迹扩展的合成数据生成过程和一种由基于结果的联合奖励驱动的信用分配策略。

MALT 包括以下步骤:

  1. 单独生成合成数据:为每个基准单独生成合成数据。
  2. 基于联合二元奖励的信用分配启发式方法:在此过程中,每个基准的训练集由可用于比较的真实答案组成,用于在搜索过程的叶节点上生成二元奖励。基于此方法,为每个模型生成特定角色的训练数据。
  3. 模型训练:训练遵循上述配置,首先进行 SFT(监督微调),然后在 SFT 策略的基础上进行 DPO(直接偏好优化)。

在实践中,对长文本序列进行训练可能会不稳定或产生幻觉。为了解决这个问题,MALT 在推理过程中采用了一种简单的多数表决机制,由三个productions来确保自洽性。由于推理不需要树形搜索过程,而且与我们的基线推理遵循相同的顺序模式,因此计算效率很高.

Inference Setting

研究假设存在 f:QAf:Q\to A,其中 QQ 是自然语言问题集,AA 是所有可能的回答的集合。

框架包含三个agent:

  • Generator(G:Q×PGOGG:Q\times P_G\to O_G):用于对问题产生初步的回答
  • Verifier(V:OG×Q×PVOVV:O_G\times Q \times P_V \to O_V):对生成的回复进行评价,找出可能存在的错误
  • Refinement Model(R:OG×OV×Q×PRAR:O_G\times O_V\times Q\times P_R\to A):整合反馈以改进最终预测

其中 PiP_i 是每个模型可能的prompt,OiO_i 是可能的输出的集合。agents间的交互定义如下:

go=G(q,pg)where goOG,pgPGvo=V(q,pv,go)where voOV,pvPVa=R(q,pr,go,vo)where aA,prPRg_{o}=G(q,p_g)\quad\mathrm{where~}g_o\in\mathcal{O}_G,p_g\in\mathcal{P}_G\\ v_{o}=V(q,p_v,g_o)\quad\mathrm{where~}v_o\in\mathcal{O}_V,p_v\in\mathcal{P}_V\\ a=R(q,p_r,g_o,v_o)\quad\mathrm{where~}a\in\mathcal{A},p_r\in\mathcal{P}_R

使用 Θi\Theta_i 表示对应模型的参数集,整个系统可以表示为:

a=RΘR(qi,go,vo,pr)=RΘR(qi,go,VΘV(qi,go,pv),pr)a=R_{\Theta_R}(q_i,g_o,v_o,p_r)=R_{\Theta_R}(q_i,g_o,V_{\Theta_V}(q_i,g_o,p_v),p_r)

捕捉推理轨迹(trajectory)

对于问题 qq 定义 reasoning trace rq=[rg,rv,rr]r_q=[r_g,r_v,r_r] ,其中 rir_i 是对应的模型的 reasoning steps (outputs)

结果奖励模型 R:A×A{0,1}R:A\times A\to\{0,1\} ,用于评估 rrr_r 是否正确。对于 predicted answer aa 与 ground truth aGTa^{GT}

R(a,aGT)={1,if a=aGT,0,otherwise.R(a,a^\mathrm{GT})=\begin{cases}1,&\mathrm{if~}a=a^\mathrm{GT},\\0,&\text{otherwise.}&\end{cases}

为了生成多样化的推理轨迹,对所有模型采用了以下分支因子为 n 的抽样策略

  • 对于训练集中的每个问题 xiDqueryx_i\in\mathcal{D}_{query} ,我们从Generator中抽取 n 个completions

    {gi,jG(xi)}j=1n\{g_{i,j}\sim G(x_i)\}_{j=1}^n

  • 对于每个Generator的输出 gi,jg_{i,j} ,生成 nn 个验证:

    {vi,j,kV(gi,j,xi)}k=1n.\{v_{i,j,k}\sim V(g_{i,j},x_i)\}_{k=1}^n.

  • 对于每个验证器输出 vi,j,kv_{i,j,k} ,生成对应完善

    {ri,j,k,lR(gi,j,vi,j,k,xi)}l=1n.\{r_{i,j,k,l}\sim R(g_{i,j},v_{i,j,k},x_i)\}_{l=1}^n.

这个过程对每个训练样例产生 n3n^3 个轨迹,然后用结果奖励模型来评判其正确性

为了有效利用细化输出的奖励信号,我们采用了价值迭代法,通过推理链向后传播价值。具体来说,我们根据每个节点的后代叶子节点(refinement output)的值,计算每个节点(生成器和验证器输出)的期望值。这种全局汇集机制可确保数值准确反映每个节点的整体表现,为正确的最终答案做出贡献。

这里没太看懂这种全局汇集机制

价值迭代法在进行二值化时,类似于基于多数的全局池化:对于给定的节点和分支,子树中叶子节点的二值奖励决定了分支的有用性,类似于通过树传播的二值化。与此相反,局部集合仅根据分支直接子节点的多数结果来确定分支的二进制值,并将这一过程传播到叶节点。

通过这种价值迭代过程,我们可以将正确性信息从叶子(refinement outputs)向上传播到根节点(generator output),从而捕捉推理轨迹中每个输出的整体有效性。

价值函数定义

使用 V(ri,j,k,l)V(r_{i,j,k,l}) 定义value of a refinement output:

V(ri,j,k,l)=R(ri,j,k,l,aGT){0,1}.V(r_{i,j,k,l})=\mathcal{R}(r_{i,j,k,l},a^{\mathrm{GT}})\in\{0,1\}.

作为其相关改进的预期值

然后计算其相关细化的期望值作为value of a verifier output vi,j,kv_{i,j,k}

V(vi,j,k)=El[V(ri,j,k,l)]=1nl=1nV(ri,j,k,l).V(v_{i,j,k})=\mathbb{E}_l[V(r_{i,j,k,l})]=\frac1n\sum_{l=1}^nV(r_{i,j,k,l}).

同样,计算与其相关的 verifier outputs的预期值作为the value of a generator output gi,jg_{i,j}

V(gi,j)=Ek[V(vi,j,k)]=1nk=1nV(vi,j,k).V(g_{i,j})=\mathbb{E}_k[V(v_{i,j,k})]=\frac1n\sum_{k=1}^nV(v_{i,j,k}).

偏好数据生成

Refinement Model Training

每个 refinement output ri,j,k,lr_{i,j,k,l} 有一个关联值 V(ri,j,k,l){0,1}V(r_{i,j,k,l})\in\{0,1\} ,对于偏好对 (r+,r)(r^+,r^-)r+r^+ 是正确的refinement (V(r+)=1)(V(r^+)=1)rr^- 则对应 (V(r)=0)(V(r^{-})=0)

DR={(r+,r)V(r+)=1,V(r)=0}.D_R=\begin{Bmatrix}(r^+,r^-)\\V(r^+)=1,\:V(r^-)=0\end{Bmatrix}.

Verifier and Generator Model Training

对于每个 verifier output vi,j,kv_{i,j,k},计算其值并进行二值化:

v^i,j,k={,ifV(vi,j,k)>0.5,×,otherwise.\hat{v}_{i,j,k}=\begin{cases}\checkmark,&\text{if}V(v_{i,j,k})>0.5,\\\times,&\text{otherwise.}\end{cases}

验证模型的偏好对是通过对同一generator output gi,jg_{i,j} 下的输出进行组合而创建的:

DV={(v+,v)v+,v{vi,j,k}k=1n,v^+=,v^=×}.D_V=\left\{(v^+,v^-)\begin{vmatrix}v^+,v^-\in\{v_{i,j,k}\}_{k=1}^n,\\\hat{v}^+=\checkmark,\:\hat{v}^-=\times\\\end{vmatrix}\right\}.

类似的过程也适用于生成器模型,其中generator outputs gi,jg_{i,j} 根据其值 V(gi,j)V (g_{i,j} ) 进行二值化,并通过比较同一query xix_i 下的输出创建偏好对 DGD_G