想象一下你在学习第二语言。你花了几个月的时间精通了法语。然后,你转而学习西班牙语。几个月后,当你再次尝试说法语时,你发现自己夹杂着西班牙语单词,或者更糟糕的是,你完全忘记了法语语法。

这种现象在心理学中被称为灾难性遗忘 (Catastrophic Forgetting) , 这对于人工智能,特别是多模态大语言模型 (MLLMs) 来说,是一个巨大的头痛问题。像 GPT-4V 或 Gemini 这样的模型在理解图像和回答相关问题方面非常强大。然而,世界在不断变化。我们希望这些模型能够持续学习新类型的数据和任务,而无需从头开始重新训练 (这需要花费数百万美元) ,并且——至关重要的是——不忘记它们之前学到的东西。

在这篇文章中,我们将深入探讨一篇引人入胜的研究论文,题为**“CL-MoE: Enhancing Multimodal Large Language Model with Dual Momentum Mixture-of-Experts for Continual Visual Question Answering”** (CL-MoE: 利用双动量混合专家模型增强多模态大语言模型的持续视觉问答能力) 。研究人员提出了一种新颖的架构,允许 AI 持续学习,在吸收新知识的同时保护旧知识。

VQA v2 上持续学习随时间的进展。图表显示,像 CL-MoE 这样的近期方法正在接近多任务学习的上限。

如上图 1 所示,该领域一直致力于缩小“普通 (Vanilla) ”学习 (模型会遗忘) 与“多任务 (Multitask) ”学习 (模型一次性学习所有内容) 之间的差距。提出的方法 CL-MoE 代表了这一时间线上的重大飞跃。

问题: 知识的高昂代价

标准 MLLM 由视觉编码器 (用于看) 和大语言模型 (用于思考和说) 组成。它们是在海量数据集上离线训练的。但在现实世界中,数据是以流的形式出现的。趋势在变,新物体出现,新的问题类型被提出。

如果我们只是在新数据上微调 MLLM,神经网络的权重会为了最小化任务的误差而发生变化。在这个过程中,它们会偏离对任务最优的配置。结果呢?模型变成了新事物的专家,但在以前擅长的事情上却失败了。

现有的解决方案通常分为两类:

  1. 正则化 (Regularization) : 惩罚模型改变对先前任务很重要的参数。
  2. 重演 (Rehearsal) : 保留一个小型的旧数据“记忆库”,以便与新数据混合使用。

虽然这些方法有所帮助,但它们往往难以应对多模态任务的复杂性。CL-MoE 的作者认为,我们需要在模型管理其“技能”的方式上进行结构性变革。

解决方案: 混合专家模型 (MoE)

这篇论文的核心思想是将混合专家模型 (Mixture-of-Experts, MoE)持续学习 (Continual Learning, CL) 相结合。

在标准的密集神经网络中,每个神经元都会对每个输入激活。在混合专家模型中,网络被划分为不同的子网络,称为“专家 (experts) ”。对于任何给定的输入,“路由器 (router) ”会决定哪些专家应该处理这项工作。

研究人员使用了一种特定的高效微调方法,称为LoRA (Low-Rank Adaptation,低秩自适应) 。 他们没有重新训练整个庞大的 LLM,而是冻结主要参数,只训练小的适配器层。在他们的 CL-MoE 框架中,这些适配器充当了“专家”。

这是一个基于 LoRA 的 MoE 层的数学公式:

基于 LoRA 的 MoE 输出公式。

在这个公式中:

  • \(\mathbf{W}\mathbf{x}\) 是冻结的预训练权重的输出 (基础知识) 。
  • 求和符号代表专家的贡献。
  • \(G(\mathbf{x})_i\) 是门控 (路由器) ,决定给专家 \(i\) 分配多少权重。
  • \(B_i A_i\) 是代表专家的低秩矩阵。

架构: CL-MoE

