Skip to content

Latest commit

 

History

History
101 lines (51 loc) · 8.74 KB

the-multi-task-optimization-controversy-793cbb431d98.md

File metadata and controls

101 lines (51 loc) · 8.74 KB

多任务优化争议

原文:towardsdatascience.com/the-multi-task-optimization-controversy-793cbb431d98

我们是否需要特殊的算法来同时训练多个任务的模型?

Samuel FlenderTowards Data Science Samuel Flender

·发表于Towards Data Science ·阅读时间 6 分钟·2023 年 9 月 29 日

--

Javier Allegue BarrosUnsplash拍摄的照片

多任务学习范式 —— 即同时训练多个任务的能力 —— 既是一种祝福,也是一种诅咒。

这是一个祝福,因为它使我们能够构建一个单一的模型,而之前我们需要多个模型。这使得生活更简单:减少需要维护、重新训练、调整和监控的模型数量。

这是一个诅咒,因为它开启了一个全新的潘多拉盒子:哪些任务应该一起学习?我们真正需要哪些任务?如果任务之间存在竞争会发生什么?我们如何让模型优先考虑某些任务而不是其他任务?我们如何避免“任务腐蚀”,即任务头的积累最终导致模型性能的下降?

正是这些问题催生了一个新的机器学习子领域,即多任务优化,也就是如何在多个有时相互竞争的任务上优化模型的科学。

标量化

标量化是数学对多任务优化问题的回答。在多任务模型中,我们试图学习 K 个任务,例如在电子商务推荐系统中预测“点击”、“添加到购物车”和“购买”。(实际上,现代推荐系统可能包括十多个任务!)在这样的设置中,我们可以定义解决方案为最小化

…也就是说,任务特定损失的加权和,其中权重大于 0 且总和为 1。

将多任务学习问题重新表述为单一优化问题的技巧被称为 标量化,它借鉴了更广泛的数学优化学科,该学科在诸如 Boyd & Vandenberghe 等教科书中有详细介绍。

在这种问题中的一个重要定义是 帕累托最优性:如果一个解 θ 对所有任务都实现了最低损失,则称之为帕累托最优,即不存在一个 θ 对任何任务具有更低的损失。通常,没有一个单一的解 θ 是帕累托最优的,而是多个解形成了损失空间中的高维曲线——即 帕累托前沿

(具有 2 个任务的多任务问题中的帕累托前沿。图片来源:Xin et al 2022

最后,这是在数学优化背景下可以推导出的最重要的结果之一:

从数学上讲,可以证明无论我们选择哪种权重组合,我们总会得到一个恰好位于帕累托前沿的解 θ。在实际应用中,我们需要做的就是遍历可能的权重组合,并选择与业务目标最为一致的那个。

可学习的损失权重

多任务优化的故事本可以通过标量化及其对帕累托最优性的保证来结束。然而,正如机器学习中的常见情况,实践者最终开发出一些在经验上效果出乎意料好的技巧。

其中一个技巧是“可学习的损失权重”(LLW),这是由剑桥大学的研究人员在 2018 年的一篇论文中提出的(Kendall et al 2018),主要应用于计算机视觉领域。其关键思想是自动分配与该数据点预测的模型不确定性成反比的任务特定损失权重。直观上,如果模型错误但不确定,我们应该分配较小的损失,而不是模型错误且确定时的损失。

从数学上讲,这意味着我们最小化

其中 L_i 是任务 i 的损失,σ_i 是任务 i 预测中的不确定性。损失中的最后一项,简单地加上不确定性自身的对数,促使模型做出高确定性的预测,而不是仅仅以小的确定度预测每一种可能的结果。对于多于 2 个任务的情况,我们只需在此方程中添加更多项,每项对应一个任务的损失。

实际上,我们可以通过将预测结果与实际情况进行比较,并拟合一个均值为预测结果自身、标准差为模型不确定性的高斯分布 N 来估计不确定性 σ:

在剑桥论文中,作者将可学习的损失权重应用于一个多任务图像分割问题,其中单个任务包括语义分割、实例分割和深度预测。与均匀权重(1/3, 1/3, 1/3)相比,使用可学习的损失权重(结果为 0.89, 0.01, 0.1)后,得到的分割结果的 IoU 提高了 13%,证明了这种方法的有效性。

梯度操控

(梯度“手术”。图片来源:Yu et al 2020

多任务学习中的一个问题是来自不同任务的不同梯度可能相互冲突,导致模型同时被拉向多个不同方向。在标量化中,我们通过根据认为最重要的任务来简单地调整损失权重(直接影响梯度的尺度)来解决这个问题。在 LLW 中,我们尝试从数据中学习这些权重,而不是手动调整。但为什么不直接操控梯度,而不是损失呢?

直接梯度操控的这个想法催生了一些研究论文,这些论文声称通过以各种方式缩放或重新对齐梯度来改进多任务学习:

  • Gradient Surgery中,我们简单地将一个冲突的梯度投影到“锚点”梯度的法向平面上(即,我们试图预测的最重要任务的梯度),

  • GradNorm中,我们将所有梯度的尺度标准化为该训练迭代中的平均梯度尺度(对所有任务进行平均),

  • GradSimilarity中,我们仅考虑与锚点梯度有正余弦值的其他任务 i 的梯度,

  • MetaBalance中,我们将所有梯度的尺度标准化为与锚点梯度的尺度相同(类似于MTAdam),还有更多。

每一篇论文声称比其后继论文更好地解决了多任务学习问题,并且在 2023 年撰写本文时,关于梯度操控的更多论文仍在不断发布。梯度操控是一个迅速增长的研究领域!

争议

所有这些都导致了一个奇怪的结论。从数学上可以证明,我们在多任务问题中需要做的就是应用标量化并在损失权重上进行遍历,以找到最符合业务目标的点——这是(可以证明的!)帕累托最优的。《可学习的损失权重》的作者声称,学习损失权重比手动调整它们更好。这没问题,但他们可能通过精细的参数遍历也会发现相同的结果。

有争议的是,研究者在直接梯度操作算法上的主张,即改变损失权重是不够的:我们需要直接调整梯度以解决训练过程中的冲突。这一主张与标量化理论相矛盾!

梯度操作算法不如标量化(蓝色曲线)。图片来源:Xin et al 2022

那么,谁对呢?在他们的论文《当前深度学习中的多任务优化方法真的有帮助吗?》中,Derrick Xin 等人比较了标量化(结合损失权重的参数扫描)与一些现代梯度操作算法,包括梯度手术和 GradNorm 的预测性能。结果是?它们都不如标量化!

作者解释道:

“研究人员可以通过简单地调整竞争基线,毫无察觉地创造出显著的性能提升错觉。”

这种“错觉”突显了现代机器学习研究中的一个问题:也许发表机器学习研究论文太容易了。也许仅仅通过稍微调整算法并减少基线的调整,就可以轻松证明一种新算法在固定数据集上的有效性。

也许,那么,推进机器学习研究的最佳方法之一是开发更好的理论。