Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics

许多深度学习应用受益于多任务学习,其中涉及多个回归和分类目标。本文观察到,这些系统的性能很大程度上依赖于各个任务损失之间的相对权重。手动调整这些权重是一项困难且昂贵的过程,因此多任务学习在实践中往往不可行。我们提出了一种基于原则的多任务深度学习方法,通过考虑每个任务的同方差不确定性来对多个损失函数进行加权。这使我们能够在分类和回归设置中同时学习具有不同单位或尺度的多个量。我们通过使用单目输入图像进行像素级深度回归、语义分割和实例分割的示例来验证我们的模型。令人惊讶的是,我们展示了我们的模型可以学习多任务权重,并且在性能上胜过单独训练每个任务的模型。

1 引言

多任务学习旨在通过从共享表示中学习多个目标来提高学习效率和预测准确性[7]。多任务学习在机器学习的许多应用中都很常见,从计算机视觉[27]到自然语言处理[11]再到语音识别[23]。
我们在计算机视觉中的视觉场景理解设置中探索多任务学习。场景理解算法必须同时理解场景的几何和语义信息。这构成了一个有趣的多任务学习问题,因为场景理解涉及到不同单位和尺度的各种回归和分类任务的联合学习。在长时间计算时间禁止的系统(例如机器人)中,视觉场景理解的多任务学习至关重要。将所有任务合并到一个模型中可以减少计算量,并使这些系统能够实时运行。

以往同时学习多个任务的方法使用了简单加权损失的加权和,其中损失权重是统一的或手动调整的[38, 27, 15]。然而,我们发现性能高度依赖于每个任务损失之间适当的权重选择。寻找最优权重是非常昂贵且难以通过手动调整解决的。我们观察到,每个任务的最优权重取决于测量尺度(例如米、厘米或毫米),最终取决于任务的噪声幅度

在这项工作中,我们提出了一种基于原则的方法,通过考虑同方差不确定性来组合多个损失函数,以同时学习多个目标。我们将同方差不确定性解释为任务相关的加权,并展示如何推导出一种有原则的多任务损失函数,可以学习平衡各种回归和分类损失。与单独学习每个任务相比,我们的方法可以学习最优的权重平衡,从而实现更优异的性能。

具体来说,我们在学习场景几何和语义方面展示了我们的方法,并涉及三个任务。首先,我们学习对像素级别进行对象分类,也称为语义分割[32, 3, 42, 8, 45]。其次,我们的模型执行实例分割,这是在图像中为每个单独对象分割出独立掩模的更难的任务(例如,道路上每辆独立汽车的单独、精确的掩模)[37, 18, 14, 4]。这比语义分割更困难,因为它不仅需要估计每个像素的类别,还需要确定该像素属于哪个对象。这比仅预测对象边界框的目标检测更复杂[17]。最后,我们的模型预测像素级度量深度。使用密集预测网络和监督学习[15]以及无监督学习[16]已经展示了通过识别来估计深度。然而,以一种良好泛化的方式估计深度非常困难。我们展示了通过使用语义标签和多任务深度学习来改善几何和深度估计。

在现有文献中,通常使用单独的深度学习模型来学习深度回归、语义分割和实例分割,以创建完整的场景理解系统。在给定单个单目输入图像的情况下,我们的系统是第一个同时产生语义分割、度量深度的密集估计和实例级别分割的系统(图1)。虽然其他视觉模型已经展示了多任务学习的能力,但我们展示了如何学习如何组合语义和几何信息。将这些任务合并到一个模型中,确保模型在不同任务输出之间达成一致,同时减少计算量。最后,我们展示了使用多任务学习的共享表示可以提高各种指标的性能,使模型更有效。

总之,本文的主要贡献包括:

一种新颖而有原则的多任务损失,可以使用同方差任务不确定性同时学习各种分类和回归损失的不同数量和单位。
一种统一的架构,用于语义分割、实例分割和深度回归。
展示了多任务深度学习中损失加权的重要性,并展示了如何获得优越的性能,与等效单独训练的模型相比。

2 相关工作

