一、研究背景
1.1 当前问题
合并来自不同领域的模型通常会牺牲特定的任务性能,导致与单个专家相比存在很大的性能差距。两个主要原因阻碍了现有的合并方法达到单个专家的理论性能上限:(1)模型之间的干扰。以前的研究表明,参数冗余和符号差异,以及任务之间的分布差距,阻碍了有效的模型合并。我们证明,特定于任务的模型通常包含混合知识,其中一个模型中的专业知识可能是独家的,或者对其他模型有害。这种冗余或干扰可能会阻碍跨模型的专业知识集成。(2)测试时数据的异质性。以前的方法为各种任务追求单一的静态最优解决方案。
1.2 解决方法(Twin-Merging)
为了解决上述问题,本文引入了Twin合并,涉及两个主要阶段:(1)知识模块化:与以往研究以参数方式迁移合并干扰或搜索合并系数不同,我们将专家拥有的知识分解为共享知识和独占任务特定知识,如图1(Ii)所示。首先,我们将共同的知识压缩成一个共享的专家,用于捕获和整合不同任务中的共同知识。然后根据任务专家和共享专家之间的差异分离出排他性知识,使不同的知识得到更精细的分解。(2)动态归并:受混合专家[80,84,85]的启发,将参数归并问题简化为条件合成问题。如图1(Iii)所示,我们引入了一个路由器来根据测试输入动态合并共享和独占知识,而不是在测试时预先确定异类数据的最佳参数组合。共享模型作为基础,根据路由器有条件地注入特定于任务的知识。
二、Twin-Merging
2.1 算法整体结构
算法分为两个阶段:
预计算阶段(第1-5行):只执行一次,准备共享专家和专属知识库
推理阶段(第6-15行):对每个输入动态融合并推理
2.2 预计算阶段
1.共享专家:为了在不同的模型之间分离共享知识,我们将预合并模型视为一个自然的占位符,以封装对所有任务重要的共同知识(表示为θ∗)。通过利用已建立的合并技术,如任务算法,我们可以很容易地从初始合并模型中提取共享专家。
2.独占知识:为了在分离共同知识的同时传达特定任务的信息,我们计算了差异向量:Vt=θt−θ∗。该减法向量保留未合并的特定于任务的信息,同时丢弃共享的知识
3.压缩排他向量:为了便于实际使用和分发,我们使用奇异值分解(SVD)将上述排他知识进一步压缩为每个任务的向量。假设Vt有一个秩m分解,Vt=UtΣTVT t,我们通过选择前r个奇异值来得到一个低秩任务空间,从而得到Ut(R)Σt(R)Vt(R)T。我们只存储Ut(R),Σt(R),Vt(R)T。
2.3 推理阶段
第6-8行:初始化与循环
# Inference: ▷ Main loop initialize output Y for each input x in inputs X do
Y: 收集所有输入的预测结果对每个输入单独处理(可批量优化,但算法展示的是逐样本)
第9-10行:路由器计算权重
[w₁, ..., w_T] ← softmax(R(Emb(x); φ))
第11-12行:动态融合专家
θ* ← θ_s + Σ_{t=1}^T w_t v_t第13-14行:执行推理并收集结果
Y ← Y ∪ f(x; θ*)
第15行:循环结束
处理下一个输入时,重新计算权重、重新组装 θ*。
三、现存不足
标记数据来训练
可能过拟合到训练任务
增加推理计算量