《Gradient Surgery for Multi-Task Learning》翻译

发布于 2023-06-23  492 次阅读


摘要

虽然深度学习和深度强化学习 (RL) 系统在图像分类、游戏和机器人控制等领域取得了令人印象深刻的成果,但数据效率仍然是一个重大挑战。多任务学习已成为跨多个任务共享结构以实现更高效学习的有前途的方法。然而,多任务设置带来了许多优化挑战,与独立学习任务相比,很难实现巨大的效率提升。与单任务学习相比,多任务学习如此具有挑战性的原因尚不完全清楚。在这项工作中,我们确定了多任务优化环境中导致有害梯度干扰的一组三个条件,并开发了一种简单而通用的方法来避免任务梯度之间的这种干扰。我们提出了一种梯度手术的形式,将任务的梯度投影到具有冲突梯度的任何其他任务的梯度的法线平面上。在一系列具有挑战性的多任务监督和多任务强化学习问题上,这种方法可以显着提高效率和性能。此外,它与模型无关,可以与先前提出的多任务架构相结合以增强性能。

引言

虽然深度学习和深度强化学习 (RL) 在使系统学习复杂任务方面显示出巨大的前景,但当前方法的数据要求使得学习广泛的功能变得困难,特别是当所有任务都是从头开始单独学习时。解决此类多任务学习问题的一种自然方法是联合训练所有任务的网络,目的是发现跨任务的共享结构,从而比单独解决任务实现更高的效率和性能。然而,同时学习多个任务的结果是一个困难的优化问题,与单独学习任务相比,有时会导致整体性能和数据效率更差。这些优化挑战非常普遍,以至于多种多任务强化学习算法在将独立模型提炼成多任务模型之前考虑使用独立训练作为算法的子程序 ,产生多任务模型-任务模型,但失去了独立训练所带来的效率提升。如果我们能够有效地解决多任务学习的优化挑战,我们也许能够真正实现多任务学习的假设好处,而无需以最终性能为代价。

尽管在多任务学习方面已有大量研究,但优化挑战尚不清楚。先前的工作将不同任务的不同学习速度 和优化环境中的高原 [52] 描述为潜在原因,而一系列其他工作则侧重于模型架构 。在这项工作中,我们假设多任务学习中的主要优化问题之一源于不同任务的梯度相互冲突,这种冲突不利于取得进展。如果两个梯度彼此远离,即具有负余弦相似度,我们将它们定义为冲突的。我们假设,当a)冲突的梯度与b)高正曲率和c)梯度大小的巨大差异一致时,这种冲突是有害的。

image-20230623191840823

作为说明性示例,请考虑图 1a-c 中两个任务目标的 2D 优化场景。每个任务的优化景观都由一个深谷组成,这是在神经网络优化景观中观察到的一种特性[22],每个山谷的底部具有高正曲率和任务梯度大小差异大的特点。在这种情况下,多任务梯度由一个任务梯度主导,这是以降低另一任务的性能为代价的。此外,由于高曲率,主导任务的改进可能被高估,而非主导任务的性能下降可能被低估。因此,优化器很难在优化目标上取得进展。在图 1d)中,优化器到达任务 1 的深谷,但无法在存在梯度冲突、高曲率和梯度大小差异较大的参数设置中穿越深谷(参见图 1d 中绘制的梯度) )。在5.3节中,我们通过实验发现这种悲惨三合会也发生在高维神经网络多任务学习问题中。