多任务学习旨在提高学习效率和每个任务的预测准确性,与为每个任务训练单独的模型相比 [40, 5]。它可以被视为一种归纳式知识转移方法,通过在互补任务之间共享领域信息来改善泛化能力。它通过使用共享表示来学习多个任务,从一个任务中学到的知识可以帮助学习其他任务 [7]。
微调(Fine-tuning)[1, 36]是多任务学习的基本示例,我们可以将不同的学习任务视为预训练步骤来利用它们。其他模型在每个训练任务之间交替学习,例如在自然语言处理中 [11]。多任务学习还可以用于数据流设置 [40],或在强化学习中防止遗忘先前学习的任务 [26]。它还可以用于使用自编码器从各种数据源学习无监督特征 [35]。

在计算机视觉领域,有许多多任务学习的方法。许多方法专注于语义任务,例如分类和语义分割[30]或分类和检测[38]。MultiNet [39]提出了一种用于检测、分类和语义分割的架构。CrossStitch网络[34]探索了组合多任务神经激活的方法。Uhrig等人[41]在分类设置下学习语义和实例分割。多任务深度学习也已经被用于几何和回归任务。[15]展示了如何学习语义分割、深度和表面法线。PoseNet [25]是一种学习相机位置和方向的模型。UberNet [27]在单个架构下学习了多个不同的回归和分类任务。在这项工作中,我们是首次提出了一种联合学习深度回归、语义和实例分割的方法。与[15]的模型类似,我们的模型同时学习语义和几何表示,这对于场景理解很重要。然而,我们的模型学习了更困难的实例分割任务,它需要同时了解语义和几何信息。这是因为我们的模型必须确定每个对象中每个像素的类别和空间关系。更重要的是,之前所有同时学习多个任务的方法都使用了简单的损失加权和,其中损失权重是统一的,或者是粗略手动调整的。在这项工作中,我们提出了一种基于原则的方法,通过考虑同方差任务不确定性来组合多个损失函数,以同时学习多个目标。我们展示了在深度学习中适当加权每个任务的重要性,并且我们的方法可以学习最优的权重平衡,以实现良好的性能。

在文中提到的"homoscedastic uncertainty"指的是同方差不确定性。在统计学中,同方差指的是具有相同方差的变量或误差项。在多任务学习中,每个任务的损失函数对应于任务的误差项,而同方差不确定性表示每个任务的误差项具有相同的方差。这里的观点是利用任务之间误差项方差的差异来加权多个损失函数,从而更好地平衡不同任务的重要性。

在这里插辅导费述
图2:学习多个任务改善了模型的表示和各个任务的性能。这些图表展示了多任务学习在语义分类和深度回归(a)以及实例分割和深度回归(b)方面的优势。在绘图的两个边缘处,w = 0和w = 1,可以看到模型在各个任务上的性能。对于每个任务之间的权重平衡,我们观察到两个任务的性能都有所改善。所有模型都使用学习率为0.01进行训练,并使用(1)式中的损失函数应用相应的权重。结果使用Tiny CityScapes验证数据集以128×256的下采样分辨率显示。
注:Tiny CityScapes是一个经过下采样处理的CityScapes数据集,用于进行模型验证和评估。

3 使用同方差不确定性的多任务学习

多任务学习涉及针对多个目标进行模型优化的问题。它在许多深度学习问题中都很常见。组合多个目标损失的简单方法是对每个单独任务的损失进行加权线性求和:
Ltotal = ∑wiLi. (1)

这是先前工作[39、38、30、41]中使用的主要方法,例如用于密集预测任务[27]、场景理解任务[15]以及用于相机位姿中四元数旋转和米级平移的任务[25]。然而,这种方法存在一些问题。特别是,模型的性能对权重wi的选择非常敏感,如图2所示。调整这些权重超参数是非常昂贵的,通常需要多天时间进行每次尝试。因此,我们希望找到一种更便利的方法,能够学习到最优权重。
具体来说,我们考虑一个网络,该网络从输入图像中学习预测像素级深度和语义类别。在图2中,每个图的两个边界显示了单独训练在各个任务上的模型,曲线显示了每个任务的不同权重wi下的性能。我们观察到,在某个最优权重下,联合网络的性能优于单独训练每个任务的独立网络(模型在各个任务上的性能在图的两个边界上可见:w = 0和w = 1)。在接近最优权重的附近,网络在其中一个任务上的性能变差。然而,寻找这些最优权重是昂贵的,并且对于具有大量任务的大型模型越来越困难。图2还展示了两个回归任务(实例分割和深度回归)的类似结果。接下来,我们将展示如何使用概率建模的思想来学习最优任务权重。

