【Loss】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

https://arxiv.org/abs/1705.07115

CVPR 2018

  • Alex Kendall University of Cambridge
  • Yarin Gal University of Oxford
  • Roberto Cipolla University of Cambridge

Question

在多任务模型中, 往往每一个任务都会使用一个单独的loss.

如文中使用CityScapes数据集同时做分语义割(Semantic Segmentation), 实例分割(Instance Segmentation), 单目深度估计(Monocular Disparity Estimation), 三个任务的loss截然不同,如果模型训练时侧重一个任务, 那么其他任务的性能就会很差.

而单任务模型中, 也会添加不同的loss去提高训练的速度, 或者增强模型的性能.

举例来说, 在reid 任务中, 会同时存在ID loss 和 metric loss, 两种loss的作用不同,前者用于分类, 快速收敛模型, 后者用于度量学习, 缩小类内间距和扩大类间距离. 而且随着训练迭代次数的增加, 两种loss对于模型泛化性的作用也随之不同.

多个 loss 之间的取舍会随着数据集的尺度差异, 以及任务的难易程度改变, 恒定的权重会制约模型的收敛方向, 进而影响模型的最终性能.

如何动态调整loss之间的权重, 就是文中所要研究的内容.

Methodology

概率机器学习和不确定性

机器学习训练模型模型从观察到的数据(训练数据)中学习一些模式和假设,并对未观察到的数据(测试数据)进行推断。然而,由于输入数据噪声、感官噪声、测量误差、非最优超参数设置等诸多原因,该模型对预测具有不确定性。

从概率论的角度来看,用单点估计作为权重来建立任何分类都是不合理的,而且神经网络无法正确评估训练数据中的不确定性。机器学习中的概率模型指出,所有形式的不确定性不可能是一个真实的值,而更像是一个概率值,并使用概率论来回答一切问题。概率分布用于建模学习、不确定性和未观测状态。在观察数据之前,先定义一个先验概率分布,然后进行学习,一旦观察到数据,该分布就转换为后验分布。

网络中的不确定性是衡量模型对其预测确定程度的指标。在贝叶斯模型中,存在两种主要的不确定性类型:偶然不确定性(Aleatoric uncertainty)认知不确定性(Epistemic uncertainty)

偶然不确定性测量观测中固有的噪声。这种不确定性存在于数据采集方法中,如传感器噪声或沿数据集均匀分布的运动噪声。即使收集了更多的数据,也不能减少这种不确定性, 只能通过提高数据精度避免.

偶然不确定性可以进一步分为同方差不确定性(Task-dependant or Homoscedastic uncertainty)和异方差不确定性(Data-dependant or Heteroscedastic uncertainty)

  • 异方差不确定性,取决于输入数据,并预测为模型输出。其中一些输入可能具有比其他输入更多的噪声输出。异方差的不确定性尤为重要,可以防止模型输出非常自信的决策。

  • 同方差不确定性,不取决于输入数据。它不是模型输出,而是一个对所有输入数据保持不变并且在不同任务之间变化的数量。因此,它可以被描述为任务相关的不确定性。

认知不确定性代表了模型本身造成的不确定性。给定更多数据可以减少这种不确定性,并且通常称为模型不确定性。

在这里插入图片描述

同方差不确定性与输入无关, 取决于任务固有的不确定性, 通过将同方差不确定性转变为loss的weight, 模型就可以具有动态调整loss的能力.

现在将同方差不确定性定义为 σ \sigma σ, 因为 σ \sigma σ 对所有输入数据保持不变并且在不同任务之间变化的数量, 所以假设 σ \sigma σ 是模型存在的参数, 并且维持不变. 当前我们已经有了输出和标签, 那么为了求出参数 σ \sigma σ , 可以使用极大似然估计计算.

极大似然估计

利用给定的样本和概率分布, 反推分布参数.

假设概率分布或者概率密度函数为 f ( x ; θ ) f(x ; \theta) f(x;θ) 由于 θ \theta θ 未知,

则定义对于 θ \theta θ 的似然函数 L ( θ ) = ∏ i = 1 n f ( x i ; θ ) L(\theta)=\prod_{i=1}^{n} f\left(x_{i} ; \theta\right) L(θ)=i=1nf(xi;θ)

为了最大化似然函数,

利用对数函数担当递增的性质,对似然函数取对数, 得到 l n L ( θ ) = ∑ i = 1 n l n f ( x i ; θ ) lnL(\theta)=\sum_{i=1}^{n} lnf\left(x_{i} ; \theta\right) lnL(θ)=i=1nlnf(xi;θ)

θ \theta θ 求导, 并将导数置为 0 , ∂ ln ⁡ L ( θ ) ∂ θ j = 0 \frac{\partial \ln L(\theta)}{\partial \theta_{j}}=0 θjlnL(θ)=0

如果存在驻点 θ ^ \hat\theta θ^ , 则可以认定 θ ^ \hat\theta θ^ 可以使得对数似然函数最大, 也使得似然函数最大.

在文中, 并没有完全按照极大似然估计的做法, 做法如下:

