跳转至

SyMerge: From Non-Interference to Synergistic Merging via Single-Layer Adaptation

会议: ICML 2026
arXiv: 2412.19098
代码: https://aim-skku.github.io/SyMerge (有)
领域: 模型压缩 / 模型合并
关键词: 模型合并、任务协同、测试时自适应、单层适配、专家自标注

一句话总结

本文把"模型合并"的目标从"避免任务干扰"重新定义为"促进任务协同",提出 SyMerge:只联合优化每个任务的一个 task-specific 层和编码器的层级 merging 系数,再用 fine-tuned 专家模型当软标签老师,避免熵最小化在测试时漂移,从而在视觉/密集预测/NLP 三类基准上把合并模型推到接近单任务上限的水平。

研究背景与动机

领域现状:模型合并(model merging)流派把多个独立微调好的同架构模型在参数空间直接相加,复用任务向量 \(\tau_k = \Theta_k - \Theta_{\text{pre}}\) 得到一个多任务模型,免去联合训练的代价。主流路线分两支:训练无关(Task Arithmetic、Ties-Merging、PCB、Consensus 等)靠启发式或网格搜索定系数;测试时自适应(AdaMerging、WEMoE、Surgery 等)用无标签测试数据通过熵最小化等代理目标学合并系数或后置 adapter。

现有痛点:作者通过把 4 个任务的数据按 Hendrycks 标准做 corruption 测试发现,训练无关方法在轻微分布漂移下就崩塌;而测试时方法虽然鲁棒一点,但仍把"避免干扰"当成唯一目标——所有 SVD 截断、参数掩码、weight disentanglement 的工作都在做同一件事:让 \(\tau_i\) 不要破坏任务 \(j\),本质上是在追求 \(L_j[f(x;\theta_0+\tau_i)] = L_j[f(x;\theta_0)]\)

核心矛盾:非干扰目标天生有天花板——合并模型在任务 \(j\) 上的性能最多追平 pretrain 模型,因为目标只是"不让别的任务损害我",没有任何机制让别的任务"帮助我"。同时,作者在 20 个视觉任务上做了一项关键 pilot 实验:cross-task performance(用任务 A 的 encoder 配任务 B 的 classifier)和 merge 后的性能在 ViT-B/32 上呈现 \(r=0.863, p<0.001\) 的强正相关。这说明合并质量的真正瓶颈是不同任务 encoder/predictor 之间的功能对齐(functional alignment),而不是干扰。

本文目标:把目标从非干扰升级为正向协同 \(L_j[f(x;\theta_0+\tau_i)] < L_j[f(x;\theta_0)]\);找到一种最小化代价就能提升 cross-task 对齐、又能在无标签测试场景下稳定工作的方法。

切入角度:作者做了第二个 pilot——用有标签数据在固定的合并 encoder 上重训练任务 \(k\) 的最后一层,然后把这个新 classifier 接到任务 \(m\neq k\) 的 encoder 上做测试,发现 8 个任务全部出现 cross-task 准确率显著提升。这暗示只要调一层(哪怕是中间块),就能拉齐 encoder 与 predictor 在不同任务上的功能对齐。

核心 idea:把"调一层"这个发现搬到无标签测试时场景,联合优化层级合并系数 \(\{\lambda_k^l\}\) 和每任务一个 task-specific 层 \(\theta_k^{\text{tr}}\),用预先 fine-tuned 的专家模型预测当作"软标签老师",把熵最小化替换成更稳定的专家引导自标注交叉熵。

方法详解

整体框架

输入:预训练权重 \(\Theta_{\text{pre}}\)\(K\) 个独立 fine-tuned 的任务专家 \(\{\Theta_k\}_{k=1}^K\)、每个任务的无标签测试集 \(\mathcal{X}_k^{te}\);输出:一个共享 encoder \(\Theta_{\text{MTL}}^{\text{enc}}\) 加上 \(K\) 套任务头。pipeline 走三步:(1) 把每层编码器权重写成 \(\theta_{\text{MTL}}^l = \theta_{\text{pre}}^l + \sum_k \lambda_k^l \tau_k^l\),把 \(\Lambda = \{\lambda_k^l\}\) 设为可学习的层级×任务系数矩阵(沿用 AdaMerging 的参数化);(2) 在每个任务上挑一个 task-specific 适配层 \(\theta_k^{\text{tr}}\),初始化为该任务专家的原层;(3) 联合优化 \(\Lambda\)\(\{\theta_k^{\text{tr}}\}\),使合并模型在 \(\mathcal{X}_k^{te}\) 上的预测尽量逼近专家模型的预测。整个过程只动这两组参数,其它层全部冻结。