3.1 任务相关的同方差不确定性

在贝叶斯建模中,可以对两种主要类型的不确定性进行建模[24]。
知识不确定性(Epistemic uncertainty)是模型的不确定性,它捕捉了由于缺乏训练数据而导致模型不知道的内容。它可以通过增加训练数据来消除。
随机不确定性(Aleatoric uncertainty)捕捉了我们对于数据无法解释的信息的不确定性。随机不确定性可以通过观察所有解释变量并提高精度来解释。

随机不确定性又可以分为两个子类别。
数据相关或异方差不确定性(Data-dependent or Heteroscedastic uncertainty)是依赖于输入数据的随机不确定性,并作为模型的输出进行预测。
任务相关或同方差不确定性(Task-dependent or Homoscedastic uncertainty)是不依赖于输入数据的随机不确定性。它不是模型的输出,而是一种在所有输入数据上保持恒定且在不同任务之间变化的量。因此,可以将其描述为任务相关的不确定性。

在多任务设置中,我们展示了任务不确定性捕捉了任务之间的相对置信度,反映了回归或分类任务固有的不确定性。它还取决于任务的表示或测量单位。我们提出可以使用同方差不确定性作为多任务学习问题中损失加权的基础。

3.2 多任务似然函数

在本节中,我们基于最大化具有同方差不确定性的高斯似然性来推导多任务损失函数。设fW(x)为具有权重W的神经网络在输入x上的输出。我们定义以下概率模型。对于回归任务,我们将似然性定义为具有均值为模型输出的高斯分布:
p(y|fW(x)) = N(fW(x), σ2) (2)

其中σ是观测噪声的标量。对于分类任务,通常将模型输出通过softmax函数进行压缩,并从得到的概率向量中进行采样:
p(y|fW(x)) = Softmax(fW(x)) (3)

在存在多个模型输出的情况下,我们通常将似然函数定义为对输出进行因式分解,给定某些足够统计量。我们将fW(x)定义为我们的足够统计量,得到以下多任务似然性:
p(y1, ..., yK|fW(x)) = p(y1|fW(x)) · p(yK|fW(x)) (4)

其中y1, …, yK是模型的输出(例如语义分割、深度回归等)。

在最大似然推断中,我们最大化模型的对数似然性。例如,在回归任务中,对数似然性可以写成:
log p(y|fW(x)) ∝ - 1/(2σ^2) ||y - fW(x)||^2 - log σ (5)

对于高斯似然性(或类似地对于拉普拉斯似然性),其中σ是模型的观测噪声参数,表示输出中的噪声程度。然后,我们最大化对数似然性,求解模型参数W和观测噪声参数σ。

现在假设我们的模型输出由两个向量y1和y2组成,每个向量都遵循高斯分布:
p(y1, y2|fW(x)) = p(y1|fW(x)) · p(y2|fW(x))
= N(y1; fW(x), σ^2_1) · N(y2; fW(x), σ^2_2) (6)

这导致了多输出模型的最小化目标L(W, σ1, σ2)(我们的损失函数):
= - log p(y1, y2|fW(x))
∝ 1/(2σ^2_1) ||y1 - fW(x)||^2 + 1/(2σ^2_2) ||y2 - fW(x)||^2 + log σ1σ2
= 1/(2σ^2_1) L1(W) + 1/(2σ^2_2) L2(W) + log σ1σ2 (7)

其中,我们将 L 1 ( W ) = ∣ ∣ y 1 − f W ( x ) ∣ ∣ 2 L1(W) = ||y1 - fW(x)||^2 L1(W)=∣∣y1fW(x)2表示第一个输出变量的损失,L2(W)以类似的方式定义。

我们将最小化上述目标中的σ1和σ2视为根据数据自适应地学习损失L1(W)和L2(W)的相对权重。当变量y1的噪声参数σ1增加时,L1(W)的权重减少。另一方面,当噪声减小时,相应目标的权重增加。最后一个目标项充当噪声项的正则化器,防止噪声过大(实际上忽略数据)。

这个构造可以简单地扩展到多个回归输出。然而,对于分类似然性的扩展更有意思。我们将分类似然性调整为将模型输出的缩放版本通过softmax函数压缩:
p(y|fW(x), σ) = Softmax(1/σ^2 fW(x)) (8)