研究人员提出了一个名为 CL-MoE 的框架,即持续学习混合专家模型。它解决了标准 MoE 模型在持续学习设置中无法很好解决的两个具体问题:

  1. 选择: 当任务不断变化时,我们要如何选择合适的专家? (由 RMoE 解决)
  2. 更新: 我们如何在不擦除旧技能的情况下更新专家参数? (由 MMoE 解决)

让我们看看高层架构:

CL-MoE 的框架,包含双路由器 MoE 和动态动量 MoE。

如图 2 所示,系统处理输入的图像和文本。它通过一个路由器选择特定的专家 (彩色块) 。关键是,注意“任务共享专家” (绿色) 和“任务特定专家” (橙色) 之间的区别。这种区别对于更新策略至关重要,我们要稍后会详细解析。

组件 1: 双路由器 MoE (RMoE)

标准路由器查看输入并选择专家。但在视觉问答 (VQA) 中,上下文在两个层面上很重要:

  1. 实例级 (Instance Level) : 这张特定的图片是关于什么的? (例如,一张猫的照片需要物体识别专家) 。
  2. 任务级 (Task Level) : 我们正在解决哪种问题? (例如,数物体 vs 识别颜色) 。

如果我们只使用实例路由器,模型可能会错过当前任务的更广泛背景。如果我们只使用任务路由器,它又会错过特定图像的细微差别。

RMoE 采用了双重策略。

实例级路由器 (\(G^I\))

该路由器接收特定的输入表示 \(\mathbf{x}\),并使用 Softmax 函数计算专家上的概率分布。它会问: “对于这个特定的句子和图像,哪个专家是最好的?”

实例级路由器权重的公式。

任务级路由器 (\(G^T\))

这里变得有趣起来。任务级路由器不只是看一张图片。它聚合了当前任务整个训练集中实例路由器的决策。它本质上是平均了实例级的选择,以此找出哪些专家对当前任务普遍有用 (例如,“专家 5 非常擅长‘计数’任务”) 。

任务级路由器权重的公式。

这里,\(N^t\) 是当前任务中的样本数量。

推理: 猜测任务

在训练期间,我们知道正在处理哪个任务。但在测试 (推理) 期间,模型只能看到图像和问题。它不知道自己应该做“任务 1”还是“任务 5”。

为了解决这个问题,模型为每个任务维护“聚类中心” (\(R_t\)) ——基本上是该任务中查询样貌的平均表示。

聚类中心计算公式。

当一个新的测试样本进来时,模型会将样本的特征与这些中心进行比较,以预测任务 ID (\(t\)):

推理期间任务 ID 预测的公式。

最后,模型使用平衡超参数 \(\beta\) 结合实例路由器任务路由器的建议。这给出了一个综合输出 \(\hat{\mathbf{x}}\),它同时受益于局部 (实例) 和全局 (任务) 的洞察。

结合实例和任务路由器输出的公式。

组件 2: 动态动量 MoE (MMoE)

既然我们已经选择了专家,我们该如何训练他们呢?这就是 “动量 (Momentum) ” 部分发挥作用的地方。

在持续学习中,我们面临一个冲突:

  • 可塑性 (Plasticity) : 我们想要改变参数以学习新任务。
  • 稳定性 (Stability) : 我们想要冻结参数以保留旧任务。

MMoE 模块通过动态地为权重更新分配“动量”值来解决这个问题。它根据当前任务和先前任务将专家分为三类:

  1. 任务共享专家 (Task-Shared Experts) : 这些专家在以前的任务中很重要,且在当前任务中也很重要。他们是“通才”。
  2. 任务特定专家 (Task-Specific Experts) : 这些对当前任务很重要,但之前用得不多。他们是新事物的“专才”。
  3. 其他 (Others) : 当前未使用的专家。

模型使用超参数 \(\gamma\) (gamma) 来控制权重应该改变多少。

  • 如果一个专家是任务共享的,我们倾向于稳定性 (保留 \(\theta_{t-1}\)) 。
  • 如果一个专家是任务特定的,我们倾向于可塑性 (吸收新的 \(\varphi_t\)) 。

