多任务学习损失函数设计

1. 文章信息

文章题为“Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics”,该文于2018年发表至Conference on Computer Vision and Pattern Recognition (CVPR)会议上。文章提出一种利用不确定性衡量计算机视觉任务中场景几何和语义的损失的方法。

2. 摘要

许多深度学习应用都受益于具有多回归和分类目标的多任务学习。本文观察到这种系统的性能强烈依赖于每个任务损失之间的相对权重。然而,手动调整权重是一个困难且昂贵的过程,导致多任务学习在实践中难以实现。文章提出了一种调节多任务学习损失的方法,该方法通过考虑每个任务的均方差不确定性来权衡多个损失函数。这种方法允许在分类任务和回归任务中,同时学习不同单位或尺度的各种数量。进一步,文章展示了所提出模型学习单目(monocular)输入图像的逐像素(per-pixel)深度回归、语义和实例分割。实验结果表明,文章所提出的模型可以学习多任务权重,并且优于每个任务单独训练的单独模型。

文章的主要贡献总结如下:

1、利用均方差任务不确定性,同时学习不同数量和单位的各种分类和回归损失的一种新颖的原则性多任务损失;

2、提出了能够实现语义分割、实例分割和深度回归的统一架构;

3、文章展示了损失加权在多任务深度学习中的重要性,以及与等效的单独训练模型相比如何获得更好的性能。

3. 具有均方差不确定性的多任务学习

通常而言,多任务学习指针对多个目标进行优化的模型,许多现有的深度学习模型中讲不同任务的损失进行加权求和,从而实现多目标优化。然而,该方法存在许多问题。通常而言,模型性能与权重选择密切相关,且十分敏感,如下图所示。下图展示了一个预测逐像素深度和语义分类的模型和一个预测逐像素深度和语义分割的模型。可以看到,对于不同的权重参数,不同任务的模型性能截然不同。因此,学习不同任务的最优权重是十分重要的。

a93af049d3942727b18fe3c9d96c6dd7.png

文章利用概率建模学习不同任务的权重。首先,在贝叶斯建模中主要有两种不确定性:认知不确定性(Epistemic uncertainty)和偶然不确定性(Aleatoric uncertainty)。其中,前者是由于缺乏数据而导致,而后者是由于人们无法解释信息的不确定性。进一步,偶然不确定性又可以划分为:数据相关(或异方差)不确定性和任务相关(或均方差)不确定性。其中,任务相关不确定性是文章的研究重点,该类不确定性不依赖于输入数据,而是对于所有输入数据保持恒定,而对于不同任务不同的偶然误差。

多任务似然估计:

文章通过最大化高斯似然的均方差不确定性,推导获得多任务损失函数。具体而言,86f899dd214c03dea70b6e477ae7c33e.png表示神经网络的输出,W为权重,x为输入。文章定义以下概率模型,其中均值由模型的输出给定,对于回归任务而言,文章将似然定义为高斯分布,如下所述。

f479e7e23c6bbfbdaa54d483b457b1ae.png

其中,方差为观测值的噪声规模。对于分类任务而言,其似然表达式如下,

f4471943efda8ef3e08a5e6909b24bfb.png

对于多个模型的输出,在给定充足的数据条件下,文章将似然定义为输出的因式分解形式,因此多任务似然如下式所示。其中,为不同任务的输出。

5c337530e24eaae786a0ae141063c075.png

文章利用最大似然估计理论,将上述似然取对数,并最大化。此处以回归任务为例,其对数似然表示式如下。

92ac378a54cf4fa345ea0f25797c4e47.png

其中,方差表示观测值的模型噪声观测参数,该参数表明模型的输出中噪声的程度。进一步,对模型参数和噪声参数的对数似然取最大化。假设模型输出由两部分组成,即y1和y2,其高斯分布如下式所述。

5e5d38f8ec9d0ed8cf3dca9e31c49385.png

对上式取对数并取负值,从而得到最小化目标,即可得到多输出模型的损失函数70d978ea8d2f1d79a381b5ae28c9c2d0.png

d5e647baf1a9a91ade0f891b1c90ec2c.png