其中σ是一个正标量。这可以解释为Boltzmann分布(也称为Gibbs分布),其中输入通过σ^2缩放(通常称为温度)。该标量可以是固定的,也可以是可学习的,其参数的大小决定了离散分布的“均匀度”(平坦度)。这与其不确定性有关,可以通过熵来衡量。然后,该输出的对数似然性可以写成:
log p(y = c|fW(x), σ) = 1/σ^2 fWc(x) - log ∑ exp(1/σ^2 fWc(x)) (9)
其中fWc(x)是向量fW(x)的第c个元素。

接下来,假设模型的多个输出由连续输出y1和离散输出y2组成,分别用高斯似然性和softmax似然性建模。与之前类似,联合损失L(W, σ1, σ2)定义为:
= - log p(y1, y2 = c|fW(x))
= - log N(y1; fW(x), σ^2_1) · Softmax(y2 = c; fW(x), σ^2)
= 1/(2σ^2_1) ||y1 - fW(x)||^2 + log σ1 - log p(y2 = c|fW(x), σ^2)
= 1/(2σ^2_1) L1(W) + 1/σ^2_2 L2(W) + log σ1 + log ∑ exp(fWc(x)) / σ^2 (10)

其中,我们将L1(W) = ||y1 - fW(x)||^2表示y1的欧几里德损失,将L2(W) = - log Softmax(y2, fW(x))表示y2的交叉熵损失(fW(x)未缩放),并且通过优化W、σ1和σ2来求解。在最后的转换中,我们引入了明确的简化假设
在这里插入图片描述

σ 2 → 1 σ^2 → 1 σ21时成为等号。这有助于简化优化目标,并在实验中改善结果。

这最后的目标可以看作是以合理和良好基础的方式学习每个输出的损失的相对权重。较大的σ2值将减小L2(W)的贡献,而较小的σ2值将增加其贡献。最后一个项在设置σ^2过大时对目标进行惩罚。

**这个构造可以轻松地扩展到离散和连续损失函数的任意组合,使我们能够以一种基于原则和良好形式的方式学习每个损失的相对权重。该损失是光滑可微的,并且形式良好,使得任务权重不会收敛为零。**相比之下,直接使用简单的线性损失求和(公式1)来学习权重将导致权重迅速收敛为零。在接下来的章节中,我们介绍我们的实验模型并呈现实证结果。

实际上,我们训练网络来预测对数方差 s = l o g σ 2 s = log σ^2 s=logσ2。这是因为与回归方差σ^2相比,该损失在数值稳定性上更好,避免了除以零的情况。指数映射还使我们能够回归到无约束的标量值,其中exp(−s)解析为正域,给出有效的方差值。

4 场景理解模型

为了理解语义和几何,我们首先提出了一种能够在像素级别学习回归和分类输出的架构。我们的架构是一个深度卷积编码解码网络[3]。我们的模型由多个卷积编码器组成,产生一个共享表示,然后是相应数量的任务特定的卷积解码器。图1展示了高级摘要。
编码器的目的是通过使用与多个相关任务的领域知识,学习一个深度映射来产生丰富的上下文特征。我们的编码器基于DeepLabV3[10],这是一个最先进的语义分割框架。我们使用ResNet101[20]作为基础特征编码器,然后使用Atrous空间金字塔池化(ASPP)模块[10]增加上下文感知性。我们在这个编码器中应用了扩张卷积,使得得到的特征图相对于输入图像的尺寸下采样了8倍。

然后,我们将网络分成不同的解码器(具有不同的权重)用于每个任务。解码器的目的是学习从共享特征到输出的映射关系。每个解码器由一个输出特征尺寸为256的3×3卷积层和一个回归任务的1×1层组成。更多的架构细节在附录A中描述。

语义分割。我们使用交叉熵损失来学习像素级别的类别概率,并在每个小批次上对带有语义标签的像素进行损失平均。

实例分割。一个直观的方法来确定像素属于哪个实例是与实例中心的关联。我们使用回归方法进行实例分割[29]。这种方法受到了[28]的启发,它使用物体部分的Hough投票来识别实例。在这项工作中,我们通过使用深度学习从单个像素的投票来扩展这个想法。我们为每个像素坐标cn学习一个实例向量x̂n,它指向像素所属实例的中心in,即 i n = x ^ n + c n in = x̂_n + c_n in=x^n+cn。我们使用L1损失函数来训练这个回归,使用地面实况标签xn在一个小批次中对所有带标签的像素NI进行平均:
在这里插入图片描述

