论文地址:Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics
1. 解决了什么问题?
多任务学习从一个共享的表征学习多个目标函数,能提升学习效率和预测的准确率。场景理解算法需要同时理解场景的几何和语义信息,但回归和分类算法用到的单位和尺度各不相同。
以前的方法将各项损失简单地加权求和,同时学习多个任务,各损失的权重要么通过均匀采样得到,要么需要手动调节。多任务学习的表现好坏高度取决于各任务损失的相对权重。调节这些权重非常困难,代价比较高。作者发现,各任务的最优权重取决于测量的尺度和任务噪声的大小。
2. 提出了什么方法?
提出了一个多任务学习方法,它考虑了各个任务的“同方差不确定性”来对各项损失函数做加权。这使我们能同时学习分类和回归任务中不同尺度的权重。模型能从单目输入图像中学习回归各像素的深度信息、语义和实例分割。本文中,“同方差不确定性”可以理解为对各任务的加权,并推导出多任务损失函数,平衡回归和分类损失。本文方法应用于三个任务上:语义分割、实例分割和像素深度信息。将这些任务结合于同一个模型中,确保各任务的输出是一致的,从而降低计算量。
下图中,将多个回归和分类损失函数结合为一个损失,实现多任务学习。输入是一张 RGB 图像,输出像素的语义类别和实例类别,及各像素的深度信息。多任务学习能提升单任务模型的准确率,因为其它任务的信息能辅助改善当前任务的泛化能力。
多任务学习从多个目标去优化模型,最简单的方式就是对每个任务的损失线性加权求和:
L
t
o
t
a
l
=
∑
i
w
i
L
i
L_{total}=\sum_i w_i L_i
Ltotal=i∑wiLi
但这个方式有一些问题。模型表现对于权重
w
i
w_i
wi值的选取很敏感,调参的代价高昂。下图 (a) 展示了语义分割和深度回归的学习,(b) 是实例分割和深度回归任务的学习。所有的模型学习率都是
0.01
0.01
0.01,使用上述等式计算。下图两边代表了各自任务训练的模型,曲线反映了权重
w
i
w_i
wi变化带来的影响。我们可以看到,某些最优权重值能让多任务网络的表现超过单任务训练的网络(单任务模型的表现可见于图的两边:
w
=
0
,
w
=
1
w=0,w=1
w=0,w=1)。
2.1 Homoscedastic uncertainty as task-dependent uncertainty
在 Bayesian 模型中,可以对两类不确定性建模。
- 认知不确定性:捕捉模型因为数据匮乏而不确定的信息,可以通过增加数据来解释。
- 任意不确定性:捕捉数据无法解释的不确定信息,可以通过观测所有能带来精度提升的可解释变量来解释。
任意不确定性可以分为两类:
- 数据依赖或异方差不确定性依赖输入数据,作为模型的输出而预测。
- 任务依赖或同方差不确定性不依赖于输入数据。它不是模型的输出,而是一种数量,它对所有的输入数据保持不变,随着任务的不同而变化。
在多任务学习中,任务不确定性能捕捉各任务间的相对置信度,反映回归或分类任务内在的不确定性。它也由任务表征或测量单位决定。作者提出使用同方差不确定性作为多任务学习损失加权的基础。
2.2 Multi-task likelihoods
作者使用同方差不确定性最大化高斯似然,推导出一个多任务损失函数。输入是
x
\mathbf{x}
x,网络权重是
W
\mathbf{W}
W,输出是
f
W
(
x
)
\mathbf{f^W(x)}
fW(x)。定义下述概率模型。
对于回归任务,使用高斯似然定义,均值由模型的输出给定,
σ
\sigma
σ是个标量,代表观测噪声:
p
(
y
∣
f
W
(
x
)
)
=
N
(
f
W
(
x
)
,
σ
2
)
p(\mathbf{y|f^W(x)})=\mathcal{N}(\mathbf{f^W(x)},\sigma^2)
p(y∣fW(x))=N(fW(x),σ2)
对于分类任务,使用 Softmax 函数来压缩模型的输出,然后从该概率向量中采样:
p
(
y
∣
f
W
(
x
)
)
=
Softmax
(
f
W
(
x
)
)
p(\mathbf{y|f^W(x)})=\text{Softmax}(\mathbf{f^W(x)})
p(y∣fW(x))=Softmax(fW(x))
如果模型的输出有多项,给出似然的定义来对输出做因式分解。
p
(
y
1
,
.
.
.
,
y
K
∣
f
W
(
x
)
)
=
p
(
y
1
∣
f
W
(
x
)
)
,
.
.
.
,
p
(
y
K
∣
f
W
(
x
)
)
p\left(\mathbf{y}_1,...,\mathbf{y}_K|\mathbf{f^W(x)}\right)=p\left(\mathbf{y}_1|\mathbf{f^W(x)}\right),...,p\left(\mathbf{y}_K | \mathbf{f^W(x)}\right)
p(y1,...,yK∣fW(x))=p(y1∣fW(x)),...,p(yK∣fW(x))
y
1
,
.
.
.
,
y
K
\mathbf{y}_1,...,\mathbf{y}_K
y1,...,yK是模型的输出,如语义分割、深度回归,它们是相互独立的事件。
推理最大似然时,最大化模型的对数似然方程。对于高斯分布,回归的对数似然方程写作:
log
p
(
y
∣
f
W
(
x
)
)
∝
−
1
2
σ
2
∥
y
−
f
W
(
x
)
∥
2
−
log
σ
\log p\left(\mathbf{y|f^W(x)}\right) \propto -\frac{1}{2\sigma^2}\left\| \mathbf{y-f^W(x)} \right\|^2 - \log \sigma
logp(y∣fW(x))∝−2σ21
y−fW(x)
2−logσ
σ
\sigma
σ是模型的观测噪声参数,捕捉输出包含了多少噪声。然后关于模型参数
W
\mathbf{W}
W和观测噪声
σ
\sigma
σ最大化该对数似然方程。
假设模型输出包括了两个向量
y
1
\mathbf{y}_1
y1和
y
2
\mathbf{y}_2
y2。每个都服从高斯分布:
p
(
y
1
,
y
2
∣
f
W
(
x
)
)
=
p
(
y
1
∣
f
W
(
x
)
)
⋅
p
(
y
2
∣
f
W
(
x
)
)
=
N
(
y
1
;
f
W
(
x
)
,
σ
1
2
)
⋅
N
(
y
2
;
f
W
(
x
)
,
σ
2
2
)
\begin{align} p(\mathbf{y}_1,\mathbf{y}_2 | \mathbf{f^W(x)})=& p(\mathbf{y}_1|\mathbf{f^W(x)}) \cdot p(\mathbf{y}_2|\mathbf{f^W(x)})\nonumber \\ =& \mathcal{N}(\mathbf{y}_1;\mathbf{f^W(x)},\sigma_1^2)\cdot \mathcal{N}(\mathbf{y}_2;\mathbf{f^W(x)},\sigma_2^2)\nonumber\\ \end{align}
p(y1,y2∣fW(x))==p(y1∣fW(x))⋅p(y2∣fW(x))N(y1;fW(x),σ12)⋅N(y2;fW(x),σ22)
最小化多输出模型的目标损失函数
L
(
W
,
σ
1
,
σ
2
)
\mathcal{L}(\mathbf{W},\sigma_1, \sigma_2)
L(W,σ1,σ2):
=
−
log
p
(
y
1
,
y
2
∣
f
W
(
x
)
)
∝
1
2
σ
1
2
∥
y
1
−
f
W
(
x
)
∥
2
+
1
2
σ
2
2
∥
y
2
−
f
W
(
x
)
∥
2
+
log
σ
1
σ
2
=
1
2
σ
1
2
L
1
(
W
)
+
1
2
σ
2
2
L
2
(
W
)
+
log
σ
1
σ
2
\begin{align} =& -\log p(\mathbf{y}_1, \mathbf{y}_2|\mathbf{f^W(x)})\nonumber\\ \propto& \frac{1}{2\sigma_1^2}\left\|\mathbf{y}_1 - \mathbf{f^W(x)}\right\|^2 + \frac{1}{2\sigma_2^2}\left\|\mathbf{y}_2 - \mathbf{f^W(x)}\right\|^2 + \log \sigma_1 \sigma_2 \nonumber \\ =& \frac{1}{2\sigma_1^2}\mathcal{L}_1(\mathbf{W}) + \frac{1}{2\sigma_2^2}\mathcal{L}_2(\mathbf{W}) +\log \sigma_1 \sigma_2 \nonumber \end{align}
=∝=−logp(y1,y2∣fW(x))2σ121
y1−fW(x)
2+2σ221
y2−fW(x)
2+logσ1σ22σ121L1(W)+2σ221L2(W)+logσ1σ2
上式最后一行,对于第一项输出的损失,我们写作
L
1
(
W
)
=
∥
y
1
−
f
W
(
x
)
∥
2
\mathcal{L}_1(\mathbf{W})=\left\|\mathbf{y}_1 - \mathbf{f^W(x)}\right\|^2
L1(W)=
y1−fW(x)
2,第二项损失类似。
关于
σ
1
\sigma_1
σ1和
σ
2
\sigma_2
σ2最小化该目标函数,基于数据自适应地学习损失
L
1
(
W
)
\mathcal{L}_1(\mathbf{W})
L1(W)和
L
2
(
W
)
\mathcal{L}_2(\mathbf{W})
L2(W)。当
σ
1
\sigma_1
σ1(变量
y
1
\mathbf{y}_1
y1的噪声参数)变大时,
L
1
(
W
)
\mathcal{L}_1(\mathbf{W})
L1(W)会变小。当噪声
σ
1
,
σ
2
\sigma_1,\sigma_2
σ1,σ2变小时,相应的损失会变大。最后一项起到正则作用,确保噪声不会变得特别大。
该构造可以扩展到多回归任务的输出,但是分类任务的扩展更加有意思。分类似然用 softmax 函数对模型的输出做缩放:
p
(
y
∣
f
W
(
x
)
,
σ
)
=
Softmax
(
1
σ
2
f
W
(
x
)
)
p(\mathbf{y|f^W(x)},\sigma)=\text{Softmax}(\frac{1}{\sigma^2} \mathbf{f^W(x)})
p(y∣fW(x),σ)=Softmax(σ21fW(x))
σ
\sigma
σ是一个大于
0
0
0的标量。它可以看作为 Boltzmann 分布,使用
σ
2
\sigma^2
σ2对输入做缩放。
σ
2
\sigma^2
σ2可以是固定的,也可学习得到,值的大小决定了离散分布的平滑程度。这和不确定性有关系,如熵里面所计算的。该输出的对数似然写作:
log
p
(
y
=
c
∣
f
W
(
x
)
,
σ
)
=
1
σ
2
f
c
W
(
x
)
−
log
∑
c
′
exp
(
1
σ
2
f
c
′
W
(
x
)
)
\log p(\mathbf{y}=c|\mathbf{f^W(x)},\sigma)=\frac{1}{\sigma^2} f_c^{\mathbf{W}}(\mathbf{x})-\log \sum_{c'}\exp(\frac{1}{\sigma^2} f_{c'}^{\mathbf{W}}(\mathbf{x}))
logp(y=c∣fW(x),σ)=σ21fcW(x)−logc′∑exp(σ21fc′W(x))
f
c
W
(
x
)
f_c^{\mathbf{W}}(\mathbf{x})
fcW(x)是向量
f
W
(
x
)
f^{\mathbf{W}}(\mathbf{x})
fW(x)的第
c
c
c个元素。
假设模型的多个输出是由一个连续输出
y
1
\mathbf{y}_1
y1和离散输出
y
2
\mathbf{y}_2
y2组成,分别用高斯似然和 softmax 似然建模。该联合损失
L
(
W
,
σ
1
,
σ
2
)
\mathcal{L}(\mathbf{W},\sigma_1,\sigma_2)
L(W,σ1,σ2)定义为:
=
−
log
p
(
y
1
,
y
2
=
c
∣
f
W
(
x
)
)
=
−
log
N
(
y
1
;
f
W
(
x
)
,
σ
1
2
)
⋅
Softmax
(
y
2
=
c
;
f
W
(
x
)
,
σ
2
)
=
1
2
σ
1
2
∥
y
1
−
f
W
(
x
)
∥
2
+
log
σ
1
−
log
p
(
y
2
=
c
∣
f
W
(
x
)
,
σ
2
)
=
1
2
σ
1
2
L
1
(
W
)
+
1
σ
2
2
L
2
(
W
)
+
log
σ
1
+
log
∑
c
′
exp
(
1
σ
2
2
f
c
′
W
(
x
)
)
[
∑
c
′
exp
(
f
c
′
W
(
x
)
)
]
1
σ
2
2
≈
1
2
σ
1
2
L
1
(
W
)
+
1
σ
2
2
L
2
(
W
)
+
log
σ
1
+
log
σ
2
\begin{align} &=-\log p(\mathbf{y}_1,\mathbf{y}_2=c|\mathbf{f^W(x)})\nonumber \\ &=-\log \mathcal{N}(\mathbf{y}_1;\mathbf{f^W(x)},\sigma_1^2)\cdot \text{Softmax}(\mathbf{y}_2=c;\mathbf{f^W(x)}, \sigma_2)\nonumber \\ &=\frac{1}{2\sigma_1^2}\left\|\mathbf{y}_1-\mathbf{f^W(x)}\right\|^2 + \log \sigma_1 - \log p(\mathbf{y}_2=c|\mathbf{f^W(x)},\sigma_2)\nonumber \\ &=\frac{1}{2\sigma_1^2}\mathcal{L}_1(\mathbf{W}) + \frac{1}{\sigma_2^2}\mathcal{L}_2(\mathbf{W}) + \log \sigma_1 + \log \frac{\sum_{c'}\exp(\frac{1}{\sigma_2^2}f_{c'}^{\mathbf{W}}(\mathbf{x}))}{\left[\sum_{c'}\exp(f_{c'}^{\mathbf{W}}(\mathbf{x}))\right]^{\frac{1}{\sigma_2^2}}}\nonumber \\ &\approx \frac{1}{2\sigma_1^2}\mathcal{L}_1(\mathbf{W})+\frac{1}{\sigma_2^2}\mathcal{L}_2(\mathbf{W})+\log \sigma_1 + \log \sigma_2\nonumber \end{align}
=−logp(y1,y2=c∣fW(x))=−logN(y1;fW(x),σ12)⋅Softmax(y2=c;fW(x),σ2)=2σ121
y1−fW(x)
2+logσ1−logp(y2=c∣fW(x),σ2)=2σ121L1(W)+σ221L2(W)+logσ1+log[∑c′exp(fc′W(x))]σ221∑c′exp(σ221fc′W(x))≈2σ121L1(W)+σ221L2(W)+logσ1+logσ2
这里,
L
1
(
W
)
=
∥
y
1
−
f
W
(
x
)
∥
2
\mathcal{L}_1(\mathbf{W})=\left\|\mathbf{y}_1 - \mathbf{f^W(x)}\right\|^2
L1(W)=
y1−fW(x)
2是
y
1
\mathbf{y}_1
y1的欧式损失,
L
2
(
W
)
=
−
log
Softmax
(
y
2
,
f
W
(
x
)
)
=
−
log
exp
(
f
c
W
(
x
)
)
∑
c
′
exp
(
f
c
′
W
(
x
)
)
\mathcal{L}_2(\mathbf{W})=-\log \text{Softmax}(\mathbf{y}_2, \mathbf{f^W(x)})=-\log \frac{\exp(f_c^{\mathbf{W}}(\mathbf{x}))}{\sum_{c'}\exp (f_{c'}^\mathbf{W}(\mathbf{x}))}
L2(W)=−logSoftmax(y2,fW(x))=−log∑c′exp(fc′W(x))exp(fcW(x))是
y
2
\mathbf{y}_2
y2的交叉熵损失,关于
W
\mathbf{W}
W和
σ
1
,
σ
2
\sigma_1,\sigma_2
σ1,σ2进行优化。在最后一步变形时,作者引入了一个假设,即当
σ
2
→
1
\sigma_2\rightarrow 1
σ2→1时
1
σ
2
∑
c
′
exp
(
1
σ
2
2
f
c
′
W
(
x
)
)
≈
[
∑
c
′
exp
(
f
c
′
W
(
x
)
)
]
1
σ
2
2
\frac{1}{\sigma_2}\sum_{c'} \exp(\frac{1}{\sigma_2^2} f_{c'}^{\mathbf{W}}(\mathbf{x}))\approx \left[\sum_{c'}\exp(f_{c'}^{\mathbf{W}}(\mathbf{x}))\right]^{\frac{1}{\sigma_2^2}}
σ21∑c′exp(σ221fc′W(x))≈[∑c′exp(fc′W(x))]σ221。这样就可以简化待优化的目标函数,并能改善结果。
最后一个目标函数可看作为学习损失间的权重。
σ
2
\sigma_2
σ2越大会降低损失
L
2
(
W
)
\mathcal{L}_2(\mathbf{W})
L2(W)的贡献,反之则会增大。
该组成可以扩展到其它任意的离散和连续损失函数组合,系统地学习每项损失的相对权重。该损失是平滑可微的,保证了任务权重不会收敛到
0
0
0。而使用简单的线性加权求和会造成权重快速收敛于
0
0
0。
在实际操作中,训练网络来预测 log variance,
s
:
=
log
σ
2
s:=\log \sigma^2
s:=logσ2。这样数值更加稳定,比直接回归
σ
2
\sigma^2
σ2好,避免了除数为
0
0
0的情况。
exp
\exp
exp使我们可以回归不受约束的标量值,
exp
(
−
s
)
\exp(-s)
exp(−s)保证了数值有效,一直是正数。
2.3 Scene Understanding Model
为了理解语义和几何信息,提出了一个能学习像素级回归和分类的网络。该网络是一个卷积层组成的 encoder-decoder。它包括一组卷积 encoders 组成,输出共享表征,后面是每个任务的卷积 decoder。
Encoder 目的是从相关任务中学习,输出富含信息的特征。该 encoder 基于语义分割框架 DeepLabV3。特征提取器使用的是 ResNet101 和一个增加上下文感知的 ASPP 模块。在该 encoder 中使用了空洞卷积,特征图是对原输入图像做 8 倍亚采样得到。
然后对于每个任务,划分单独的 decoders。Decoder 目的是从共享特征中学习映射到输出结果。每个 decoder 包括一个
3
×
3
3\times 3
3×3卷积层,输出特征大小是
256
256
256,然后是一个
1
×
1
1\times 1
1×1卷积层回归任务的输出。
语义分割
使用交叉熵损失学习各像素的类别概率,在每个 mini-batch 内计算每个像素语义类别的损失均值。
实例分割
判断一个像素归属哪个实例最直接的方法就是计算它和实例中心点的关系。使用回归方法来做实例分割。[28] 使用目标各部分的 Hough 投票来识别实例。本文扩展了这个想法,使用每个像素点的投票。对于每个像素坐标
c
n
c_n
cn,学习一个实例向量
x
^
n
\hat{x}_n
x^n,它指向像素所属实例的中心点
i
n
i_n
in,于是
i
n
=
x
^
n
+
c
n
i_n=\hat{x}_n+c_n
in=x^n+cn。使用
L
1
L_1
L1损失训练回归任务,ground-truth 标签是
x
n
x_n
xn,
N
I
N_I
NI是 mini-batch 内所有像素标签的个数:
L
I
n
s
t
a
n
c
e
=
1
∣
N
I
∣
∑
N
I
∥
x
n
−
x
^
n
∥
1
\mathcal{L}_{Instance}=\frac{1}{|N_I|}\sum_{N_I}\left\|x_n-\hat{x}_n\right\|_1
LInstance=∣NI∣1∑NI∥xn−x^n∥1。
实例分割最难的地方在于实例 mask 因为遮挡造成的撕裂。下图证明本方法可以应付这些问题,像素可以利用几何信息投票给它们所属的实例中心。为了获得每个实例的分割,需要预测实例的中心点
i
^
n
\hat{i}_n
i^n。本文将预测实例向量
x
^
n
\hat{x}_n
x^n作为 Hough 参数空间的投票,使用聚类算法找出实例的中心点。OPTICS 是一个基于密度的聚类算法,能够识别出任意个数、密度不同的聚类。它不像 k-means 算法一样假设聚类的个数,它也不像 discretized binning 算法假设实例的大小或密度。通过 OPTICS,将
c
n
+
x
^
n
c_n+\hat{x}_n
cn+x^n点聚类为若干个预测实例
i
^
n
\hat{i}_n
i^n。然后根据像素点
p
n
p_n
pn的预测实例向量(
c
n
+
x
^
n
c_n+\hat{x}_n
cn+x^n),分配给距离它最近的实例。
深度回归
使用 L 1 L_1 L1损失训练: L D e p t h = 1 ∣ N D ∣ ∑ N D ∥ d n − d ^ n ∥ 1 \mathcal{L}_{Depth}=\frac{1}{|N_D|}\sum_{N_D} \left\|d_n-\hat{d}_n\right\|_1 LDepth=∣ND∣1∑ND dn−d^n 1。模型预测 inverse depth d ^ n \hat{d}_n d^n,因为它能表示无穷远的距离的点(如天空)。我们从 RGBD 传感器或双目相机或的 inverse depth 标签。若像素没有 inverse depth 标签,则损失计算时忽略。