关键设计

  1. 专家引导自标注目标(替代熵最小化):

    • 功能:在无标签测试时给出稳定监督信号,让合并模型逼近专家行为。
    • 核心思路:对任务 \(k\) 的每个测试样本 \(x\),把对应 fine-tuned 专家模型的输出 \(C_k^{\text{ft}}(x)\)(分类是 softmax 概率向量,回归是连续输出)当作软标签,让合并模型输出 \(C_k^{\text{merged}}(x)\) 去匹配它,最小化 \(\sum_k \mathcal{L}_{CE}(C_k^{\text{merged}}, C_k^{\text{ft}})\)。对密集预测任务,这个交叉熵替换成对应的 L1 损失,因此目标天然支持分割、深度、表面法向量等不能用熵的任务。
    • 设计动机:作者用 Spearman 相关系数衡量"代理 loss"与真实监督 cross-entropy 的一致性,发现熵最小化在训练前还有中等相关、训练后就显著漂移(Cars 上甚至反向),而专家自标注目标在训练全程都保持高度一致,这解释了为什么 AdaMerging 类方法不稳定。专家模型本身已经在自己任务上是 SOTA,用它当老师比让模型自己猜伪标签可靠得多。
  2. 单层适配 + 系数联合优化(最小化可训参数):

    • 功能:用最少的可训参数同时改造 encoder 的混合方式和每个任务的输出端,达成 cross-task 对齐。
    • 核心思路:每任务只放开一层 \(\theta_k^{\text{tr}}\)(默认是分类头/最后一个 transformer block 这种 task-specific 层),加上共享 encoder 的层级合并系数 \(\Lambda\),两者同步反传同一个自标注 loss。和 AdaMerging 相比,AdaMerging 只学 \(\Lambda\),作者发现这种"只调系数"在不同初始化(disjoint basins)下会塌掉,而把适配层一起放开能稳住;和 Surgery/ProbSurgery 这种"加 adapter"相比,SyMerge 不引入额外模块,只是让原本就存在的一层从冻结变为可训。
    • 设计动机:cross-task pilot 已经证明"调一层"足够拉齐功能对齐,作者要在无标签场景复现这个效果。把适配层一起放开还有一个隐含好处:当 encoder 系数被调得让某层趋向某个不友好的混合方向时,task-specific 层可以反过来把信息再修回来,形成 encoder–predictor 的协同更新,这就是论文标题里 "Synergistic" 的来源。
  3. 可选置信度过滤 + 跨初始化兼容:

    • 功能:进一步过滤低置信样本提升性能;同时把合并范围从"同源 fine-tune"扩展到"不同初始化的专家"。
    • 核心思路:对每个 batch 按专家预测的最大 softmax 概率排个序,只用 top-\(p\) 的高置信样本反传,避免噪声标签污染优化;这一步是可选的、与主目标解耦。disjoint-basin 设置下(专家模型来自不同的 pretrain 初始化),传统系数搜索几乎全塌,但联合放开适配层后,作者证明 SyMerge 仍能恢复出可用的合并模型。
    • 设计动机:在测试时学习里,专家本身也会犯错,置信度过滤是一个标准的低代价提升技巧。而 disjoint-basin 这个 setting 反映了真实场景——很多开源 fine-tuned 模型并不共享 pretrain,能合并这类模型才有实用价值,这一点恰好是只调系数的方法触不到的边界。

损失函数 / 训练策略

统一的目标是 \(\min_{\{\lambda_k^l\}, \{\theta_k^{\text{tr}}\}} \sum_{k=1}^K \mathcal{L}_k(C_k^{\text{merged}}, C_k^{\text{ft}})\),分类用交叉熵,回归任务用 L1。优化器与学习率沿用 AdaMerging 的设置(详见附录 E.2),\(\Lambda\) 初始化为均匀分配,task-specific 层 \(\theta_k^{\text{tr}}\) 用专家模型的对应层初始化。论文报告所有结果都是 5 个随机种子的均值±标准差。

实验关键数据

主实验

覆盖三大类:视觉分类(ViT-B/32 与 ViT-L/14,分别合并 8 / 14 / 20 个任务)、密集预测(NYUv2 上 ResNet-50 合并 segmentation/depth/normal 3 个任务)、NLP(RoBERTa 合并 GLUE 8 个任务)。下表汇总最具代表性的视觉与 NLP 主结果:

基准设置 关键指标 AdaMerging EMR-Merging ProbSurgery SyMerge Individual 上限
ViT-B/32 / 8 任务 平均准确率 80.1 88.7 87.4 90.1 ±0.1 90.5
ViT-B/32 / 20 任务 平均准确率 69.6 86.6 84.5 88.6 ±0.4 90.4
ViT-L/14 / 20 任务 平均准确率 82.1 92.0 90.2 93.2 ±0.1 94.0
NYUv2 / 分割 mIoU↑ 41.5 43.6 49.8 ±0.3 52.0
GLUE / 8 任务 平均 80.2 81.6 83.9 ±0.2 85.6

