1. 项目概述
CLARE(Continual Learning via Adapter Routing and Expansion)是一种面向视觉-语言-动作模型(VLA)的持续学习框架,旨在解决机器人长期部署中的关键挑战——如何在不遗忘已学技能的前提下持续掌握新任务。传统持续学习方法通常需要存储历史数据(样本回放),难以应对长任务序列,或依赖任务标识进行部署。CLARE通过创新的轻量级模块化适配器架构和自主路由机制,实现了无需样本回放和任务标识的高效持续学习。
1.1 核心问题解析
在机器人实际应用中,持续学习面临三个核心挑战:
- 灾难性遗忘:当模型学习新任务时,会覆盖已有任务的参数,导致性能急剧下降
- 参数效率:简单地扩展模型会导致参数线性增长,增加计算和存储开销
- 自主部署:真实场景中往往无法获取明确的任务标识,需要模型自主判断当前情境
CLARE的创新在于将这三个问题统一解决:通过动态扩展的适配器模块保留旧知识,利用特征相似性自动路由适配器,实现参数高效(仅约2%/任务的增长)且自主的持续学习。
2. 技术架构与原理
2.1 基础模型结构
CLARE基于预训练的视觉-语言-动作模型(VLA),这类模型通常采用Transformer架构,包含:
- 视觉编码器(如DINOv2)
- 语言编码器(如CLIP)
- 多模态融合模块
- 动作生成模块(如扩散模型或流匹配模型)
在LIBERO基准测试中,CLARE使用了两种基础架构:
- DiT-EncDec:编码器-解码器结构的扩散Transformer
- DiT-Dec:仅解码器结构的流匹配Transformer
2.2 模块化适配器设计
CLARE在选定的前馈网络(FFN)层中注入轻量级适配器模块,每个适配器采用编码器-解码器结构:
class Adapter(nn.Module): def __init__(self, d_model, r=8): super().__init__() self.down = nn.Linear(d_model, r) # 降维 self.up = nn.Linear(r, d_model) # 升维 def forward(self, x): return self.up(F.relu(self.down(x))) # ReLU激活适配器工作流程:
- 输入特征xℓ ∈ R^dℓ通过降维矩阵W_down ∈ R^r×dℓ(r ≪ dℓ)
- 经过ReLU激活函数
- 通过升维矩阵W_up ∈ R^dℓ×r恢复原始维度
- 输出与原始FFN层相加:FFNℓ(xℓ) = FFN_preℓ(xℓ) + A*ℓ(xℓ)
这种设计保证了:
- 参数高效:r通常设为8-32,远小于dℓ(通常512+)
- 保持原始架构:以并行分支形式添加,不改变输入输出维度
- 知识隔离:不同任务使用不同适配器,避免参数干扰
2.3 自主路由机制
CLARE的核心创新是其自主路由系统,包含两个关键组件:
2.3.1 自编码器判别器
每个可扩展层ℓ配备一组自编码器判别器Dℓ = {D1ℓ, D2ℓ, ...},计算输入特征的重构误差:
e^j_ℓ(x_ℓ) = ||x_ℓ - D^j_ℓ(x_ℓ)||_2训练目标是最小化:
L_{recon}(D^n_ℓ) = E_{x_ℓ∼D_n}[e^j_ℓ(x_ℓ)]2.3.2 动态路由策略
在推理时,路由机制:
- 计算所有判别器对当前特征的重构误差
- 选择误差最小的判别器对应的适配器:
j^* = argmin_{j∈{1,...,n}} e^j_ℓ(x_ℓ) - 激活链接的适配器Aℓ = Bℓ(Djℓ)
这种设计实现了:
- 无任务标识:完全基于特征相似性自动选择
- 低计算开销:仅需前向传播小型自编码器
- 实时性:适合机器人控制的高频需求
3. 动态扩展策略
3.1 基于z-score的扩展决策
CLARE不会为每个任务盲目添加适配器,而是通过统计检验判断是否需要扩展:
对每个现有判别器Djℓ,计算z-score:
z^j_ℓ = \frac{1}{|D_n|} ∑_{x_ℓ∈D_n} \frac{e^j_ℓ(x_ℓ) - μ^j_ℓ}{σ^j_ℓ}其中μjℓ和σjℓ是Djℓ在历史任务上的均值和标准差
扩展条件:
- 如果所有zjℓ > γ(γ=2.5),表示新任务特征与所有历史任务显著不同,则扩展新适配器
- 否则,仅添加判别器并链接到最相似适配器
3.2 分层扩展策略
实验发现不同层对任务变化的敏感度不同:
- 浅层:对输入分布变化敏感,常需扩展
- 深层:更多处理高级特征,可共享跨任务
CLARE采用混合策略:
- 默认优先扩展浅层(如视觉编码器的前几层)
- 当无层满足扩展条件时,强制扩展最浅层
- 首任务默认扩展所有可扩展层
这种策略实现了:
- 平均每任务仅1.7-2.3%参数增长
- 关键层充分扩展,非关键层共享知识
- 避免冗余参数,保持模型紧凑
4. 实现细节与优化
4.1 训练流程
CLARE采用两阶段训练策略:
def train_task(n): # 阶段一:训练新适配器 freeze_all_except(adapters[n]) train_flow_matching(adapters[n], data[n]) # 阶段二:训练新判别器 freeze_all_except(discriminators[n]) train_autoencoder(discriminators[n], data[n])关键细节:
- 优化器:AdamW,学习率1e-4(适配器)和5e-4(判别器)
- 批量大小:32
- 训练步数:适配器20k,判别器2k
- 学习率调度:适配器用cosine衰减,判别器保持恒定
4.2 关键超参数
| 模块类型 | 参数量(FFN) | 参数量(Proj.) | 学习率 | 训练步数 |
|---|---|---|---|---|
| 适配器 | 0.26M | 3.2M | 1e-4 | 20,000 |
| 判别器 | 0.33M | 1.4M | 5e-4 | 2,000 |
注:基础模型约200M参数,CLARE添加的模块非常轻量
5. 性能评估与对比
5.1 评估指标
在LIBERO-10基准测试中使用三个核心指标:
- AUC:所有任务的平均成功率曲线下面积
- FWT(前向迁移):新任务首次学习后的成功率
- NBT(负向反向迁移):旧任务性能下降程度
5.2 基准对比
| 方法 | AUC(EncDec) | FWT | NBT | AUC(Dec) |
|---|---|---|---|---|
| SeqFFT | 21.00 | 71.13 | 70.33 | 22.37 |
| SeqLoRA | 16.26 | 55.00 | 53.08 | 21.37 |
| PackNet | 20.91 | 73.77 | 73.74 | 4.84 |
| ER | 55.87 | 67.67 | 15.79 | 60.54 |
| CLARE (Ours) | 66.71 | 66.07 | -0.80 | 75.11 |
关键发现:
- CLARE在AUC上显著领先(+11-15%绝对值)
- 几乎零遗忘(NBT接近0)
- 即使ER可以使用历史数据,CLARE仍表现更优
5.3 消融实验
5.3.1 扩展层选择
| 扩展层位置 | AUC | FWT | NBT |
|---|---|---|---|
| 编码器 | 65.38 | 66.53 | 1.70 |
| 解码器 | 28.99 | 30.87 | 2.95 |
| 编码器+解码器 | 66.60 | 65.77 | 1.50 |
| 线性投影 | 75.11 | 75.03 | 1.85 |
结论:扩展编码器部分效果最佳
5.3.2 扩展阈值γ影响
| γ值 | 适配器数量 | AUC | FWT | NBT |
|---|---|---|---|---|
| 0 | 60 | 65.38 | 67.00 | 0.50 |
| 2.5 | 32 | 63.21 | 64.33 | 0.45 |
| 5 | 24 | 61.05 | 62.17 | 0.40 |
| 20 | 16 | 57.00 | 57.00 | 0.35 |
结论:γ=2.5在性能和参数效率间取得良好平衡
6. 实际应用建议
6.1 部署注意事项
层选择策略:
- 优先扩展靠近输入的层(视觉/语言编码器)
- 对DiT-Dec架构,扩展线性投影层效果最佳
- 避免过度扩展解码器层
超参数调优:
- 初始设置γ=2.5,根据任务相似度调整
- 适配器秩r从8开始,复杂任务可增至32
- 判别器隐藏层设为适配器的1.5-2倍
内存管理:
# 示例:动态加载适配器 def forward(self, x): active_adapters = self.router.select(x) for layer, adapter in active_adapters.items(): x = layer(x, adapter) # 仅加载激活的适配器 return x
6.2 常见问题排查
新任务性能差:
- 检查z-score阈值是否过高
- 增加适配器秩r
- 确认判别器训练充分(损失收敛)
旧任务遗忘:
- 降低γ值强制更多扩展
- 检查路由是否错误激活新适配器
- 增加判别器容量
计算延迟增加:
- 限制最大适配器数量
- 对相似任务共享适配器
- 使用更小的判别器
7. 扩展方向
CLARE框架可进一步扩展:
- 跨模态路由:视觉和语言模态使用独立路由策略
- 层次化适配器:粗粒度到细粒度的多层次适配
- 在线学习:结合CLARE与在线梯度更新
- 安全验证:添加异常检测防止错误路由
在实际机器人部署中,我发现将CLARE与以下技术结合特别有效:
- 视觉里程计提供环境连续性信息
- 语言指令嵌入增强任务区分度
- 动作平滑处理确保路由切换时的稳定性
这种模块化设计使得CLARE能灵活适应不同机器人平台,从家庭服务机器人到工业机械臂,只需调整基础VLA模型和少量适配器参数即可实现持续技能学习。