每个专家的权重 \(\lambda_i\) 确定如下:

基于专家类型的 Lambda 选择公式。

最后,专家参数 \(\theta_t\) 使用旧参数 (\(\theta_{t-1}\)) 和新学习参数 (\(\varphi_t\)) 的加权平均值进行更新:

动态动量更新公式。

这个简单而优雅的公式确保模型只从根本上改变其大脑中专门针对新问题的部分 (专家) ,同时仔细地微调那些普遍有用的部分。

实验结果

研究人员在 VQA v2 基准上测试了 CL-MoE,将其分为 10 个连续任务 (例如,识别、定位、计数、常识等) 。

他们使用了两个关键指标:

  • AP (平均性能) : 模型最后在所有任务上的准确率如何? (越高越好)
  • AF (平均遗忘) : 旧任务的准确率下降了多少? (越低越好。负数意味着模型实际上在旧任务上有所提升!)

与基线对比

让我们看看表 1 中的结果。

CL-MoE 与其他方法在 VQA v2 上的性能对比表。

关键要点:

  1. 最先进水平 (SOTA) : CL-MoE (“Multitask”之前的最后一行) 实现了 51.34% 的 AP,显着高于之前的最佳水平 (VQACL 的 43.49%) 。
  2. 负遗忘: 看一下 AF 列。CL-MoE 得分为 -0.02 。 这是非凡的。大多数持续学习方法的 AF 都是正数 (意味着它们会遗忘) 。负的 AF 意味着后向迁移 (Backward Transfer) ——学习新任务实际上帮助模型更好地回答了以前任务的问题!
  3. 模型规模很重要: 该表比较了基于 VL-T5 (较小) 和 LLaVA-7B (较大) 的方法。基于 LLaVA 的方法通常表现更好,但 CL-MoE 最大限度地挖掘了 LLaVA 架构的潜力。

消融实验: 我们需要这两部分吗?

作者进行了消融研究,以查看 RMoE 和 MMoE 是否都是必要的。

显示 MMoE 和 RMoE 组件贡献的消融研究表。

  • 行 (a): 两者都不用 (Vanilla) ,性能很差 (AP 32.51%) 。
  • 行 (b) & (c): 只使用 MMoE 或只使用 RMoE 会显着改善情况,但它们有弱点。仅使用 RMoE (c) 会导致高遗忘率 (AF 11.09%) 。
  • 行 (d): 结合两者产生了最佳的准确率并消除了遗忘。

超参数敏感性

模型对 \(\gamma\) (动量平衡) 和 \(\beta\) (路由器平衡) 的选择有多敏感?

显示超参数 gamma 和 beta 对性能影响的图表。

图 3 显示了这些参数的一个清晰的“最佳点”。

  • 左图 (\(\gamma\)): 0.7 左右的值是最佳的。如果 \(\gamma\) 太高,模型太僵化 (高稳定性,低可塑性) 。如果太低,它会遗忘太多。
  • 右图 (\(\beta\)): 0.5 的值效果最好,这表明实例路由器和任务路由器同等重要。

结论

CL-MoE 论文为持续学习中的专用架构提出了令人信服的论据。在处理复杂的多模态数据时,仅仅调节权重是不够的。

通过将模型分解为专家 , 巧妙地根据局部和全局上下文路由数据 (RMoE) ,并根据专家的使用情况动态更新权重 (MMoE) ,我们可以构建随时间推移变得更聪明而不会丢失过去的 AI。

这种方法让我们离终身学习代理更近了一步——这种 AI 助手可以在数年内学习你的特定偏好和新任务,而不会忘记它们在第一天学到的基础知识。

给学生的关键要点:

  • MoE 很强大: 它增加了容量,而没有增加每次推理的计算成本。
  • 上下文为王: 双路由器方法强调,知道你在做什么任务与输入数据本身一样重要。
  • 平衡是关键: 动量更新是稳定性 (记忆) 和可塑性 (学习) 之间的数学平衡行为。