
迁移学习(六):多任务学习
多任务学习完全指南:硬/软参数共享、梯度冲突与 PCGrad/GradNorm/CAGrad、辅助任务设计,以及完整的多任务框架实现。
一辆使用单摄像头的自动驾驶汽车,需要同时完成三件事:检测车辆与行人、分割车道线与可行驶区域,以及估计每个像素的深度。若为这三个任务分别训练独立网络,不仅参数量会增至三倍,推理时还需执行三次前向传播,更关键的是,这种做法忽略了它们共享同一套底层特征(如边缘、表面结构和遮挡线索)这一事实。
多任务学习(Multi-Task Learning, MTL)提供了一种替代方案:一个共享主干网络,每个任务配备一个专用预测头,所有任务联合训练。设计得当的话,不仅能将参数量减少约 60%,还能提升每个任务的精度——因为各任务彼此充当正则化器。但若处理不当,其中两个任务的性能可能反而下降,而你可能要花上一周时间才搞明白原因。
本文的核心正是“如何做好”。真正的难点并不在于架构本身——那不过是一张计算图而已。真正的挑战在于三点:(1) 交叉熵损失与 L2 深度损失之间可能存在几十甚至上百倍的尺度差异;(2) 在 30%–50% 的训练步骤中,不同任务的梯度方向相互冲突;(3) 如何判断哪些任务适合放在同一个模型里。我们将深入探讨多种架构(硬共享 vs 软共享、Cross-Stitch、MTAN),介绍能在真实损失曲面上稳健工作的优化策略(Uncertainty Weighting、GradNorm、PCGrad、CAGrad),并提供一个可直接运行的 PyTorch 框架,将上述方法整合在一起。
你将学到什么#
- 多任务学习为何有效——从正则化、数据增强和计算效率三个视角理解
- 硬参数共享与软参数共享的区别,以及 Cross-Stitch 和 MTAN 提供的中间路线
- 如何在正式构建多任务模型前,量化评估任务间的亲和性
- 梯度冲突的本质、发生频率,以及 PCGrad 和 CAGrad 如何解决它
- 利用不确定性加权(Kendall et al.)和 GradNorm 平衡损失尺度的具体方法
- 三种平衡策略的完整 PyTorch 实现
前置知识: 本系列前两篇文章的内容,以及使用 PyTorch 训练神经网络的基本经验。
为什么选择多任务学习?#
共享结构:依赖相同底层特征的任务#
多任务学习最清晰的应用场景,是多个任务都需要相同的低层表示:
| 任务 | 所需编码的特征内容 |
|---|---|
| 目标检测 | 空间布局、物体边界、纹理 |
| 语义分割 | 空间布局、物体边界、纹理 |
| 深度估计 | 空间布局、纹理、几何线索 |
三个任务,一套底层特征。若分别训练三个编码器,每个都得从零开始学习边缘、表面和形状先验。而共享编码器则迫使这些特征只学一次,并由三个任务的监督信号共同引导优化方向。
正则化视角#
$$\mathcal{L}_{\text{MTL}} \;=\; \sum_{t=1}^{T} w_t \cdot \mathcal{L}_t(\theta_{\text{sh}}, \theta_t).$$共享参数 $\theta_{\text{sh}}$ 必须落在所有任务“表现良好”区域的交集中。这个交集远小于任一单任务的可行区域,从而对 $\theta_{\text{sh}}$ 施加了一个隐式先验。实证表明,模型对任一任务噪声的过拟合显著减少——这正是 Caruana(1997)在其开创性论文中所展示的正则化效应。
数据增强视角#
当主任务数据稀缺时,相关的辅助任务可通过共享参数提供额外监督信号。
具体例子: 英文到斯瓦希里语的低资源机器翻译(约 10 万平行句对)。若加入英文到法语的辅助任务(约 1000 万句对),共享的英文编码器就能看到 100 倍更多的英文句子。虽然斯瓦希里语端未直接受益,但它所依赖的编码器质量大幅提升——文献中通常报告主任务 BLEU 分数提升 5%–20%。
计算效率#
| 方案 | 参数量 | 前向次数 |
|---|---|---|
| 3 个独立 ResNet-50 模型 | 75 M | 3 |
| 1 个共享编码器 + 3 个轻量级头部 | 31 M | 1 |
参数量减少约 60%,且仅需一次前向传播即可输出三项预测——如图 6 右侧所示。对于实时系统(如自动驾驶、AR、端侧部署),这往往是采用 MTL 的首要原因。
风险:负迁移#
MTL 并非免费午餐。当任务真正需要截然不同的特征时,联合训练的表现可能不如单独训练。经典反例包括:
- 人脸识别依赖面部内部精细的纹理细节;
- 场景分类则关注粗粒度的全局布局。
强制二者共享同一主干,往往导致主干在两项任务上都表现平庸。解决方案并非放弃 MTL,而是:(a) 在训练前量化任务冲突(见下节);(b) 采用软共享机制,允许任务适度分化;或 (c) 使用梯度手术方法,防止一个任务主动损害另一个。
参数共享策略#

