FeatCal:面向合并后模型的特征标定方法 FeatCal: Feature Calibration for Post-Merging Models
用闭式前向逐层标定消除模型合并后的特征漂移,无需梯度与额外模块。
前置知识
模型合并 (Model Merging)
把多个在不同任务上微调得到的"任务专家"模型,在参数空间直接做线性组合(如简单平均、Task Arithmetic)从而得到一个能处理多任务的单一模型,避免联合训练和分别部署。
本文的所有实验都建立在合并模型 (如 TA、AdaMerging、WUDI) 之上,要理解 FEATCal 的标定对象就必须先理解什么是"已合并模型"。
任务算术 (Task Arithmetic, TA)
一种经典合并方法:把每个微调专家相对预训练基模型的差 $\tau_i = \theta_i - \theta_{\text{base}}$ 视为"任务向量",合并时只需对所有任务向量做加权求和 $\theta_{\text{mer}} = \theta_{\text{base}} + \lambda \sum_i \tau_i$。
FEATCAL 论文中 8 任务 B/32 的核心对比是 TA,TA 平均只有 67.5%,而 FEATCAL 能把它提升到 85.5%,是论文中最大增幅的实验。
特征漂移 (Feature Drift)
在同一输入下,合并模型与任务专家在各层产生的中间表征之差 $\mathbf{e}_{i,\ell}(x) = \mathbf{h}^{\text{mer}}_{i,\ell}(x) - \mathbf{h}^{\text{exp}}_{i,\ell}(x)$,是本文用来解释合并后性能下降的核心信号。
整篇论文围绕这个量做严格的分解与逐层分析,并把它作为 FEATCAL 闭式解要最小化的目标,理解它就理解了论文的动机与目标函数。
后合并标定 (Post-Merging Calibration)
在已得到合并模型后再做一次"小代价"的微调或重构以修补性能损失,常见做法是引入额外插件 (Surgery) 或概率适配器 (ProbSurgery),但都需要额外参数或推理时多走一条路径。
FEATCAL 的卖点正是不引入额外模块、不做迭代优化,直接对原始线性层做闭式更新,是后合并标定范式里的一次新尝试。
闭式岭回归 (Closed-Form Ridge Regression)
形如 $\min_W \|WX - Y\|_F^2 + \lambda\|W - W_0\|_F^2$ 的目标对 $W$ 是凸二次,可直接写出 $(X^TX + \lambda I)^{-1}(X^TY + \lambda W_0)$,无需反向传播。
FEATCAL 整个算法都建立在对每个线性模块求解这样一个闭式问题之上,理解这个公式就能看懂第 4.4 节的最终更新式 (17)。
Transformer 线性模块
包括 attention 的 $W_Q,W_K,W_V,W_O$ 与 MLP 的 $W_{\text{up}},W_{\text{down}}$ 等矩阵,是 CLIP、FLAN-T5、LLaMA 等模型中主要的特征混合与投影点。
FEATCAL 显式只对这些线性模块做闭式更新,对 LayerNorm/bias 增益有限 (<0.5pp),所以论文把"线性模块是天然标定点"作为方法的一个核心观察。
研究动机
模型合并虽然能在不联合训练、不再训练、不为每个任务单独部署的前提下,把多个任务专家塞进一个模型,但合并后的性能与单任务专家之间存在明显差距。比如 CLIP-ViT-B/32 上 Task Arithmetic 在 8 任务上平均只到 67.5%,远低于单任务专家 90.3%,与多任务联合训练 88.6% 也有 21 个点的鸿沟;FLAN-T5-base 在 GLUE 8 任务上 TA 也只有 78.9%,比单任务 86.4% 低 7.5 个点。已有后合并方法如 Surgery/ProbSurgery 确实有提升(TA 上 +9.5/+11.3),但它们依赖任务专属插件或额外适配模块,推理时要走额外的干预路径,还常需迭代优化或梯度训练,部署成本高且对单任务专家信号的利用率受限。
本文的目标是论文目标分两层:一是建立一个可解释的"特征漂移"理论框架,精确刻画合并模型在每一层与任务专家的特征差距,并给出从前向输入到最终输出的传播关系;二是基于这套理论设计一个高效、不引入额外推理模块的后合并标定方法 FEATCAL,使得只用极少量无标签校准数据(如每任务 8-256 个样本)就能把弱合并模型(TA、简单平均)一路拉到接近甚至略超多任务联合训练的水平。
与已有工作不同的是,与 Surgery/ProbSurgery 在最终层加装可学习插件/概率适配器不同,FEATCAL 的独特切入是把"标定动作"直接折叠回原模型的线性模块权重中,用闭式岭回归一步完成;与 RegMean/LOT Merging 在合并阶段就介入特征统计不同,FEATCAL 严格区分"合并阶段"与"标定阶段",把任意已合并模型当成黑盒起点,再用前向逐层 schedule 与前向更新的局部输入特征去匹配专家信号,因而既不修改合并规则也不破坏推理速度。这个"前向闭式 + 折叠回原权重"的组合是它和已有方法的本质区别。
核心方法
FEATCAL 的直觉是:合并模型与任务专家的性能差距,本质上是它们在同一输入下不同层的中间特征不一致;与其在最终层装插件,不如"逐层把漂移修掉"。具体做法是:先按理论把漂移分解成"局部失配 + 上游传播",然后顺着前向顺序访问每一层,用已经校准好的前面层产生的特征去 cache 当前模块的输入,再以一个带正则的岭回归把当前线性模块的权重更新成"既能降低当前层特征漂移,又不偏离合并/基模型太远"的版本。整个流程对每个线性模块都有闭式解,无需梯度反向、无需新增参数、推理时也不需要任何额外模块。
核心创新是把后合并标定重新写成"线性模块级的闭式岭回归 + 三个工程技巧":(1)目标特征插值 $X_{\text{tgt}} = \alpha X_{\text{exp}} + (1-\alpha) X_{\text{cal}}$,让当前层不必强行吸收上游层带来的漂移;(2)锚点权重 $W_{\text{anc}} = \rho W_{\text{mer}} + (1-\rho) W_{\text{base}}$,允许在合并权重与预训练基权重之间做"外插"以利用基模型的预训练知识;(3)任务尺度归一化 $\omega_i = 1/\max\{\|G_i\|_F, \epsilon\}$,让每个任务对求解的贡献与样本数解耦。最终闭式解 (公式 17) 形如 $W^* = \big(\sum_i \omega_i W_i C_i + \lambda W_{\text{anc}}\big)\big(\sum_i \omega_i G_i + \lambda I_d\big)^{-1}$,其中 $G_i = \tfrac{1}{n}X_{\text{cal}}^i (X_{\text{cal}}^i)^\top$、$C_i = \tfrac{1}{n}X_{\text{tgt}}^i (X_{\text{cal}}^i)^\top$。与 Surgery 引入可学习插件、ProbSurgery 用概率适配器不同,FEATCAL 直接修改原线性模块权重,闭式一步到位,因此 4 倍快于两个基线。
方法步骤详情
完整流程可概括为六步:(1) 准备阶段:对每个任务 $i$ 准备 $n$ 个无标签校准样本,固定合并模型权重 $W_{\text{mer}}$ 与所有任务专家权重 $W_i$ 与基模型权重 $W_{\text{base}}$;(2) 前向遍历层 $\ell=1,\dots,L$:用当前已标定模型跑前向,cache 该层每个待标定线性模块的输入特征 $X_{\text{cal}}^i$,同时跑任务专家得到同一模块的专家特征 $X_{\text{exp}}^i$;(3) 构造插值目标 $X_{\text{tgt}}^i = \alpha X_{\text{exp}}^i + (1-\alpha) X_{\text{cal}}^i$;(4) 计算任务局部统计量 $G_i = \tfrac{1}{n}X_{\text{cal}}^i (X_{\text{cal}}^i)^\top$ 与 $C_i = \tfrac{1}{n}X_{\text{tgt}}^i (X_{\text{cal}}^i)^\top$,以及稳定化任务权重 $\omega_i = 1/\max\{\|G_i\|_F,\epsilon\}$;(5) 构造锚点权重 $W_{\text{anc}} = \rho W_{\text{mer}} + (1-\rho) W_{\text{base}}$,代入闭式公式 (17) 求出新权重 $W^*$;(6) 把 $W^*$ 写回当前模块,继续下一模块/下一层。算法对 bias 与 LayerNorm 仿射参数有等价闭式更新(见 App. G),但实验中贡献小于 0.5pp,因此主表中可以忽略。
技术新颖性
技术新颖性主要体现在三点:(1) 形式化的"逐层漂移分解 + 前向复合"理论,明确给出最终特征漂移是各层局部失配的线性组合 $\mathbf{e}_{i,L}(x) = \sum_{\ell=1}^L P_{i,\ell\to L}(x)\mathbf{m}_{i,\ell}(x)$,并把输出漂移与最终特征漂移用 Lipschit z 界 (公式 7) 联系起来,这是已有合并类论文中少见的严格分析;(2) 第一次把"前向 schedule + 闭式岭回归"同时用于后合并标定,避免了 Surgery/ProbSurgery 的迭代优化与额外模块,部署时和原模型完全等价;(3) 引入"目标插值 + 锚点外插 + 任务归一化"三个可解释的超参 $(\alpha,\rho,\lambda)$,在 8 任务 B/32 上 $\alpha=0.3,\rho=2.0,\lambda=0.05$ 即可达到 85.5% 平均,比调参繁琐的 Surgery/ProbSurgery 鲁棒得多。
实验结果
实验在三类模型/任务上系统验证 FEATCAL:(1) CLIP-ViT-B/32 8 任务上,TA 的 67.5% 经 FEATCAL 提升到 85.5%,比 Surgery 77.0%、ProbSurgery 78.8% 高 7.7/6.7pp;简单平均从 66.3 提到 83.2 (+16.9),AdaMerging 从 82.7 提到 88.1 (+5.4),WUDI-Merging 从 84.5 提到 88.8 (+4.3);扩展到 14/20 任务时,TA 上 14 任务 B/32 FEATCAL 81.5% > ProbSurgery 78.3% > Surgery 76.8%,20 任务 L/14 FEATCAL 84.7% > ProbSurgery 83.3% > Surgery 82.4%,跨规模跨任务数都稳定领先。(2) FLAN-T5 上 base GLUE 8 任务 TA 从 78.9 提到 85.2 (+6.3),MNLI 提升 +24.8、STS-B 提升 +9.9,8 任务全部非负;large 上 TA 已经较强 (87.3),FEATCAL 仍能 +1.6 到 88.9,超过 Surgery 88.0、ProbSurgery 87.6。(3) MergeBench Llama 上,3B 6 任务平均 TA 60.1 → FEATCAL 62.1 (+2.0),优于 Surgery 60.8、ProbSurgery 61.1;8B 上 TA 63.5 → FEATCAL 65.8 (+2.3),IFEval 单任务提升 +15.5 个点。消融方面,n=256 校准 FEATCAL 只需 53s、能耗 1.9 Wh、CPU RSS 22.8 GiB,分别是 Surgery 的 1/4.1、1/9.5、1/3;n=8 即可达 82.9% 接近饱和;抗扰动 (Gaussian/blur/fog) 下平均 78.0%,显著高于 Surgery 71.5% 与 ProbSurgery 71.6%。图 2 的诊断显示 FEATCAL 把 8 任务宏平均 expert 余弦从 TA w/ Surgery 的 0.785 提到 0.850,Cars 单任务余弦提升 0.084,对应 +8.64pp 准确率增益。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| CLIP-ViT-B/32 8-task Task Arithmetic | Top-1 准确率 (%) | 85.5 | Surgery 77.0 / ProbSurgery 78.8 | +7.7 / +6.7 |
| CLIP-ViT-B/32 8-task Simple Averaging | Top-1 准确率 (%) | 83.2 | Surgery 77.3 / ProbSurgery 79.7 | +5.9 / +3.5 |
| CLIP-ViT-B/32 8-task AdaMerging | Top-1 准确率 (%) | 88.1 | Surgery 85.5 / ProbSurgery 85.9 | +2.6 / +2.2 |
| CLIP-ViT-B/32 8-task WUDI-Merging | Top-1 准确率 (%) | 88.8 | Surgery 86.4 / ProbSurgery 86.9 | +2.4 / +1.9 |
| CLIP-ViT-L/14 8-task TA Extended | Top-1 准确率 (%) | 91.6 | Surgery 86.0 / ProbSurgery 87.6 | +5.6 / +4.0 |
| CLIP-ViT-B/32 20-task TA Extended | Top-1 准确率 (%) | 79.4 | Surgery 75.2 / ProbSurgery 77.7 | +4.2 / +1.7 |
| FLAN-T5-base GLUE 8-task TA | 平均得分 (%) | 85.2 | Surgery 83.7 / ProbSurgery 82.2 | +1.5 / +3.0 |
| FLAN-T5-large GLUE 8-task TA | 平均得分 (%) | 88.9 | Surgery 88.0 / ProbSurgery 87.6 | +0.9 / +1.3 |
| Llama-3.2-3B-Instruct MergeBench 6-task | 平均得分 (%) | 62.1 | Surgery 60.8 / ProbSurgery 61.1 | +1.3 / +1.0 |
| Llama-3.1-8B-Instruct MergeBench 6-task | 平均得分 (%) | 65.8 | Surgery 64.0 / ProbSurgery 64.4 | +1.8 / +1.4 |
| n=256 校准时长 (CLIP-ViT-B/32 TA) | 秒 (Speedup) | 53s (4.1×) | Surgery 217s / ProbSurgery 224s | 4.1×/4.2× 更快 |
| n=256 校准 GPU 能耗 | Wh | 1.9 | Surgery 18.1 / ProbSurgery 18.3 | 约 9.5× 更低 |
| 8 任务 TA 抗扰动 (Gauss/blur/fog 平均) | Top-1 准确率 (%) | 78.0 | Surgery 71.5 / ProbSurgery 71.6 | +6.5 / +6.4 |
| 8 任务 TA n=8 样本效率 | Top-1 准确率 (%) | 82.9 | Surgery/ProbSurgery 更低 | 已接近 n=256 的 85.5 |
局限与改进
作者承认的几点局限:(1) LayerNorm/bias 等非线性模块的闭式更新虽存在 (App. G) 但收益很小 (<0.5pp),所以方法主要靠线性模块支撑,对非线性层漂移的处理仍是开放问题;(2) 超参 $(\alpha,\rho,\lambda)$ 在不同任务套件间需要重新调(如 CLIP $\lambda=0.05$ 而 FLAN-T5 $\lambda=10^{-5}$ 差 4 个量级),缺少跨架构的自动选择规则;(3) 实验在 8/14/20 任务与单卡 Llama 上验证,未触及超大规模 (70B+) 与上百任务的合并;(4) 校准仍需要每个任务几十个无标签样本,对零样本/极低样本场景并未测试;(5) Fig. 2d 显示 FEATCAL 在参数空间上反而离同任务专家 task-vector 余弦更小,说明性能提升并非因为参数回到专家,而是源于特征空间被拉向专家,机理与可解释性之间的张力需要进一步研究。我自己的观察:闭式解在 $\sum_i \omega_i G_i + \lambda I_d$ 病态 (例如某些任务样本极度不均衡) 时数值稳定性依赖 $\epsilon$ 调参,论文未系统分析这一数值风险;前向逐层 cache 特征意味着显存占用近似随层数线性增长,超深模型 (e.g. 70B+ 层) 的部署成本未在文中讨论。
独立分析的弱点
(1) 对非线性模块覆盖不足:方法主体只更新线性权重,bias/LayerNorm 的闭式更新收益微弱,但实际模型中 BN/LN 的统计差异常是合并性能损失的重要来源,尤其在视觉 Transformer 之外的结构中更明显;改进方向是引入针对归一化层的可微标定或把统计对齐嵌入闭式目标。(2) 超参跨架构不可移植:CLIP 主表用 $\lambda=0.05,\rho=2.0,\alpha=0.3$,FLAN-T5 用 $\lambda=10^{-5}$ 差 4 个量级,MergeBench 上 3B 用 $10^{-5}$ 而 8B 用 3.0,呈现"换模型就重调"的痛点;改进方向是引入数据驱动的自适应 $\lambda$(如基于 $G_i$ 谱的自动岭)或贝叶斯超参选择。(3) 任务数线性增长的 cache 成本:每层前向要为所有任务的专家各 cache 一次特征,10 任务×12 层×n=256 已是明显开销,扩展到 50+ 任务时显存可能成为瓶颈;改进方向是任务采样、子集标定或共享专家代理以降低 cache。(4) 与参数空间解释的张力:Fig. 2d 显示 FEATCAL 拉低了 backbone 与同任务专家的 task-vector 余弦,论文承认这是诊断而非完整解释,可能让用户在追求"参数可解释性"时犹豫;改进方向是补充 task-vector 投影等参数空间诊断,或尝试把闭式更新与 task-vector 正则耦合。(5) 缺乏与 RegMean/LOT 这类"合并阶段介入特征统计"方法的对比:论文把 FEATCAL 严格定位在"post-merging",但读者无法判断"先 RegMean 合并再 FEATCAL 标定"是否还能继续涨点,这限制了方法在天梯中的真实位置。
未来方向
作者在结论中提到希望把特征漂移视角推广到更多架构与超大规模合并,并探索非线性模块的标定。基于此可延伸的方向包括:(1) 把 FEATCAL 的闭式框架拓展到 Mixture-of-Experts 类合并,按专家重要性做权重化更新,避免把所有任务一视同仁地塞进同一个闭式解;(2) 探索自监督或零样本代理 (如合成数据、领域文本) 来替代真校准样本,进一步压低对真实数据的依赖;(3) 把 $(\alpha,\rho,\lambda)$ 提升为可学习的"标定强度控制器",并验证在 LLM 持续合并 / 增量学习场景中是否仍稳定;(4) 与 RegMean/LOT Merging 等合并阶段方法做"组合实验",刻画"合并 + 标定"之间的可加性边界;(5) 推广到多模态合并 (CLIP-style vision-language) 和 RLHF 后的对齐模型合并,研究特征漂移是否仍能用前向闭式解释;(6) 把 $\sum_i \omega_i G_i + \lambda I_d$ 写成可微的"岭化层",放进端到端训练中,与 adapter 类方法公平比较。
复现评估
复现门槛整体较低。代码仓库已在摘要中给出 (github.com/egangu/featcal2026),论文主表使用的 FusionBench 协议、CLIP-ViT-B/32 与 L/14 8/14/20 任务套件、FLAN-T5-base/large GLUE 8 任务、MergeBench Llama-3.2-3B / 3.1-8B 6 任务均为公开基准,附录 I/L 还给出了完整 per-task 数字与扰动协议;FEATCAL 自身不训练神经网络,所有线性模块用闭式公式 (17) 一步求解,作者报告 n=256 校准在 8 任务 B/32 上仅需 53s,单卡 GPU 即可完成;超参 $(\alpha,\rho,\lambda)$ 集中在第 5.1 节末尾的"Calibration setup",消融在 Fig. 5。潜在复现风险在于:(a) 闭式解数值稳定性依赖 $\epsilon$ 选取与逐层特征 cache 的 batch 顺序,代码若不公开 cache 逻辑,可能与论文数字有微差;(b) 不同上游 merger (TA/AdaMerging/WUDI) 的基线权重与超参需要严格按 FusionBench recipe 复现;(c) Llama-3.x 模型权重需自行从 HuggingFace 拉取并按 MergeBench 协议切分任务专家。整体而言,论文可复现性评级为中上,主要变量是闭式解实现细节与上游 merger 的 recipe 一致性。
论文图表
三联图:(a) Stanford Cars 在最终投影特征上的分布,TA 合并后特征远离专家 (余弦 0.60),FEATCAL 把余弦拉到 0.84;(b) 12 个 Transformer 层上的平均 L2 特征漂移曲线,FEATCAL 在所有层都低于 TA,最终层减少 46% 漂移;(c) 8 任务 per-task 准确率柱状图,FEATCAL 在每条任务上都高于 TA 并接近专家基线。
用一张图同时给出"特征分布被拉向专家"和"逐层漂移在减少"以及"任务准确率提升",是论文最核心的动机+机制+结果三合一图。