4. 多任务学习核心概念
在端到端驾驶系统中,多任务学习(Multi-Task Learning, MTL)是让一个网络同时完成车道线检测、目标检测、可行驶区域分割、深度估计、轨迹预测等任务的核心范式。理解硬参数共享、软参数共享、任务相关性、负迁移这几个概念,是设计联合优化方案的前提。本节从参数共享机制出发,结合驾驶场景说明其优势与挑战。
4.1 硬参数共享:共享主干,独立任务头
硬参数共享(Hard Parameter Sharing)是最常见的 MTL 结构:所有任务共享同一个特征提取主干(Backbone),仅在末端保留各自的任务头(Task Head)。其核心假设是——底层特征(边缘、纹理、语义)对多个任务通用,高层特征才需要任务专属表达。
在驾驶场景中,典型实现是共享一个 ResNet 或 ViT 主干,然后分出检测头、分割头、深度头。这种结构参数量小、推理延迟低,且共享层被多任务梯度共同约束,能起到正则化作用,降低过拟合风险。但它的风险也很明显:如果任务之间梯度方向冲突,共享主干会被“拉扯”,导致某些任务性能下降,这就是负迁移的温床。
4.2 软参数共享:约束而非强制共享
软参数共享(Soft Parameter Sharing)不强制多个任务使用同一组参数,而是让每个任务拥有独立网络或独立参数,再通过正则项约束这些参数彼此接近。常见做法包括参数距离约束、跨任务注意力、门控机制(如 Cross-Stitch、MMoE、PLE)。
软共享的优点是灵活:任务可以保留自己的表达空间,同时通过约束实现知识迁移。代价是参数量和计算量通常更大,且需要额外设计约束强度。在驾驶多任务中,MMoE 和 PLE 被广泛用于平衡“共享”与“专属”,尤其适合任务相关性差异较大的场景,例如同时做语义分割和运动预测。
4.3 任务相关性:决定共享收益的关键
任务相关性(Task Relatedness)衡量两个任务在特征、标签或梯度层面的关联程度。相关性高,共享收益大;相关性低甚至冲突,共享可能有害。判断相关性可以从三个层面入手:
- 特征层面:任务是否依赖相似的底层视觉线索,如边缘、纹理、光照。
- 标签层面:任务标注是否来自同一场景、同一坐标系、同一时间戳。
- 梯度层面:任务梯度方向是否一致,可用梯度余弦相似度衡量。
在驾驶场景中,车道线检测与可行驶区域分割高度相关,目标检测与深度估计中度相关,而语义分割与轨迹预测的相关性则较弱。任务相关性不是静态的,会随数据分布、训练阶段和场景复杂度变化。
4.4 负迁移:共享带来的性能倒退
负迁移(Negative Transfer)指引入多任务学习后,某任务性能反而低于单独训练。其成因主要有三类:任务梯度冲突、任务难度差异过大、任务标签噪声不一致。例如,深度估计的尺度模糊与检测的类别判别可能产生梯度对抗;简单任务被困难任务拖累,或困难任务被简单任务主导。
缓解负迁移的常用手段包括:动态任务权重(如 Uncertainty Weighting)、梯度手术(PCGrad)、任务分组共享、以及将冲突任务拆分到不同分支。工程上建议先做单任务基线,再逐步加入共享,观察每个任务的边际收益。
4.5 驾驶场景中的优势与挑战
多任务学习在驾驶场景的优势十分直接:一次前向推理同时输出感知、预测、规划所需的多类结果,降低车载算力压力;共享特征让任务之间互相提供上下文,例如检测结果帮助分割,分割结果帮助深度估计;多任务正则化还能提升泛化能力,尤其在长尾场景中。
挑战同样突出:任务数量增加导致损失平衡困难;不同任务的标注频率和精度不一致;实时性要求下,共享主干可能成为瓶颈;安全关键任务(如碰撞预警)对负迁移的容忍度极低。因此,端到端驾驶中的 MTL 设计必须把“任务相关性评估”和“负迁移监控”作为常规工程环节。
| 维度 | 硬参数共享 | 软参数共享 |
|---|---|---|
| 参数效率 | 高,共享主干 | 较低,各任务保留参数 |
| 任务干扰 | 风险高,梯度易冲突 | 风险低,约束可调 |
| 实现复杂度 | 低 | 中高,需设计约束 |
| 适用场景 | 任务相关性高、算力受限 | 任务差异大、需灵活平衡 |
| 驾驶示例 | 检测+分割共享主干 | MMoE/PLE 多任务平衡 |
4.6 配置示例:任务权重与共享策略
下面是一个多任务训练的简化配置片段,展示任务权重、共享方式和负迁移监控参数。实际工程中应结合验证集指标动态调整。
mtl_config:
backbone: "resnet50"
sharing: "hard" # hard | soft
tasks:
- name: "detection"
head: "det_head"
loss: "focal"
weight: 1.0
- name: "segmentation"
head: "seg_head"
loss: "ce_dice"
weight: 0.8
- name: "depth"
head: "depth_head"
loss: "silog"
weight: 0.5
negative_transfer_monitor:
enabled: true
metric: "val_task_delta"
threshold: -0.02 # 任务指标下降超过2%触发告警
gradient_conflict:
method: "pcgrad" # none | pcgrad | gradnorm
clip_norm: 5.0
4.7 复盘:常见误区与检查清单
误区一:认为多任务一定优于单任务。实际上,任务相关性低时,多任务可能拖累所有任务。误区二:只关注总损失下降,忽略单任务指标。总损失下降可能由某个简单任务主导,掩盖了困难任务的退化。误区三:共享粒度一刀切。不同任务对共享层的需求不同,应逐层评估。
- 是否为每个任务建立了单任务基线?
- 是否量化了任务间的梯度余弦相似度?
- 是否监控了每个任务的验证指标而非仅总损失?
- 是否在共享层与任务头之间保留了足够的专属容量?
- 是否对安全关键任务设置了负迁移告警阈值?
掌握硬/软参数共享的取舍、任务相关性的判断方法以及负迁移的识别与缓解,才能在端到端驾驶的多任务联合优化中做出稳健的架构决策。