硬参数共享#
$$ \text{features} \;=\; G_{\text{shared}}(x), \qquad \hat{y}_t \;=\; G_t^{\text{head}}(\text{features}) \quad \forall\, t. $$设计经验法则:
- 共享前 70%–80% 的层(用于提取通用特征);
- 后 20%–30% 保留为任务专属部分(每个头可设 1–3 层);
- 头部宽度要足够,以便容纳任务特定模式。
硬共享带来最强的正则化效果、最少的参数量,且几乎不会配置错误。务必从此起步。
软参数共享#
$$ \mathcal{L} \;=\; \sum_t \mathcal{L}_t(\theta_t) \;+\; \lambda \!\!\sum_{i \neq j} \! \lVert \theta_i - \theta_j \rVert^2. $$图 1 右侧的黄色虚线即表示这些耦合项。模型可在逐层基础上打破对称性——适用于任务需要相似但不完全相同特征的场景。
Cross-Stitch 网络#

每层的四个标量 $\alpha_{\bullet\bullet}$ 是可学习的。其值具有可解释性:若某层 $\alpha_{AB}$ 较大,说明任务 $A$ 在该深度严重依赖任务 $B$ 的特征——这不仅是架构技巧,更是有效的诊断工具。
多任务注意力网络(MTAN)#
$$ \text{mask}_t = \sigma(W_t \cdot F_{\text{shared}} + b_t), \qquad F_t = \text{mask}_t \odot F_{\text{shared}}. $$掩码按任务、按层独立生成,使每个任务能在不同深度“调谐”至不同通道。在视觉 MTL 中,MTAN 通常是软共享变体中表现最佳者。
如何选择#
- 硬共享:默认选项,适用于任务紧密相关(同模态、同抽象层级)的场景。
- Cross-Stitch / MTAN:当硬共享出现负迁移,但任务仍具较强共性时使用。
- 完全独立或纯软共享:任务几乎无共性时考虑——此时应先反思:MTL 是否真的适用?
动手前先量化任务亲和性#

不应仅凭直觉选择多任务组合。以下三种低成本量化测试值得优先尝试:
- 迁移实验亲和性(Taskonomy 风格):在任务 $A$ 上预训练,微调至任务 $B$ ,并与从零训练 $B$ 的基线比较。若性能提升,则亲和性强。
- 梯度余弦相似度:用小型联合模型训练一个 epoch,记录每步 $\cos(\nabla_\theta \mathcal{L}_A, \nabla_\theta \mathcal{L}_B)$ 。若持续为负,说明任务相互冲突。
- 特征相似性(CKA):比较不同任务学到的表示。高 CKA 值表明同一主干可服务两者。
图 7(左)展示了七个视觉任务的典型亲和矩阵。可见 Detect / Segment / Edges 紧密聚类(相似度均 >0.78),而 Caption 与其他任务关联较弱。右侧树状图将这些数值转化为具体分组建议:与其使用单一巨型共享编码器,不如按如下方式分组:
Standley et al.(2020)证明,此类自动分组方法(基于强化学习或层次聚类)在多个基准上稳定优于手工分组和单一全局编码器。
梯度冲突与任务平衡#