首先定义 f W ( x ) \mathbf{f}^{\mathbf{W}}(\mathbf{x}) fW(x) 为神经网络的输出特征张量.

回归问题

在回归问题中, 神经网络直接输出预测值 f W ( x ) \mathbf{f}^{\mathbf{W}}(\mathbf{x}) fW(x) , 并且与真值 y \mathbf{y} y 存在固有的同方差不确定性, 那么就可以假设对于 y \mathbf{y} y 的后验概率符合以 σ 2 \sigma^2 σ2 作为方差的高斯分布:
p ( y ∣ f W ( x ) ) = N ( f W ( x ) , σ 2 ) (1) p\left(\mathbf{y} | \mathbf{f}^{\mathbf{W}}(\mathbf{x})\right)=\mathcal{N}\left(\mathbf{f}^{\mathbf{W}}(\mathbf{x}), \sigma^{2}\right) \tag{1} p(yfW(x))=N(fW(x),σ2)(1)
取对数:
log ⁡ p ( y ∣ f W ( x ) ) ∝ − 1 2 σ 2 ∥ y − f W ( x ) ∥ 2 − log ⁡ σ 2 (2) \log p\left(\mathbf{y} | \mathbf{f}^{\mathbf{W}}(\mathbf{x})\right) \propto-\frac{1}{2 \sigma^{2}}\left\|\mathbf{y}-\mathbf{f}^{\mathbf{W}}(\mathbf{x})\right\|^{2}-\log \sigma^2 \tag{2} logp(yfW(x))2σ21yfW(x)2logσ2(2)

可以发现 loss ∥ y − f W ( x ) ∥ 2 \left\|\mathbf{y}-\mathbf{f}^{\mathbf{W}}(\mathbf{x})\right\|^2 yfW(x)2 出现在等式右侧. 两边同时乘以-号, 将问题转化为使得负对数似然函数最小:

− log ⁡ p ( y ∣ f W ( x ) ) ∝ 1 2 σ 2 ∥ y − f W ( x ) ∥ 2 + log ⁡ σ 2 (3) -\log p\left(\mathbf{y} | \mathbf{f}^{\mathbf{W}}(\mathbf{x})\right) \propto\frac{1}{2 \sigma^{2}}\left\|\mathbf{y}-\mathbf{f}^{\mathbf{W}}(\mathbf{x})\right\|^{2}+\log \sigma^2 \tag{3} logp(yfW(x))2σ21yfW(x)2+logσ2(3)

当前, 预测值 f W ( x ) \mathbf{f}^{\mathbf{W}}(\mathbf{x}) fW(x) 与真值 y \mathbf{y} y 已知, 可以通过梯度下降的算法去寻找最终的 σ \sigma σ.

分类问题

分类问题思路一致, 推导还是看论文吧, 不抄了. 结果与回归一致.

Code

在实践中, 我们训练网络来预测对数方差 s : = log ⁡ σ 2 s:=\log \sigma^{2} s:=logσ2, 这样可以使得训练更稳定, 同时避免分母项为0, 同时指数映射也允许来回归没有约束的缩放值, 这里的 e x p ( − s ) exp(-s) exp(s) 可以被解析到正值, 给了方差一个有效值.

loss += torch.exp(-sem_uncertainty) * sem_loss + 0.5 * sem_uncertainty
loss += 0.5 * (torch.exp(-inst_uncertainty) * inst_loss + inst_uncertainty)
loss += 0.5 * (torch.exp(-depth_uncertainty) * depth_loss + depth_uncertainty)

https://github.com/oscarkey/multitask-learning

这个实现的太复杂, 而且不通用, 之后可能会改进成为一个model方便使用.

Reference

[1] 极大似然估计–百度百科

[2] 一文搞懂极大似然估计

[3] 贝叶斯深度学习-概述

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
多任务学习利用不确定性来加权损失用于场景几何和...... 多任务学习是一种机器学习方法,旨在通过同时学习多个相关的任务来提高模型的性能。在场景几何和...中,我们可以利用多任务学习来同时学习场景几何和...两个任务,并利用不确定性来加权损失函数。 不确定性是指模型对于不同任务的预测结果的置信度或可靠性。通过测量模型的不确定性,我们可以了解模型对于不同任务的自信程度,并根据其不确定性来决定在损失函数中的权重。 具体来说,在训练过程中,我们可以采用如下的多任务学习框架:首先,我们定义两个任务,即场景几何和...。然后,我们构建一个网络模型,该模型有两个分支,分别用于处理场景几何和...任务。每个分支都有自己的损失函数,用于衡量模型在相应任务上的性能。 在计算总体损失时,我们可以使用不确定性来加权每个任务的损失函数。一种常见的方法是使用模型的输出结果的方差或置信度来表示不确定性。如果模型对于某个任务有较高的置信度,我们可以将该任务的损失函数的权重设为较大值;相反,如果模型对于某个任务的置信度较低,我们可以将该任务的损失函数的权重设为较小值。 通过利用不确定性加权损失函数,我们可以让模型在训练过程中更加关注自身较为确定的预测任务,从而提高模型在这些任务上的性能。这种方法可以提高多任务学习的效果,使得模型能够更好地学习场景几何和...两个任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值