在这里插入图片描述
Figure 3: 实例中心回归方法。对于每个像素,我们回归一个指向实例中心的向量。损失仅在属于实例的像素上计算。我们通过将颜色表示为实例向量的方向,并将强度表示为向量的大小来可视化( c )。

图3详细描述了我们用于实例分割的表示。图3(a)显示了输入图像和属于实例类别的像素的掩码(在测试时从预测的语义分割中推断)。图3(b)和图3( c)显示了实例向量x和y坐标的地面实况和预测值。然后,我们使用OPTICS[2]对这些投票进行聚类,得到图3(d)中的预测实例分割输出。
在这里插入图片描述

Figure 4: 这个例子展示了两辆被树木和路灯遮挡的汽车,这使得实例分割变得具有挑战性。我们的实例分割方法可以有效地处理遮挡。通过结合语义和几何信息,我们可以正确处理被遮挡分割的掩码,尽管它们属于同一个实例。

对于实例分割算法来说,最困难的情况之一是由于遮挡导致实例掩码被分割。图4显示了我们的方法可以处理这些情况,通过允许像素使用几何来投票实例中心。在这些情况下,依赖于分水岭方法[4]或实例边缘识别方法的方法会失败。

现在,为了获得每个实例的分割,我们需要估计实例中心ˆin。我们提出将估计的实例向量x̂n视为Hough参数空间中的投票,并使用聚类算法识别这些实例中心。OPTICS[2]是一种高效的基于密度的聚类算法。它能够从给定的样本集中识别出未知数量的多尺度、密度不同的聚类。我们选择使用OPTICS的原因有两个。首先,它不像k-means[33]等算法那样假设已知的聚类数量。其次,它不像离散化的分箱方法[12]那样假设规范的实例大小或密度。使用OPTICS,我们将点cn + x̂n聚类成若干个估计的实例ˆi。然后,我们可以将每个像素pn分配给其最接近的估计实例向量cn + x̂n所属的实例。

深度回归。我们使用监督标签来训练,使用基于像素的度量逆深度,并使用L1损失函数:
在这里插入图片描述
我们的架构估计逆深度ˆdn,因为它可以表示无限远的点(例如天空)。我们可以从RGBD传感器或立体图像中获得逆深度标签dn。那些没有逆深度标签的像素在损失计算中被忽略。

5 实验

我们在CityScapes数据集上展示了我们方法的有效性,该数据集用于道路场景理解。它包括了来自汽车级别的立体图像,通过具有22cm基线的立体摄像头进行标记,标注有20个类别的实例和语义分割。深度图像也提供了,使用SGM进行标记,我们将其视为伪地面真值。此外,我们将被标记为天空的像素分配为零逆深度。该数据集从多个城市在良好的天气条件下采集,包括2,975张训练图像和500张验证图像,分辨率为2048×1024。另外,我们保留了1,525张图像,用于在在线评估服务器上进行测试。

有关进一步的训练细节和优化超参数,请参见附录A。
在这里插入图片描述
表1:使用我们的多任务损失函数学习语义分割、实例分割和深度时的定量改进。
实验在Tiny CityScapes数据集上进行(子采样到128 × 256的分辨率)。结果来自验证集。我们观察到,与单任务模型和加权损失相比,使用我们的多任务损失进行训练可以提高性能。此外,我们观察到,在使用我们的多任务损失进行全部三个任务(3 × )的训练时,相比于仅使用任意两个任务进行训练(表示为2 × ),性能有所改善。这表明我们的损失函数可以自动学习出比基准方法更好的任务权重。

5.1 模型分析

在表格1中,我们将单独的模型与使用朴素加权损失或本文中提出的任务不确定性加权的多任务学习模型进行了比较。为了减轻计算负担,我们将每个模型在128×256像素的降低分辨率下进行了50,000次迭代的训练。当我们将数据按四倍缩小时,还需要相应地调整视差标签。表格1清楚地说明了多任务学习的好处,其结果明显优于单独任务模型的表现。例如,使用我们的方法,我们将分类结果从59.4%提高到63.4%。