多数 MTL 项目在此处损失性能:架构无误,但优化器在无声中牺牲一个任务以成全另一个。
“冲突”的精确定义#
$$ \nabla \mathcal{L}_1 \cdot \nabla \mathcal{L}_2 \;<\; 0, $$即视为冲突。图 3(左)直观展示了其几何含义:任务 1 的梯度 $g_1$ 指向右上方,任务 2 的 $g_2$ 指向左上方,二者平均梯度 $\bar{g}$ 在 $g_1$ 方向上几乎无分量——简单求和的梯度对任务 1 几乎无效。此例中,$g_1$ 与 $g_2$ 的余弦相似度为 $-0.43$ 。
实践中冲突有多频繁?图 3(右)显示了多任务训练中 $\cos$ 值的经验分布:约 45% 的更新存在冲突,且常在多个 epoch 中持续出现。
静态权重(基线方法)#
均匀权重($w_t = 1$ ):简单,偶尔有效,但当损失尺度差异大时失效。例如,分类交叉熵($\sim 1$ )与深度 MSE($\sim 100$ )直接相加,优化器实质上只优化深度任务。
手工调权:适用于一两个任务且有充足调参时间的情况,无法扩展。
不确定性加权(Kendall et al., 2018)#

从图 5 可观察两点:
- 左图:固定任务损失 $\mathcal{L}$ 时,组合目标在 $\sigma^* = \sqrt{\mathcal{L}}$ 处取得唯一最小值。若无 $\log \sigma$ 项,优化器会令 $\sigma_t \to \infty$ 以压低加权损失——正则项确保该技巧有效。
- 右图:原始损失跨越两个数量级(
1、50、0.3)的任务,在学习到 $\sigma_t$ 后,其加权损失贡献趋于均衡(1.4、2.8、0.15)。
相比均匀权重的典型增益:2%–5%。代价仅为 $T$ 个标量参数,几乎总是值得启用。
GradNorm:按训练速度平衡梯度幅度#

不确定性加权平衡损失幅度,而 GradNorm(Chen et al., 2018)则平衡梯度幅度,并依据各任务训练进度动态调整。
$$\tilde{r}_t \;=\; \frac{\mathcal{L}_t(t)\,/\,\mathcal{L}_t(0)}{\overline{\mathcal{L}(t)\,/\,\mathcal{L}(0)}}.$$ $$ \lVert w_t \nabla \mathcal{L}_t \rVert \;\approx\; \overline{G}\cdot \tilde{r}_t^{\,\alpha}, $$其中 $\overline{G}$ 为共享参数梯度范数均值,$\alpha \!\approx\! 1.5$ 控制调整强度。
图 4 展示了 60 轮训练的模拟:
- 左:三任务损失尺度与收敛速度差异显著;
- 中:相对训练速率 $\tilde{r}_t$ 显示,慢速回归任务升至 1 以上,快速辅助任务降至 1 以下;
- 右:GradNorm 自动提升掉队任务权重,降低领先任务权重,全程无需人工干预。
文献报告增益:相比均匀权重提升 3%–8%。
PCGrad:剔除冲突分量#
$$ g_i' \;=\; g_i \;-\; \frac{g_i \cdot g_j}{\lVert g_j \rVert^2}\, g_j \qquad \text{当 } g_i \cdot g_j < 0. $$投影后 $g_i' \cdot g_j = 0$ ,冲突彻底消除。图 3(左)中绿色箭头 $g_1^{PC}$ 即为结果:保留了 $g_1$ 中不损害 $g_2$ 的部分。
伪代码:
| |
理论保证:最终梯度在一阶近似下不会增加任一任务损失。
NYUv2(分割 + 深度 + 法向)实测结果:
- 均匀权重:mIoU 40.2%,深度误差 0.61
- PCGrad:mIoU 42.7%,深度误差 0.58
CAGrad:全局最优冲突消解#
$$g^{*} \;=\; \arg\min_g \lVert g \rVert^2 \quad \text{s.t.}\quad g \cdot g_t \geq 0 \;\; \forall t.$$此即帕累托最优下降方向——全局保证不损害任一任务。每步计算复杂度为 $\mathcal{O}(T^2)$ 。当任务数 $T \leq 5$ 时,直接使用 CAGrad。
方法对比与组合性#
| 方法 | 控制维度 | 计算开销 |
|---|---|---|
| 均匀权重 | 无 | 免费 |
| 不确定性加权 | 损失幅度 | $T$ 个参数 |
| GradNorm | 梯度幅度 | $T$ 个参数 + 1 次反向 |
| PCGrad | 梯度方向 | $T$ 次反向 |
| CAGrad | 梯度方向(全局) | $T$ 次反向 + QP 求解 |
GradNorm(控幅度)与 PCGrad/CAGrad(控方向)正交互补。对于 $T \geq 3$ 且损失尺度差异大的任务,GradNorm + PCGrad 是稳妥的默认组合。
这些方法到底能带来多少收益?#

