一、什么是多任务学习?
定义:多任务学习(Multi-Task Learning, MTL)是指在一个模型中同时学习多个相关任务,通过共享表示(representation)或参数,联合优化任务的损失函数,从而提升每个任务的性能、泛化能力和计算效率。
形式化表达:
假设有 TTT 个任务,每个任务 ttt 对应数据集 Dt={
(xit,yit)}i=1Nt\mathcal{D}_t = \{(\mathbf{x}_i^t, \mathbf{y}_i^t)\}_{i=1}^{N_t}Dt={
(xit,yit)}i=1Nt,其中 xit\mathbf{x}_i^txit 是输入,yit\mathbf{y}_i^tyit 是标签。MTL 的优化目标是:
minθ,{
θt}t=1T∑t=1TwtLt(θ,θt,Dt)\min_{\theta, \{\theta_t\}_{t=1}^T} \sum_{t=1}^T w_t \mathcal{L}_t(\theta, \theta_t, \mathcal{D}_t)minθ,{
θt}t=1T∑t=1TwtLt(θ,θt,Dt)
- θ\thetaθ:共享参数(如共享的特征提取器)。
- θt\theta_tθt:任务 ttt 特定参数(如任务特定的分类头)。
- Lt\mathcal{L}_tLt:任务 ttt 的损失函数(如交叉熵、均方误差)。
- wtw_twt:任务 ttt 的权重,用于平衡任务重要性。
核心假设:
- 任务之间存在相关性,共享表示可以捕捉共同模式。
- 共享表示能减少过拟合,提升对小数据集任务的泛化能力。
应用场景:
- 计算机视觉:目标检测、语义分割、深度估计。
- 自然语言处理:词性标注、命名实体识别、情感分析。
- 自动驾驶:车道线检测、目标跟踪。
- 医疗:疾病诊断、影像分割。
二、多任务学习的原理
多任务学习的原理基于任务相关性、共享表示和联合优化的思想。以下是对这些核心概念的深入讲解,结合数学推导和直观解释。
2.1 共享表示(Shared Representation)
MTL 的核心是通过共享模型的某些部分(如卷积层、Transformer 编码器)来学习通用的特征表示。这种共享表示可以:
- 减少参数量:共享层减少模型规模,降低内存和计算需求。
- 提升泛化能力:共享表示从多个任务中学习,捕捉更鲁棒的特征。
- 促进知识迁移:数据丰富任务的知识可以迁移到数据稀缺任务。
数学推导:
假设模型由共享特征提取器 f(x;θ)f(\mathbf{x}; \theta)f(x;θ) 和任务特定头 gt(f(x;θ);θt)g_t(f(\mathbf{x}; \theta); \theta_t)gt(f(x;θ);θt) 组成。对于输入 x\mathbf{x}x,任务 ttt 的预测为:
y^t=gt(f(x;θ);θt)\hat{\mathbf{y}}_t = g_t(f(\mathbf{x}; \theta); \theta_t)y^t=gt(f(x;θ);θt)
共享特征 f(x;θ)f(\mathbf{x}; \theta)f(x;θ) 是所有任务的公共表示,任务特定头 gtg_tgt 将共享特征映射到任务 ttt 的输出空间。优化目标是联合最小化所有任务的损失:
Ltotal=∑t=1TwtLt(y^t,yt)\mathcal{L}_{\text{total}} = \sum_{t=1}^T w_t \mathcal{L}_t(\hat{\mathbf{y}}_t, \mathbf{y}_t)Ltotal=∑t=1TwtLt(y^t,yt)
共享表示 f(x;θ)f(\mathbf{x}; \theta)f(x;θ) 通过反向传播同时接受所有任务的梯度:
∇θLtotal=∑t=1Twt∇θLt\nabla_\theta \mathcal{L}_{\text{total}} = \sum_{t=1}^T w_t \nabla_\theta \mathcal{L}_t∇θLtotal=∑t=1

最低0.47元/天 解锁文章
1101

被折叠的 条评论
为什么被折叠?