ViT-B/32 在 20 任务设置下,SyMerge 离单任务上限只差 1.8 个点,把之前最好的 EMR-Merging(86.6)拉开 2 个点;密集预测的分割 mIoU 从 ProbSurgery 的 43.6 直接拉到 49.8,差不多吃掉了到上限 52.0 的 70% gap;GLUE 上 SyMerge 平均 83.9 与单任务 85.6 只差 1.7 个点,多数子任务(如 CoLA、STSB、QNLI、RTE)已经完全追平甚至超越 Surgery 系列。

消融实验

配置 ViT-B/32 8 任务平均 说明
Task Arithmetic(baseline) 69.1 训练无关,固定 \(\lambda\)
AdaMerging(只学 \(\Lambda\) 80.1 只优化层级系数 + 熵最小化
只学 \(\Lambda\) + 自标注 loss ~85 把熵换成专家自标注,已显著回升
只学 \(\theta_k^{\text{tr}}\) ~83 只放开适配层,固定 \(\Lambda\)
SyMerge(联合 + 自标注) 90.1 论文完整方案
同上 + 置信度过滤 90.1+ 可选项,附录里另有约 0.2-0.5 提升

(中间两行数字是从论文 Fig 4 / Sec 4.3 的曲线和文本中读到的近似量,没有直接表格列出,仅用于体现两个组件各自的贡献。)

关键发现

  • 单独把熵最小化换成专家自标注,就能从 80 跳到 85 左右,证明监督信号稳定性比系数搜索精细程度更关键。
  • 单独放开适配层不动 \(\Lambda\),也能从 69 跳到 83 左右,但天花板比联合优化低;只有两者一起动才能突破 90,验证了"协同"的存在。
  • 在 disjoint-basin(专家来自不同 pretrain)的极端 setting 下,AdaMerging 等系数法平均跌到 30% 以下,SyMerge 因为有适配层兜底仍能保持可用性能(详见论文 Sec 4.3)。
  • 跨任务相关 \(r=0.863\) 的 pilot 不仅是动机,也意味着未来评估合并方法时 cross-task accuracy 可以当成一个 cheap proxy。

亮点与洞察

  • 把模型合并的目标从"非干扰"重新定义为"协同"是一次很干净的概念升级——之前所有 SVD/掩码/disentanglement 工作都在做同一件事(让 \(\tau_i\) 别坏事),而本文用 \(r=0.863\) 的 pilot 直接说明"光不坏事"有天花板,必须主动促对齐。
  • "用专家模型当软标签老师"在测试时自适应这条线里是一个被忽视的简单选项:fine-tuned 专家本来就在硬盘里躺着,作者第一次系统论证它做自标注比熵稳定得多,这个思路完全可以迁移到任意 test-time adaptation 场景(领域自适应、TTA、prompt tuning 都能用同款)。
  • "调一层就够了"是一个反直觉的最小化结论。之前 Surgery/WEMoE 都在加各种额外 adapter,本文证明任务专家原本就有的最后一层放开就够用,不需要扩参数也不需要换架构。

局限与展望

  • 方法依赖每个任务的 fine-tuned 专家模型同时驻留——专家越多越费显存,相当于把"训一个多任务模型"的代价换成了"测试时同时跑 \(K\) 个专家做老师",对 \(K\) 很大的场景不一定友好。
  • 论文把"调哪一层"当成超参(默认最后一层或最后一个 block),没有给出自动选择策略;在不同架构上需要少量调试。
  • 实验主要在 ViT、ResNet、RoBERTa 这类中等规模模型上做,对 LLM 合并(>7B 参数)只能从 AdaMerging 这一支外推,专家自标注是否会在 LLM 上同样稳定还有待验证。
  • "协同"的定义偏经验(用 cross-task perf 和最终合并 perf 的相关性来表征),理论 Proposition 3.1 给的是收紧凸上界的论证,离严格意义下的"任务间正向迁移"还有距离。

相关工作与启发

  • vs AdaMerging:AdaMerging 只学层级系数 \(\Lambda\) 并用熵最小化监督,SyMerge 增加了 task-specific 层联合优化、并把熵换成专家自标注;本文实验显示这两处改动各贡献约 5–10 个点的提升,是直接 strict-superset。
  • vs Surgery / ProbSurgery:这两类方法在合并 encoder 之后再叠加一个 adapter 网络来做后置校正,参数量更多且需要额外推理开销;SyMerge 不引入新模块,只在原架构里放开一层,参数更少而效果更好。
  • vs EMR-Merging:EMR 用 expert routing 思路在推理时按任务切换权重,更接近 mixture-of-experts;SyMerge 仍是"一个共享 encoder + 任务头"的传统形态,部署更简单。
  • vs 非干扰路线(Ties-Merging / TSV-M / ISO-Merging):这些工作都在算如何让 \(\tau\) 之间正交或互不冲突,SyMerge 直接放弃这条路,证明"主动调一层促对齐"比"被动避免冲突"上限更高。