真实面经题目 · 原创解析

视觉感知多任务网络(如检测、分割、车道线、关键点等)如何处理任务间和类别间数据不平衡,并说明网络结构、数据加载、损失权重和评估策略?

这道题考察感知多任务网络在任务间和类别间不平衡时的系统治理。回答要覆盖共享骨干、多任务头、采样、损失权重、梯度冲突和分任务评估。

出现于:旷视 · 算法

60 秒回答模板

感知多任务网络常同时做检测、分割、车道线、深度、关键点或属性识别,不平衡主要有两类:任务间不平衡,比如检测样本多、分割标注少,不同任务 loss 数值尺度和收敛速度不同;类别间不平衡,比如长尾类别、稀有场景、极端天气或小目标样本少。解决时不能只调一个 loss weight,而要从数据加载、网络结构、损失函数和评估策略一起设计。 结构上通常用共享 backbone 加任务专属 head,必要时用 task-specific adapter、feature gate 或分层共享,避免弱相关任务互相干扰。数据侧用任务均衡 batch、类别重采样、稀有场景增强、hard example mining 和伪标签补充。损失侧可以做手动权重、uncertainty weighting、GradNorm、动态权重平均、focal/class-balanced loss,或 PCGrad 等方法缓解梯度冲突。评估时不能只看一个总分,要看每个任务的核心指标、长尾类别、场景分层和多任务联合指标,同时监控某任务提升是否牺牲关键安全任务。

考点 先区分任务间不平衡和类别间不平衡
难度 真实面经题
回答目标 让候选人能把多任务感知的不平衡问题拆成数据、结构、优化和评估四个层面,并说明每个层面的工程取舍。

深入解析

01

不平衡类型

任务间不平衡来自标注量、loss 尺度、学习难度和业务优先级不同;类别间不平衡来自长尾类别、稀有场景、小目标和特殊天气等数据稀缺。

02

网络结构

共享 backbone 提高效率和泛化,任务 head 保留专门能力。任务差异大时可引入 adapter、门控、分层共享或任务特定 normalization,减少负迁移。

03

数据加载

batch 采样要保证关键任务和长尾类别有足够曝光。可以按任务混合采样、类别重采样、场景均衡、copy-paste、合成数据和伪标签补齐稀缺样本。

04

损失权重

固定权重简单但需要大量调参;动态权重可按不确定性、梯度范数或收敛速度调整。类别不平衡可用 focal loss、class-balanced loss 或 logit adjustment。

05

梯度冲突

多任务共享层可能出现一个任务的梯度伤害另一个任务。可以监控梯度方向,使用 PCGrad、GradNorm、分阶段训练或解耦部分层缓解冲突。

06

评估策略

分别看检测 mAP、分割 mIoU、关键点误差、长尾召回等,并按场景、类别、尺寸和天气分层。多任务总分要体现业务安全权重,而不是简单平均。

易错点

  • 只说加权 loss,没有分析数据和任务结构。
  • 把所有任务指标简单相加,忽略尺度和业务优先级。
  • 只看平均类别指标,不看长尾类别召回。
  • 没有识别梯度冲突和负迁移。
  • 让任务共享所有层,忽略任务差异。
  • 评估只给总分,无法发现某个关键任务退化。

面试官追问

某个任务 loss 很大,是否应该直接降低权重?

不一定。loss 大可能是尺度不同、任务更难、标注噪声或模型没学到。应先归一化尺度、看梯度大小和验证指标,再决定权重,而不是凭 loss 数值压低任务。

多任务一定比单任务好吗?

不一定。相关任务共享能互相促进,不相关或标注质量差的任务可能负迁移。要用单任务模型和多任务模型对比,并看每个任务是否退化。

如何处理长尾类别?

可以重采样、class-balanced loss、focal loss、难例挖掘、数据合成、伪标签和分层阈值。还要确保评估指标单独报告长尾召回。

业务安全任务被其他任务拖累怎么办?

提高安全任务权重、解耦部分特征层、增加专属 head 或单独模型兜底,并在总分中设置安全任务护栏,不能为了平均指标牺牲关键任务。