4. 多任务学习基础
多任务学习(Multi-Task Learning, MTL)是构建多任务VLA(Vision-Language-Action)跨具身联合训练模型的基石。与单任务学习不同,多任务学习旨在利用多个相关任务之间的共享信息,通过联合训练提升模型的泛化能力、数据效率与鲁棒性。然而,多任务学习并非简单的损失函数相加,其背后涉及任务参数的共享方式、任务间正负迁移的博弈以及损失量纲与收敛速度的平衡等核心问题。本章将系统梳理多任务学习的基本范式,剖析任务间迁移与干扰的机理,并给出实用的损失平衡策略与工程实践指南。
上图展示了多任务VLA跨具身联合训练的整体逻辑:多源输入经过共享参数主干提取通用特征,再分流至各任务头;训练过程中,多任务损失平衡策略动态调节各任务的梯度贡献,而任务间迁移与干扰分析则指导网络架构设计与训练调度。下面我们逐一深入各核心模块。
4.1 多任务学习的基本范式
4.1.1 核心原理:从硬共享到软共享的谱系
多任务学习的基本范式可按照参数共享方式分为三大类:硬参数共享(Hard Sharing)、软参数共享(Soft Sharing)和分层共享(Hierarchical Sharing)。硬参数共享是最经典的范式,所有任务共用底层的特征提取网络,仅在顶层为每个任务保留独立的输出头。这种结构极大减少了参数量,强制模型学习通用表示,但在任务差异过大时容易产生负迁移。软参数共享则允许每个任务拥有独立的网络,通过正则化项(如L2距离、迹范数)约束不同任务网络参数之间的相似性,灵活性更高但计算开销成倍增加。分层共享介于两者之间,通常底层(如视觉编码器)完全共享,中层按任务簇分组共享,高层完全独立,是目前多任务VLA模型最常用的架构。
| 范式类型 | 参数共享方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 硬参数共享 | 底层完全共享,顶层独立 | 参数少、训练快、泛化强 | 任务差异大时负迁移明显 | 任务高度相关(如抓取+放置) |
| 软参数共享 | 各任务独立网络+参数距离约束 | 灵活、抗干扰 | 计算量大、收敛慢 | 任务差异大且数据充足 |
| 分层共享 | 底层共享,中层分组,顶层独立 | 平衡共享与独立 | 需要人工设计分组 | 跨具身多任务VLA |
4.1.2 判断方法:如何选择共享范式
选择共享范式时,建议遵循以下操作流程:第一步,计算任务间输入分布的相似度(如FID距离、Embedding余弦相似度);第二步,评估任务输出空间的异构程度(连续动作 vs 离散决策);第三步,根据相似度矩阵决定共享层级。若相似度高于0.7,优先考虑硬共享;若低于0.3,则必须采用软共享或分层共享。对于跨具身场景(机械臂、轮式机器人、人形机器人),由于本体感知差异较大,通常采用分层共享:视觉编码器完全共享,而具身相关的运动控制层独立。
4.1.3 案例拆解:跨具身抓取与导航的共享设计
假设我们要训练一个模型同时完成“机械臂抓取”和“轮式机器人导航”两个任务。初始方案采用硬参数共享,发现导航任务的损失在训练后期震荡,而抓取任务精度下降。通过分析梯度余弦相似度,发现两个任务在高层特征上的梯度方向夹角超过120°,存在严重冲突。于是改为分层共享:共享ViT的前6层作为底层视觉特征,第7-9层按任务分组(抓取组和导航组),最后3层完全独立。调整后,导航任务损失下降30%,抓取任务精度提升5%。关键操作是:在共享层与任务分支之间插入梯度隔离层(Gradient Isolation Layer),即对特定层的梯度乘以一个可学习的门控系数,当冲突严重时自动降低共享程度。
4.1.4 常见误区与总结
总结:基本范式的选择本质上是偏差-方差权衡在任务层面的体现。硬共享引入高偏差(强制共享)但降低方差(减少过拟合),软共享则相反。实际工程中建议从分层共享起步,通过实验数据动态调整共享边界。
4.2 任务间迁移与干扰
4.2.1 核心原理:正迁移与负迁移的博弈
任务间迁移是指一个任务的学习过程对另一个任务性能的影响。正迁移(Positive Transfer)发生在任务A和任务B共享底层特征或因果结构时,例如“抓取杯子”和“抓取螺丝刀”共享“接近物体-闭合夹爪”的底层模式。负迁移(Negative Transfer)则源于任务间的梯度冲突或优化目标对立,例如“快速移动”与“精确定位”在动作幅度上存在天然矛盾。干扰(Interference)是负迁移的动态表现,通常表现为训练过程中某个任务的损失突然上升,而其他任务损失下降。
4.2.2 判断方法:量化迁移效应
工程上常用以下三种方法量化任务间迁移:(1)梯度余弦相似度:计算两个任务在共享参数上的梯度向量夹角,夹角小于90°为正迁移,大于90°为负迁移;(2)任务相似度矩阵:通过预训练模型提取各任务数据的特征,计算类中心间的相似度;(3)留一法评估:分别训练“包含任务A”和“不包含任务A”的模型,对比任务B的性能差异。下表展示了梯度相似度与迁移效应的对应关系:
| 梯度余弦相似度 | 迁移类型 | 建议操作 |
|---|---|---|
| cos > 0.5 | 强正迁移 | 增加共享层数,联合训练 |
| 0 < cos ≤ 0.5 | 弱正迁移 | 保持当前共享,监控变化 |
| -0.3 ≤ cos ≤ 0 | 弱负迁移 | 引入梯度裁剪或任务加权 |
| cos < -0.3 | 强负迁移 | 分离网络分支或使用对抗训练 |
4.2.3 实战场景:多任务VLA中的灾难性遗忘
在跨具身联合训练中,灾难性遗忘(Catastrophic Forgetting)是常见问题。例如,模型先训练了机械臂的“精密装配”任务,再训练轮式机器人的“高速巡航”任务,导致装配精度大幅下降。原因在于新任务的梯度更新覆盖了旧任务的重要权重。解决方案包括:弹性权重巩固(EWC)——在损失函数中加入对重要参数变化的惩罚项;经验回放——在训练新任务时混入旧任务的少量样本;动态架构扩展——为新任务分配新的专家模块,不干扰旧任务路径。我们在一组实验中对比了这三种方法:EWC在装配精度保持上最优(下降仅2%),但需要计算Fisher信息矩阵;经验回放实现简单但需要额外存储;动态架构扩展效果最好但参数量增加40%。
4.2.4 常见误区与总结
总结:任务间迁移与干扰是MTL的核心矛盾。正迁移是收益来源,负迁移是主要风险。工程上应建立“监测-诊断-干预”的闭环:持续监测梯度相似度,诊断冲突来源(参数层、特征维度),通过架构调整或损失加权进行干预。
4.3 多任务损失平衡策略
4.3.1 核心原理:损失量纲与收敛速度的失衡
多任务学习的总损失通常表示为各任务损失的加权和:L_total = Σ λᵢ · Lᵢ(θ)。然而,不同任务的损失量纲差异巨大(例如,动作回归的MSE损失通常在0.01量级,而分类的交叉熵损失在1-5量级),且不同任务的收敛速度不同。若直接等权相加,量纲大的任务会主导梯度更新,导致量纲小的任务被忽略。损失平衡策略的目标是动态调整λᵢ,使得各任务在训练过程中获得合理的梯度贡献。
4.3.2 操作流程:三种主流平衡策略
策略一:不确定性加权(Uncertainty Weighting)。基于同方差不确定性(Homoscedastic Uncertainty)建模,将损失函数设计为:L_total = Σ (1/(2σᵢ²)) · Lᵢ + log σᵢ,其中σᵢ是可学习的噪声参数。该方法的优点是自适应、无需人工调参,但需要额外优化σᵢ,且对初始值敏感。
策略二:GradNorm。通过梯度范数归一化来平衡各任务的训练速度。具体步骤:(1)计算各任务损失对共享参数的梯度范数Gᵢ;(2)计算平均梯度范数G_avg和各任务的相对逆训练速率rᵢ;(3)更新λᵢ使得Gᵢ → G_avg × rᵢ^α(α为超参数,通常取0.12)。GradNorm能有效防止某个任务过快地收敛导致梯度消失。
策略三:动态优先级采样(Dynamic Priority Sampling)。不直接调整损失权重,而是调整各任务样本的采样概率。根据各任务的当前损失或梯度范数,对任务进行排序,损失大的任务获得更高的采样频率。该方法实现简单,且与数据增强策略兼容。
# GradNorm 核心伪代码示例
for each iteration:
# 计算各任务损失
losses = [task_loss(model, batch_i) for task_i in tasks]
# 初始化权重 lambda_i(可学习)
weighted_loss = sum(lambda_i * losses[i])
# 计算梯度范数
grads = [torch.autograd.grad(losses[i], shared_params, retain_graph=True) for i in range(n_tasks)]
G_i = [g.norm(2) for g in grads]
G_avg = mean(G_i)
# 计算相对逆训练速率
r_i = (losses[i] / losses[i].detach()) / mean(losses / losses.detach())
# 更新 lambda_i 使 G_i 接近 G_avg * r_i^alpha
target = G_avg * (r_i ** alpha)
loss_gradnorm = sum(abs(G_i - target))
# 反向传播更新 lambda_i(不更新模型参数)
loss_gradnorm.backward()
# 更新模型参数
weighted_loss.backward()
optimizer.step()
4.3.3 案例拆解:VLA跨具身训练的损失平衡实战
我们训练一个包含“语言条件抓取”和“语言条件导航”的VLA模型。初始使用等权损失,发现抓取任务收敛极快(约5000步),而导航任务在20000步时仍未收敛。分析发现,抓取任务的L2动作损失约为0.05,而导航任务的交叉熵损失约为2.5,量纲相差50倍。采用不确定性加权后,模型自动学习到σ_抓取≈0.3,σ_导航≈1.2,等效权重比约为16:1,导航任务获得更多梯度。训练20000步后,导航成功率从45%提升至72%,抓取成功率仅下降1.5%。进一步使用GradNorm,设置α=0.12,训练速度更均衡,最终两个任务均达到85%以上成功率。关键经验:损失平衡策略应在训练早期(前10%步数)就启用,否则后期再调整权重容易引起震荡。
4.3.4 常见误区与总结
总结:损失平衡策略没有银弹。不确定性加权适合任务量纲差异大的场景,GradNorm适合需要精细控制训练速度的场景,动态优先级采样适合数据规模不均的场景。实际工程中建议组合使用:先用不确定性加权做粗调,再用GradNorm做细调,同时配合动态采样解决数据不平衡问题。
4.4 综合复盘与工程建议
多任务学习基础是构建多任务VLA跨具身联合训练的“操作系统”。本章的核心要点可归纳为:(1)范式选择决定模型容量与迁移上限,分层共享是当前跨具身场景的最优起点;(2)任务间迁移与干扰是动态过程,必须建立梯度相似度监控机制,在训练过程中动态调整共享结构;(3)损失平衡是训练稳定性的关键,推荐采用“不确定性加权+GradNorm”的组合策略,并配合任务采样调度。
- 训练前:计算任务间特征相似度矩阵,确定初始共享层级。
- 训练中:每500步记录一次梯度余弦相似度,绘制冲突热力图。
- 训练中:使用不确定性加权初始化,第10%步数后切换为GradNorm。
- 训练后:执行留一法消融实验,验证每个任务的真实贡献。
- 迭代:根据冲突热力图,动态调整共享层与独立层的边界。