图 6 在 NYUv2 风格的三任务基准上对比各方法:
- 左:相比单任务基线,均匀 MTL 已在所有任务上胜出(正则化效应真实存在);不确定性加权再提升 1–2 点;GradNorm 与 PCGrad 各增 1–2 点;CAGrad 表现最佳。
- 右:成本/效率优势与平衡方法无关:共享编码器 + 3 头将参数量从 75M 降至 31M,前向次数从 3 减至 1。
实践启示:合理配置的 MTL 系统(搭配 PCGrad 或 CAGrad)通常能产出一个更小、更快、更准的模型,全面超越其所替代的单任务集成。这种工程与精度双赢的情况实属罕见。
辅助任务设计#
若核心目标仅为单一主任务,而 MTL 仅作为正则化手段,则关键问题变为:选择哪些辅助任务?
自监督辅助任务(免费监督信号)#
- 旋转预测:将输入旋转 0°/90°/180°/270°,预测角度。有助于学习方向与物体结构。
- 拼图任务:打乱图像块,预测正确排列。强化空间布局理解。
- 对比学习(SimCLR / MoCo):拉近同一输入的不同增强视图,推开不同输入。学习增强不变特征。
领域特定辅助任务#
| 主任务 | 有效辅助任务 |
|---|---|
| 目标检测 | 边缘检测、深度估计 |
| 命名实体识别 | 词性标注、依存句法分析 |
| 点击率预测 | 转化率、停留时长、关注概率 |
| 语音识别 | 说话人识别、语音活动检测、噪声分类 |
辅助任务数量如何定?#
- 从 1–2 个最相关的辅助任务起步;
- 仅当主任务验证性能持续提升时,才继续增加;
- 通常 2–4 个已足够;超过 10 个时,应改用任务聚类(图 7)而非简单堆叠。
完整代码实现#
一个自包含的 PyTorch 框架,支持硬参数共享,并集成三种平衡策略:uniform、PCGrad 和 GradNorm。
| |
代码架构#
| 组件 | 职责 |
|---|---|
SharedEncoder | 使用 ResNet-18 前 3 个 block 作为共享特征提取器。 |
TaskHead | 每个任务的分类或回归预测头。 |
MultiTaskNet | 实现硬参数共享:共享编码器 + ModuleDict 管理的任务头。 |
PCGrad | 在梯度平均前,投影剔除两两冲突分量。 |
GradNorm | 学习任务权重,使梯度幅度跟踪 $\tilde{r}_t^\alpha$ 。 |
MTLTrainer | 统一封装接口,支持 uniform、PCGrad 和 GradNorm 三种方法。 |
实践中的梯度冲突检测#
上一节提到的亲和矩阵是一个聚合性指标——在整个 epoch 上取平均后,两个任务可能看起来完全兼容。问题在于,这种聚合指标掩盖了逐 batch 发生的情况。任务 $A$ 和 $B$ 在整体上可能共享真实结构,但在 30–50% 的单次更新中仍会发生冲突,而正是这些逐 batch 的冲突导致了精度的实际损失。
具体来说:假设用全数据集梯度计算出的 $\cos(g_A, g_B)$ 为 $+0.20$ 。实践者可能会解读为“弱对齐,多任务学习(MTL)没问题”。但逐 batch 的分布可能是双峰的——一半 batch 在 $+0.6$ ,另一半在 $-0.3$ ——此时平均值只是两群相反信号的抵消结果,而非一致共识。优化器感知的是每个 batch,而不是平均值。
因此,我们需要一个在训练过程中运行的诊断工具,展示完整的分布情况。
需要记录的内容#
$$\cos(g_i, g_j) \;=\; \frac{g_i \cdot g_j}{\lVert g_i \rVert \, \lVert g_j \rVert}.$$在约 500 个 batch 上绘制该值的直方图。以下三种模式值得关注:
- 集中在 $+1$ 附近,分布狭窄 —— 任务几乎相同;均匀加权最优,梯度手术(gradient surgery)纯属浪费算力。
- 分布在 $0$ 到 $+0.5$ 之间,左侧有小幅拖尾 —— 典型的“松散相关”MTL;均匀加权即可,Uncertainty Weighting 能处理残余问题。
- 双峰或左偏,且负值占比超过 20% —— 必须使用梯度手术(如 PCGrad / CAGrad);否则某个任务正被悄悄破坏。
实现#
| |
几点说明:此代码不会调用 optimizer.step——它仅用于诊断,后续由调用方决定采用何种组合策略。此外,它不会在任务间清零梯度,因为 torch.autograd.grad 返回梯度而不写入 .grad 缓冲区。这是正确做法:我们希望获得孤立的 $g_i$
,而非被 $g_{i-1}$
残留污染的结果。
受控实验#
$$W_2 \;=\; \alpha \cdot W_1 \;+\; \beta \cdot W_\perp, \qquad W_\perp \perp W_1, \quad \alpha^2 + \beta^2 = 1.$$当 $\alpha$ 从 $0$ (正交目标)扫到 $1$ (相同目标)时,逐 batch 的余弦分布会从严重冲突平稳过渡到完全对齐。在小型 MLP($d=64, k=8$ )上运行 100 步,得到如下直方图:
| $\alpha$ | 平均 $\cos$ | 负值占比 | 分布形态 |
|---|---|---|---|
| $0.0$ | $-0.01$ | $48\%$ | 关于 $0$ 对称 |
| $0.3$ | $+0.18$ | $32\%$ | 宽泛,左侧拖尾 |
| $0.7$ | $+0.61$ | $7\%$ | 狭窄,右偏 |
| $1.0$ | $+0.98$ | $0\%$ | 在 $+1$ 处尖峰 |
$\alpha = 0$ 的情形正是该诊断工具旨在捕捉的最坏情况——若仅看平均余弦(接近零),会被误判为“中性”,但实际上 48% 的 batch 在相互对抗。而 $\alpha = 0.7$ 时,均匀加权确实足够。
决策规则#
一旦获得直方图,权重方法的选择就变得机械而非玄学:
- 负余弦占比 > 20% 且分布宽泛 → 使用 PCGrad 或 CAGrad。冲突是结构性的,而非尺度不匹配。
- 负值 < 5% 但平均余弦小(< 0.1) → 任务近乎正交但非对抗。均匀加权有效;需评估 MTL 是否带来超越参数共享的收益。
- 平均余弦高但损失量级相差 > 10 倍 → 问题是尺度而非方向。优先尝试 Uncertainty Weighting 或 GradNorm,而非梯度手术。
- 同时存在负余弦和损失尺度不匹配 → 两种方法可组合:先用 GradNorm 调整幅度,再用 PCGrad 处理方向。
该诊断工具在每次记录步骤中需为每个任务额外执行一次反向传播。建议在训练初期运行几百个 batch,保存直方图后关闭——后续训练无需持续启用。有了这一诊断,下一步便是:当冲突存在时,究竟应采用何种组合梯度?PCGrad 解决成对冲突;CAGrad 全局求解,是 $T \leq 5$ 任务时的默认首选。
CAGrad:帕累托最优的多任务下降#
PCGrad 成对地解决冲突——任务 $i$ 先投影避开任务 $j$ ,再独立避开任务 $k$ ——其结果依赖于顺序。CAGrad(Liu et al., 2021)通过寻找一个对所有任务同时无害的单一更新方向,规避了顺序依赖问题。
$$g^{*} \;=\; \arg\min_g \;\lVert g - g_0 \rVert \quad \text{s.t.} \quad g \cdot g_i \;\ge\; c \cdot \lVert g_0 \rVert \cdot \lVert g_i \rVert \quad \forall\, i,$$其中 $c \in [0, 1]$ 是唯一超参数。当 $c = 0$ 时约束无效,$g^* = g_0$ (即均匀平均);当 $c = 1$ 时要求与所有任务完全对齐,通常不可行。最佳区间为 $c \in [0.4, 0.6]$ 。
对偶问题求解#
$$g^{*} \;=\; g_0 \;+\; \frac{\sum_i \lambda_i^{*} g_i}{\sum_i \lambda_i^{*}} \cdot \phi(\lambda^*, c),$$其中 $\phi$ 是一个标量,用于缩放修正项,使活跃约束集上的条件恰好满足。
实现#
| |
该函数返回一个扁平张量;调用方将其还原到 parameter.grad 中,并照常调用 optimizer.step()。由于对偶变量位于单纯形上,只需 clamp 后归一化即可完成投影——无需完整 QP 求解器。
效果对比#
在 4 任务 NLP 多任务基准(NER + POS + chunking + SRL,共享 Transformer 编码器)上,典型结果如下:
| 方法 | 平均 F1 | 相对均匀加权的耗时 |
|---|---|---|
| Uniform | 82.3 | $1.00\times$ |
| PCGrad | 83.4 | $1.05\times$ |
| CAGrad | 84.1 | $1.08\times$ |
CAGrad 比 Uniform 提升 $+1.8$ F1,比 PCGrad 提升 $+0.7$ ,仅增加 8% 耗时——其中绝大部分来自 $T$ 次独立反向传播,而非对偶求解本身。当 $T = 2$ 时,CAGrad 相比 PCGrad 的优势缩小至约 $+0.2$ ,此时 PCGrad 更简单的实现往往更优。但当 $T \ge 3$ 且前文诊断显示存在冲突时,CAGrad 是更合适的默认选择。
梯度手术是处理任务信号不匹配的一种方式;另一种是根据训练进度动态调整任务权重,两者可无缝组合。下一节将探讨这一互补视角。
常见问题#
何时应考虑 MTL?#
三个合理理由:(1) 任务共享底层特征,需正则化提升泛化;(2) 主任务数据稀缺,辅助任务可通过共享编码器提供监督;(3) 推理时需低成本输出多项预测。若均不满足,MTL 并非合适工具。
如何诊断任务冲突?#
两种低成本方法:(a) 记录共享参数上 $\cos(\nabla \mathcal{L}_A, \nabla \mathcal{L}_B)$ ——持续为负表明冲突(图 3 右);(b) 比较多任务模型与单任务基线的各任务精度,若任一任务下降,则存在负迁移。
硬共享还是软共享?#
从硬共享开始——它更简单、正则化更强、参数更少。仅当应用 PCGrad 和 GradNorm 后仍观察到负迁移时,才转向 Cross-Stitch 或 MTAN。
损失尺度相差 100 倍怎么办?#
切勿手动调权——难以收敛。优先使用不确定性加权(图 5),这是最低成本方案;若还需处理训练速度差异,再切换至 GradNorm。
PCGrad 与 GradNorm 能否组合?#
可以——二者正交。GradNorm 控幅度,PCGrad 控方向。标准流程为:(1) 用 GradNorm 计算 $w_t$ ;(2) 构造加权梯度 $w_t g_t$ ;(3) 对其应用 PCGrad。对于 3+ 任务且尺度差异大的场景,这是合理默认。
辅助任务应加多少?#
起步 1–2 个,未分析亲和矩阵前勿超 4 个。任务数超 10 时,按图 7 聚类,每组配独立共享编码器。
总结#
多任务学习能训练出一个模型,同时胜任多项任务,且通常比单任务模型更小、更快、更准。架构设计反而是简单部分——硬共享加任务专属头的方案极少被超越。真正的挑战在于维持训练稳定性:
- 损失尺度平衡:只要任务输出类型或量级不同,不确定性加权或 GradNorm 几乎必不可少;
- 梯度冲突:影响 30%–50% 的更新步骤,PCGrad(轻量)或 CAGrad(更优)可防止其悄然拖累个别任务;
- 任务选择:比任何优化技巧都重要——动手前务必通过梯度余弦或迁移实验量化任务亲和性;
- 优先硬共享:仅当测量明确显示需要时,才考虑软共享或 Cross-Stitch。
本系列下一篇将探讨零样本学习——让模型分类训练中从未见过的类别,借助属性或语言描述弥合鸿沟。
参考文献#
- Caruana, R. (1997). Multitask Learning. Machine Learning.
- Misra et al. (2016). Cross-Stitch Networks for Multi-task Learning. CVPR. arXiv:1604.03539
- Kendall et al. (2018). Multi-Task Learning Using Uncertainty to Weigh Losses. CVPR. arXiv:1705.07115
- Chen et al. (2018). GradNorm: Gradient Normalization for Adaptive Loss Balancing. ICML. arXiv:1711.02257
- Liu et al. (2019). End-to-End Multi-Task Learning with Attention (MTAN). CVPR. arXiv:1803.10704
- Standley et al. (2020). Which Tasks Should Be Learned Together in Multi-task Learning? ICML. arXiv:1905.07553
- Yu et al. (2020). Gradient Surgery for Multi-Task Learning (PCGrad). NeurIPS. arXiv:2001.06782
- Liu et al. (2021). Conflict-Averse Gradient Descent (CAGrad). NeurIPS. arXiv:2110.14048