深度学习中的多任务学习 (MTL) 训练单个神经网络同时执行多个相关任务。 MTL 不是为每个任务训练单独的模型,而是在训练期间跨任务共享表示。 这种方法利用数据中共享的特征和模式,可以提高泛化能力并减少过度拟合。 例如,经过训练以识别图像中的对象的模型可以同时预测对象标签和分割对象边界。 通过在网络早期共享层并在稍后分支到特定于任务的层中,该模型学习了一个通用的特征表示,该表示有利于所有任务。
MTL 的一个实际例子是在自然语言处理 (NLP) 中。 可以训练单个模型同时执行命名实体识别(识别文本中的名称)和词性标注(标记名词、动词等)。 共享层学习一般的语言模式,例如语法和文法,而特定于任务的层则专注于它们的各个目标。 另一个例子是在自动驾驶汽车系统中,其中模型可能同时预测车道边界、检测行人并估计距离。 这些任务共享低级视觉特征(边缘、纹理),但需要不同的高级输出。 MTL 中的损失函数通常结合了来自所有任务的损失,通常会加权以平衡它们在训练期间的影响。
MTL 的好处包括提高数据效率(特别是对于数据有限的任务)以及与训练单独模型相比减少了计算开销。 然而,在平衡任务优先级方面会出现挑战。 例如,如果一项任务的损失超过其他任务的损失,则该模型可能在不太重要的任务上表现不佳。 动态损失加权(例如,基于不确定性的加权)或梯度归一化等技术可以缓解这种情况。 此外,如果任务不相关,则可能发生任务冲突——即学习一项任务会损害另一项任务。 精心的架构设计(例如,如何共享层)和任务选择至关重要。 当有效应用时,MTL 可以生成紧凑、通用的模型,从而有效地处理复杂的现实场景。