这项工作的核心贡献是一种通过直接改变梯度来减轻梯度干扰的方法,即通过执行“梯度手术”。如果两个梯度发生冲突,我们可以通过将每个梯度投影到另一个梯度的法线平面上来改变梯度,从而防止梯度的干扰分量应用于网络。我们将这种特殊形式的梯度手术称为投影冲突梯度(PCGrad)。 PCGrad 与模型无关,只需要对梯度应用进行一次修改。因此,它很容易应用于一系列问题设置,包括多任务监督学习和多任务强化学习,并且还可以很容易地与其他多任务学习方法相结合,例如那些修改架构的方法。我们从理论上证明了 PCGrad 在标准多任务梯度下降的基础上进行改进的局部条件,并且我们在各种具有挑战性的问题上对 PCGrad 进行了实证评估,包括多任务 CIFAR 分类、多目标场景理解、具有挑战性的多任务 RL 领域以及目标条件强化学习。总的来说,我们发现与之前的方法相比,PCGrad 在数据效率、优化速度和最终性能方面带来了显着的改进,包括在多任务强化学习问题上的绝对改进超过 30 %。此外,在多任务监督学习任务上,PCGrad 可以成功地与先前最先进的多任务学习方法相结合,以获得更好的性能。

使用 PCGrad 进行多任务学习

虽然原则上可以通过简单地应用标准单任务算法以及为模型提供合适的任务标识符或简单的多头或多输出模型来解决多任务问题,但许多先前的工作发现这个学习问题很困难。在本节中,我们介绍符号,确定多任务优化困难的可能原因,提出一种简单而通用的方法来缓解它,并对所提出的方法进行理论上分析。

预备知识:问题和符号

多任务学习的目标是找到模型 的参数 ,这些参数在从任务分布 中提取的所有训练任务中实现较高的平均性能。更正式地说,我们的目标是解决这个问题: ,其中我们想要最小化的 是第 个任务 的损失函数。对于一组任务 ,对于一个特定的,我们将多任务损失表示为 ,每个任务的梯度为 。 (为了简洁起见,我们在符号中放弃了对 的依赖。)为了从任务分布 中获得解决特定任务的模型,我们定义了一个任务条件模型 ,输入 ,输出 ,并为任务 编码 ,可以作为 one-hot 向量或任何其他形式提供。

悲剧三重奏:冲突梯度、主导梯度、高曲率

我们假设多任务学习中的一个关键优化问题源于冲突的梯度,其中不同任务的梯度通过负内积来衡量彼此远离。然而,冲突的梯度本身并没有什么害处。事实上,简单地平均任务梯度应该提供正确的解决方案来降低多任务目标。然而,在某些情况下,这种相互冲突的梯度会导致性能显着下降。考虑一个双任务优化问题。如果一个任务的梯度比另一个任务的梯度大得多,它将主导平均梯度。如果沿任务梯度方向也存在较高的正曲率,则主导任务的性能改进可能会被显着高估,而主导任务的性能下降可能会被显着低估。因此,我们可以将三种条件的共现描述如下:(a)当多个任务的梯度相互冲突时(b)当梯度幅度差异很大时,导致某些任务梯度支配其他任务梯度,以及(c) 当多任务优化场景中存在高曲率时。我们正式定义以下三个条件。

定义1.我们将定义为两个任务梯度之间的角度。当 时,我们将梯度定义为冲突。

定义2.我们将两个梯度之间的梯度幅度相似度定义为 .。

定义3. 我们将多任务曲率定义为 ,它是 之间 在多任务梯度方向上的平均曲率。

对于某个较大的正常数 时,对于模型参数 在当前和下一次迭代中,我们将优化情形描述为具有高曲率。

我们的目的是研究悲剧三合会,并通过两个例子来观察这三种情况的存在。首先,考虑图 1a 所示的二维优化景观,其中每个任务目标的景观对应于一个曲率较大的深而弯曲的山谷(图 1b 和 1c)。这个多任务目标的最优值对应于两个山谷的交汇处。有关优化景观的更多详细信息,请参阅附录 D。该优化景观的特定点表现出所描述的三个条件,并且我们观察到,Adam [30] 优化器精确地在这些点之一处停止(见图 1d),从而阻止了它从达到最佳状态。这为我们的假设提供了一些经验证据。我们在 5.3 节中的实验进一步表明这种现象发生在深度网络的多任务学习中。受这些观察的启发,我们开发了一种算法,旨在减轻由冲突梯度、主导梯度和高曲率引起的优化挑战,我们接下来将对此进行描述。

PCGrad:项目冲突的梯度