其中,2dadb1d1f3ffef2abd7b6574e896376b.png表示第一项输出的损失,L2同理。

文章将上述关于σ1和σ2的最小化目标解释为根据数据自适应地学习两个不同任务的相对权重。σ1对应y1的噪声参数,随着σ1的增加,其对应的损失L1也随之下降、另一方面,随着噪声参数的降低,其对应的权重也随之增加。最后一项为正则项,防止噪声增加过多。对于分类任务而言,其原理相似,但推导过程略有差异,此处不再赘述。

4. 模型

为了理解图像中的语义信息和几何信息,文章提出一种能够在像素级别学习回归和分类输出的框架。该框架采用了编码器-解码器的结构,并构建深度卷积网络。文章所提出的模型由许多产生共享表示的卷积编码器组成,以及相应数量的特定任务的卷积解码器。

fcc0e8738f39b8c097b928a535ed2b4a.png

编码器用于学习数据的深度映射,以产生上下文信息。文章基于DeepLabV3构建编码器,采用ResNet101。解码器则是由二维卷积神经网络构成。

5. 实验

文章在CityScapes数据集上进行模型验证。该数据集是一个用于道路场景理解的大型数据集,包括20个类别的实力和语义分割,同时还提供了深度图像。实验结果如下表所示。

e127a81b9ed31d4a7fb7742db5dab378.png

表中前三行展示了只考虑特定任务时,不同任务的模型性能。第四行则展示了不添加权重时,通过多任务学习时的模型性能。可以看到采用多任务学习,但不采用自适应权重时,多任务学习能够一定程度上提升模型性能,降低模型的预测误差,但由于权重分配不合理,导致在某些任务上预测精度下降。表中后四行展示了采用文章所提出的多任务学习损失函数,可以看到模型的性能得到了显著的提高。结果表明,文章所提出损失函数的有效性。同时表明,在进行多任务学习时,对不同任务的权重进行合理分配能够有效提升模型性能。

此外,文章还将所提出框架与其他模型进行比对,以证明其有效性以及多任务学习的优势,结果如下表所示。

4e35e0e9d88fe859a2a32d65878547f6.png

6. 结论

文章结果表明,正确的加权损失项对于多任务学习问题至关重要。文章证明了通过均方差(任务)不确定性对不同任务的损失进行加权是一种有效的方法。此外,文章推导了一个原则性的损失函数,它可以从数据中自动学习相对权重,并且对权重初始化具有鲁棒性。结果表明,通过多任务学习,构建统一的语义分割、实例分割和逐像素深度回归架构可以提高场景理解任务的性能。

Attention

 欢迎关注微信公众号《当交通遇上机器学习》!如果你和我一样是轨道交通、道路交通、城市规划相关领域的,也可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流群!希望我们共同进步!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PyTorch支持多任务学习,这是一种在单个模型中同时训练多个相关任务的方法。有几种常见的方法可以实现多任务学习: 1. 共享骨干网络:将神经网络的前几层作为共享层,然后为每个任务添加独立的任务特定层。这样可以共享底层的特征提取能力,并允许每个任务学习特定的任务相关特征。 2. 多头输出:这种方法在网络的最后一层添加多个输出层,每个输出层对应一个任务。每个任务都有自己的损失函数,并根据这些损失函数来更新网络参数。这种方法可以同时优化多个任务,但可能需要更多的计算资源。 3. 权衡参数:可以通过加权不同任务的损失函数来平衡不同任务之间的重要性。通过调整权重,可以更加关注某些任务,使其对网络的训练起到更大的作用。 4. 多任务共享注意力模型:这是一种使用注意力机制来自适应地选择对每个任务最有帮助的信息的方法。通过在网络中引入注意力机制,可以根据每个任务的需求来动态地选择和加权不同层的特征。 在PyTorch中实现多任务学习并不复杂。你可以使用PyTorch的灵活性构建自定义的多任务网络架构,定义多个损失函数,并使用反向传播来更新网络参数。同时,PyTorch还提供了一些方便的工具和库,比如torchvision和torchtext,可以帮助你更轻松地处理多任务学习中的数据加载和预处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当交通遇上机器学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值