我们还将其与一些朴素的多任务损失进行了比较。我们比较了平等地加权每个任务和使用近似最佳权重的方法。使用均匀加权会导致性能不佳,有些情况下甚至无法改善单任务模型的结果。随着任务数量的增加,获取近似最佳权重变得困难,因为它需要在参数上进行昂贵的网格搜索。然而,即使与我们提出的方法相比,即使通过细粒度的网格搜索找到了最佳权重,这些权重的性能仍然较差。图2显示,使用任务不确定性权重甚至可以比通过细粒度网格搜索找到的最佳权重表现更好。我们认为这有两个原因。首先,网格搜索的准确性受限于搜索的分辨率。其次,使用同方差噪声项优化任务权重可以使权重在训练过程中动态变化。总的来说,我们观察到不确定性项在训练过程中减小,从而改善了优化过程。
在这里插入图片描述
表2:CityScapes基准测试[13]。我们展示了使用完整的1024 × 2048像素分辨率的测试数据集的结果。完整的排行榜请参见www.cityscapes-dataset.com/benchmarks。视差(逆深度)指标是根据CityScapes深度图计算的,这些深度图是使用SGM立体视觉[21]计算得出的,它们是稀疏的。请注意,这些比较并不完全公平,因为许多方法使用了不同训练数据集的集合。我们的方法是第一个使用单一模型处理所有三个任务的方法。

在附录B中,我们发现我们的任务不确定性损失对于所选择的参数初始化是鲁棒的。这些参数在几百个训练迭代中迅速收敛到类似的最优值。我们还发现得到的任务权重在整个训练过程中变化。对于我们的最终模型(表2),在训练结束时,语义分割、深度回归和实例分割的损失权重比为43:1:0.16。
在这里插入图片描述
Figure 5: 几何和语义的多任务学习在道路场景理解中的定性结果。结果显示了在CityScapes数据集上使用我们的多任务方法进行测试的图像,使用了训练了所有任务的单个网络。我们观察到,多任务学习改善了深度感知的平滑性和准确性,因为它学习到了一个利用其他任务的线索(如分割)的表示方式(反之亦然)。
最后,我们使用完整尺寸的CityScapes数据集对我们的模型进行基准测试。在表2中,我们将其与其他一些最先进的方法在这三个任务上进行了比较。我们的方法是首个能够使用单个模型完成所有三个任务的模型。我们与其他方法进行了有利的比较,在使用可比的训练数据和推理工具的情况下表现出色。图5显示了我们模型的一些定性示例。

6 结论

我们已经证明了在多任务学习问题中正确权衡损失项的重要性。我们展示了同方差(任务)不确定性作为损失权重的一种有效方法。我们推导出了一个基于原则的损失函数,可以自动从数据中学习相对权重,并且对权重的初始化具有鲁棒性。我们展示了这种方法可以提高场景理解任务的性能,通过使用一个统一的架构实现了语义分割、实例分割和像素级深度回归。我们证明了模拟任务相关的同方差不确定性可以提高模型的表示能力,并且每个任务的性能比单独训练的模型要好。
还有许多有趣的问题有待回答。首先,我们的结果表明通常不存在适用于所有任务的单一最佳权重。那么什么是最佳权重?多任务学习是否是一个没有单一高级目标的病态优化问题?

第二个有趣的问题是,在共享编码器网络中将其分成各个任务的解码器的最佳位置在哪里?对于共享的多任务表示,最佳的网络深度是多少?

最后,为什么语义和深度任务在Table 1中的结果优于语义和实例任务?显然,本文探索的这三个任务是互补的,并且对于学习有关场景的丰富表示是有用的。但是我们能否量化任务之间的关系?

代码实现:

import torch
import torch.nn as nn

def uncertainty_to_weigh_losses(loss_list):
    """
    所有任务的损失列表,为tensor格式
    :param loss_list:
    :return: tensor格式的综合损失
    """
    loss_n = len(loss_list)
    uncertainty_weight = [
        nn.Parameter(torch.tensor([1 / loss_n]), requires_grad=True) for _ in range(loss_n)
    ]

    final_loss = []
    for i in range(loss_n):
        final_loss.append(loss_list[i] / (2 * uncertainty_weight[i]**2) + torch.log(uncertainty_weight[i]))

    return sum(final_loss)

Reference:
深度学习的多个loss如何平衡?
多任务学习MTL模型:多目标Loss优化策略

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值