我们的目标是通过直接改变梯度本身来防止冲突,从而打破悲剧三元组的一个条件。在本节中,我们概述了改变梯度的方法。在下一节中,我们将从理论上证明,当存在主导梯度和高曲率时,消除梯度冲突可以有利于多任务学习。

为了最大程度地有效和广泛适用,我们的目标是以允许任务梯度之间积极相互作用的方式改变梯度,并且不引入对模型形式的假设。因此,当梯度不冲突时,我们不会改变梯度。当梯度发生冲突时,PCGrad 的目标是修改每个任务的梯度,以最大限度地减少与其他任务梯度的负面冲突,从而缓解高曲率引起的低估和高估问题。

为了在优化过程中消除梯度冲突,PCGrad 采用了一个简单的过程:如果两个任务之间的梯度发生冲突,即它们的余弦相似度为负,我们将每个任务的梯度投影到另一个任务梯度的法线平面上。这相当于消除了任务梯度的冲突部分,从而减少了任务之间破坏性梯度干扰的量。这个想法的图形描述如图 2 所示

image-20230623195319025

假设任务的梯度为,任务的梯度为。 PCGrad 的处理过程如下: (1) 首先,通过计算向量 之间的余弦相似度来判断 是否与 冲突。其中负值表示梯度冲突。 (2) 如果余弦相似度为负,则将 替换为其在 法平面上的投影:。如果梯度不冲突,即余弦相似度非负,则原始梯度 保持不变。 (3) PCGrad 在从当前批次 中按随机顺序采样的所有其他任务中重复此过程,从而得到梯度 应用于任务 。我们对批次中的所有任务执行相同的过程以获得它们各自的梯度。完整的更新过程在算法 1 中描述,关于使用随机任务顺序的讨论包含在附录 H 中。

image-20230623195641439

这个过程虽然实现起来很简单,但可以确保我们为每个批次的每个任务应用的梯度对批次中的其他任务的干扰最小,从而减轻冲突的梯度问题,在多任务中产生标准一阶梯度下降的变体。目标设定。在实践中,PCGrad 可以与任何基于梯度的优化器结合使用,包括常用的方法,例如带有动量的 SGD 和 Adam [30],只需将计算出的更新而不是原始梯度传递给相应的优化器即可。我们的实验结果验证了这个过程减少了梯度冲突问题的假设,并发现学习进度因此得到了显着提高。

PCGrad 的理论分析

 

PCGrad 实践

我们在具有多个任务或目标的监督学习和强化学习问题中使用 PCGrad。在这里,我们讨论 PCGrad 在这些设置中的实际应用。

在多任务监督学习中,每个任务 都有一个相应的训练数据集 ,由标记训练组成例如,。此监督设置中每个任务的目标定义为 ,其中 是任务 的 one-hot 编码。在每个训练步骤中,我们从整个数据集 中随机采样一批数据点 ,然后将采样的数据与相同的任务分组对于 中表示的每个 编码为小批量,表示为 。我们将 中出现的任务集表示为 。采样后,我们将 中每个任务的梯度预先计算为 as 。给定一组预先计算的梯度 ,我们还预先计算了该组中所有梯度对之间的余弦相似度。利用预先计算的梯度及其相似性,我们可以通过算法1获得PCGrad更新,而无需重新计算任务梯度,也无需反向传播到网络中。由于 PCGrad 过程仅在优化步骤中修改共享参数的梯度,因此它与模型无关,并且可以应用于具有共享参数的任何架构。我们在第 5 节中通过多种架构对 PCGrad 进行了实证验证。

对于多任务强化学习和目标条件强化学习,PCGrad 可以很容易地应用于策略梯度方法,按照算法 1,直接更新每个任务的计算策略梯度,类似于监督学习设置。对于演员-评论家算法,应用 PCGrad 也很简单:我们只需将演员和评论家的任务梯度替换为通过 PCGrad 计算的梯度。有关 RL 实际实施的更多详细信息,请参阅附录 C。


面向ACG编程