论文题目:MoE-Adapters++: Towards More Efficient Continual Learning of Vision-Language Models via Dynamic Mixture-of-Experts Adapters(通过动态混合专家适配器实现更有效的视觉语言模型的持续学习)
期刊:TPAMI (计算机科学 Top1)
摘要:在本文中,我们首先提出了MoE-Adapters,这是一种参数有效的训练框架,用于缓解视觉语言模型(VLM)增量学习中的长期遗忘问题。我们的移动适配器利用增量添加的路由器来激活和集成来自预定义静态专家集的独家专家适配器,使预训练的CLIP能够有效地适应新任务。为了保持VLM的零样本学习能力,引入了分布判别自动选择器(DDAS),将分布内和分布外输入分别自动路由到moe - adapter和原始CLIP。然而,依赖静态专家集和单独的分布选择器会导致参数冗余和增加训练复杂性。作为回应,我们进一步扩展了MoE-Adapters++框架,引入了动态MoE-Adapters,使专家能够在持续学习过程中自适应地参与进来。此外,提出了一种潜在嵌入自动选择器(LEAS),将分布选择集成到CLIP中,以创建更统一的体系结构。在不同环境下进行的大量实验表明,所提出的方法在提高训练效率的同时,始终优于以前最先进的方法。
代码和模型位于https://github.com/JiazuoYu/MoE-Adapters4CL。

MoE-Adapters++ ------ 面向视觉语言模型的高效持续学习框架
📌 引言
在人工智能快速发展的今天,大规模视觉语言模型(VLM)如CLIP已经展现出强大的开放世界理解能力。然而,一个理想的AI系统应该像人类一样,能够持续从动态环境中学习新知识,而不会遗忘已有的能力。这就引出了持续学习(Continual Learning)领域的核心挑战------灾难性遗忘(Catastrophic Forgetting)。
本文将深入解读来自大连理工大学等机构的研究团队发表在TPAMI 2025上的工作:MoE-Adapters++。该方法巧妙地结合了混合专家(Mixture-of-Experts)机制与参数高效微调技术,在保持模型零样本能力的同时,实现了高效的持续学习。
🎯 问题背景:为什么持续学习如此困难?
1. 灾难性遗忘问题
当神经网络在新任务上进行训练时,模型参数会被更新以适应新数据,这往往会覆盖或干扰之前学习到的知识。想象一下,你学会了骑自行车后去学滑板,结果学完滑板后忘记了怎么骑自行车------这就是灾难性遗忘的直观理解。
2. 现有方法的困境
| 方法类型 | 代表工作 | 存在的问题 |
|---|---|---|
| 基于记忆 | iCaRL, GEM | 需要存储历史数据,内存开销大 |
| 基于正则化 | EWC, LwF | 平衡新旧任务困难,长期学习性能下降 |
| 动态扩展 | DER, DyTox | 模型规模持续增长,无法处理未见数据 |
| ZSCL | 知识蒸馏 | 计算负担重(149.6M参数),训练时间长 |
3. 零样本能力的保持
CLIP等预训练VLM具有强大的零样本迁移能力,但传统的持续学习方法往往会在适应新任务的过程中损害这种能力。如何在学习新知识的同时保持对未见类别的识别能力,是一个亟待解决的问题。
💡 核心方法:从MoE-Adapters到MoE-Adapters++

第一阶段:MoE-Adapters
核心思想
在冻结的CLIP模型基础上,构建一个基于混合专家的可扩展架构。关键创新在于:
- 使用适配器作为专家:采用LoRA等轻量级适配器作为MoE中的专家,大幅减少可训练参数
- 增量式路由器:每个新任务添加一个任务特定的路由器,选择Top-k个专家进行加权组合
- 激活-冻结策略:训练完成后冻结高频使用的专家,实现任务间知识协作
数学表达
给定任务t的输入特征x^t,MoE-Adapters的输出为:

其中,门控权重通过路由器计算:

c^t是[CLS] token,R^t是任务特定的路由器。
DDAS模块
为了自动判断输入数据属于哪个任务,作者设计了分布判别自动选择器(DDAS):
-
为每个任务训练一个Auto-Encoder,学习该任务的数据分布
-
推理时,计算输入在各个AE上的重建误差
-
误差最小的AE对应的任务即为预测任务
-
若所有误差都超过阈值,则认为是未见数据,使用原始CLIP进行零样本推理
输入图像
│
▼
┌───────────────────┐
│ 计算各AE重建误差 │
│ d¹, d², ..., dᵀ │
└───────────────────┘
│
▼
┌───────────────────────────────────┐
│ 所有 dᵗ > 阈值? │
│ ├── 是 → 原始CLIP (零样本推理) │
│ └── 否 → MoE-Adapters (任务推理) │
└───────────────────────────────────┘
第二阶段:MoE-Adapters++
虽然MoE-Adapters取得了不错的效果,但仍存在以下问题:
- 专家数量预定义:需要预先知道总任务数,早期任务存在参数冗余
- DDAS独立于主网络:增加了训练复杂度和计算开销
- 灵活性不足:难以适应超出预设的新任务
针对这些问题,作者提出了MoE-Adapters++。

创新1:动态MoE-Adapters
核心改进:专家集合不再固定,而是随着任务增加动态扩展。
网络架构划分为三部分:
- M层冻结层:保持CLIP的预训练特征不变
- 1层识别层(Recognition Layer):部署LEAS进行分布识别
- N层后续层(Subsequent Layers):部署动态MoE-Adapters和DEeC
创新2:DEeC(动态专家扩展控制器)
DEeC的核心是通过监控z-score来决定是否需要添加新专家:

决策逻辑:
-
对于新任务(t > 1),首先尝试仅训练路由器,复用现有专家
-
如果所有现有AE的z-score都超过阈值(默认1.0),说明现有专家无法适应新任务
-
触发扩展信号,添加新专家和对应的AE
扩展决策伪代码
def should_expand(z_scores, threshold=1.0):
return all(z > threshold for z in z_scores)if should_expand(z_scores):
expert_set.add(new_expert())
router.extend_dimension()
auto_encoders.add(new_ae())
创新3:LEAS(潜在嵌入自动选择器)
LEAS是对DDAS的重大改进:
| 特性 | DDAS | LEAS |
|---|---|---|
| 特征来源 | 独立的AlexNet | 冻结CLIP的中间特征 |
| 架构集成 | 与CLIP并行 | 嵌入CLIP内部 |
| 额外参数 | 需要额外特征提取器 | 仅需轻量级AE |
| 训练复杂度 | 高 | 低 |
选择偏好记录:
训练时,LEAS记录每个AE在每个任务上的收敛损失值:

所有AE的收敛值组成选择偏好向量:
推理时的任务识别:
计算测试样本与各任务的差异度:

🔬 实验结果与分析
实验设置
作者在三类任务上进行了全面评估:
- Multi-domain Task Incremental Learning (MTIL):11个不同领域的数据集
- DomainNet TIL:6个域的大规模数据集
- Class Incremental Learning (CIL):CIFAR100、TinyImageNet、ImageNet-1k
主要结果
效率对比
MoE-Adapters++相比原始MoE-Adapters实现了惊人的效率提升:
┌─────────────────────────────────────────────────────┐
│ 效率提升对比 │
├──────────────┬───────────────┬───────────────┬──────┤
│ 指标 │ MoE-Adapters │ MoE-Adapters++│ 提升 │
├──────────────┼───────────────┼───────────────┼──────┤
│ 训练参数 │ 59.8M │ 1.1M │ -98% │
│ GPU内存 │ 22358MiB │ 6529MiB │ -70% │
│ 训练时间 │ 1.58s/it │ 0.68s/it │ -57% │
│ 推理时间 │ 0.96s/it │ 0.77s/it │ -20% │
└──────────────┴───────────────┴───────────────┴──────┘
MTIL基准性能
在完整的11任务MTIL基准上:


| 方法 | Transfer ↑ | Average ↑ | Last ↑ | 参数量 |
|---|---|---|---|---|
| ZSCL | 68.1 | 75.4 | 83.6 | 149.6M |
| L2P | 53.2 | 67.9 | 82.0 | 0.5M |
| DualPrompt | 52.4 | 68.0 | 82.3 | 1.8M |
| S-Prompts | 52.2 | 68.3 | 83.4 | 0.5M |
| DIKI | 68.7 | 76.3 | 85.1 | 1.8M |
| MoE-Adapters | 68.9 | 76.7 | 85.0 | 59.8M |
| MoE-Adapters++ | 69.0 | 77.5 | 86.2 | 1.1M |
Few-shot性能
在5-shot设置下,MoE-Adapters++展现出更强的优势:
- Transfer: 69.3% (+4.0% vs 次优)
- Average: 71.7% (+7.3% vs 次优)
- Last: 76.3% (+4.4% vs 次优)
这表明动态专家扩展策略在数据有限时能更有效地学习数据分布。
类增量学习

在CIFAR100上的10步增量学习:
| 方法 | Average | Last |
|---|---|---|
| DyTox+ | 74.10 | 62.34 |
| ZSCL | 82.15 | 73.65 |
| MoE-Adapters(++) | 85.21 | 77.52 |
消融实验洞察
专家数量的影响
实验表明,简单增加专家数量并不能持续提升性能:
| 专家数(NE) | 4-task | 8-task | 11-task |
|---|---|---|---|
| 4 | 64.9/67.5/77.1 | 65.0/71.2/77.9 | 66.5/71.1/74.1 |
| 22 | 66.9/68.0/76.9 | 67.1/74.5/85.8 | 68.9/76.7/85.0 |
| 动态(ND) | 67.1/69.8/78.8 | 67.9/75.9/87.1 | 69.0/77.5/86.2 |
动态扩展策略在各种任务规模下都保持最优性能。
LEAS的分布识别能力
通过t-SNE可视化,LEAS能够清晰地区分不同任务的数据分布:
- 未见数据识别准确率:96.5%
- 已见数据路由准确率:99.9%
层级部署分析
Recognition Layer的位置对性能有显著影响:
| 配置 | Transfer | Average | Last | Unseen | Seen |
|---|---|---|---|---|---|
| 1R/9S (浅层) | 59.9 | 67.1 | 76.4 | 53.9% | 67.4% |
| 1R/5S (中层) | 69.0 | 77.5 | 86.2 | 96.5% | 99.9% |
| 1R/1S (深层) | 65.4 | 73.9 | 83.2 | 54.8% | 95.7% |
中层位置能够平衡特征表达能力和跨域识别能力。
🎨 方法可视化
整体架构图
┌─────────────────────────────────────────────────────────────────┐
│ MoE-Adapters++ 完整架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 输入: 图像 + 文本 │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────┐ │
│ │ 冻结CLIP层 (Layer 1-6) │ │
│ │ 保持预训练特征不变,提取基础视觉特征 │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────┐ │
│ │ Recognition Layer (Layer 7) │ │
│ │ ┌───────────────────┐ ┌───────────────────────────┐ │ │
│ │ │ LEAS │ │ Dynamic MoE-Adapters │ │ │
│ │ │ ┌───┐ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ ┌───┐ │ │ │
│ │ │ │AE1│ │AE2│ │...│ │ │ │E1 │ │E2 │ ... │En │ │ │ │
│ │ │ └───┘ └───┘ └───┘ │ │ └───┘ └───┘ └───┘ │ │ │
│ │ │ 记录选择偏好 │ │ Task Router Rt │ │ │
│ │ └───────────────────┘ └───────────────────────────┘ │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────┐ │
│ │ Subsequent Layers (Layer 8-12) │ │
│ │ ┌───────────────────┐ ┌───────────────────────────┐ │ │
│ │ │ DEeC │ │ Dynamic MoE-Adapters │ │ │
│ │ │ 监控z-score │ │ 动态专家扩展 │ │ │
│ │ │ 控制专家扩展 │ │ │ │ │
│ │ └───────────────────┘ └───────────────────────────┘ │ │
│ └─────────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────────┐ │
│ │ 输出预测 │ │
│ │ LEAS判断 → 已见任务 → 对应Router → 分类结果 │ │
│ │ → 未见数据 → 原始CLIP → 零样本推理 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
训练与推理流程
训练阶段 (Task t):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 检查是否需要扩展专家
└── DEeC计算z-score
├── z-score > 阈值 (所有AE) → 添加新专家 + AE
└── z-score ≤ 阈值 → 复用现有专家
2. 训练当前任务
└── 冻结旧专家,训练新专家 + Router
3. 记录LEAS选择偏好
└── 保存各AE的收敛损失值 V_con^t
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
推理阶段:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. LEAS计算分布差异
└── 对每个任务t,计算 s^t = f(L_eval, V_con^t)
2. 判断数据分布
├── min(s^t) > Thres_zs → 未见数据 → 原始CLIP零样本
└── min(s^t) ≤ Thres_zs → 已见数据 → Task id = argmin(s^t)
3. 路由到对应专家
└── 使用 Router^{task_id} 激活Top-k专家进行预测
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔑 关键技术总结
1. 参数高效性的来源
| 技术 | 贡献 |
|---|---|
| 适配器作为专家 | 相比全参数微调减少97%以上参数 |
| 动态专家扩展 | 避免预定义专家的冗余 |
| LEAS替代DDAS | 消除额外特征提取器 |
| 冻结CLIP主体 | 保持预训练知识,仅训练适配模块 |
2. 抗遗忘能力的来源
| 机制 | 作用 |
|---|---|
| 专家冻结策略 | 保护已学知识不被覆盖 |
| 任务特定路由器 | 隔离不同任务的参数空间 |
| MoE稀疏激活 | 减少任务间的参数干扰 |
| LEAS分布识别 | 准确路由到正确的专家组合 |
3. 零样本能力的保持
| 设计 | 效果 |
|---|---|
| CLIP主体冻结 | 保持原始视觉-语言对齐能力 |
| 分布外检测 | 自动识别未见数据 |
| 原始分支保留 | 未见数据直接使用CLIP推理 |
📊 与相关工作的对比
与Prompt-based方法对比
| 维度 | L2P/DualPrompt | MoE-Adapters++ |
|---|---|---|
| 参数存储 | 提示池 | 动态专家集 |
| 任务识别 | 提示选择机制 | LEAS分布判别 |
| 知识协作 | 有限 | 通过共享专家实现 |
| 零样本保持 | 有退化 | 显式保护 |
与ZSCL对比
| 维度 | ZSCL | MoE-Adapters++ |
|---|---|---|
| 训练参数 | 149.6M | 1.1M |
| 训练策略 | 知识蒸馏 | 专家混合 |
| 计算开销 | 高(需要参考模型) | 低 |
| 扩展性 | 固定架构 | 动态扩展 |
🚀 应用前景与局限性
潜在应用场景
- 持续学习的多模态助手:不断学习新领域知识
- 边缘设备部署:低参数量适合资源受限场景
- 增量式数据标注:逐步扩展识别类别
- 个性化模型适配:为不同用户持续定制
当前局限性
- 阈值敏感性:LEAS的零样本阈值需要根据任务特性调整
- 任务边界假设:仍需要明确的任务划分
- 长序列任务:在极长任务序列上的扩展性有待验证
📝 总结
MoE-Adapters++是一个设计精巧的持续学习框架,其核心创新在于:
- 动态专家扩展:摆脱了预定义专家数量的限制,实现了真正的增量式学习
- LEAS统一架构:将分布选择器集成到CLIP内部,大幅降低了训练复杂度
- 极致的参数效率:仅用1.1M参数就达到了SOTA性能,相比ZSCL减少了99%以上
这项工作为大规模视觉语言模型的持续学习提供了一个高效且实用的解决方案,对于未来构建能够持续进化的AI系统具有重要的参考价值。
如果这篇文章对你有帮助,欢迎点赞收藏!有任何问题欢迎在评论区讨论。论文中的内容远远比博客介绍的多!博主不是持续学习领域的学习者,解析水平有限,从事该领域的学者想要了解更多可以深读该论文。