**
Taskonomy : Distangling Task Transfer Learning 阅读笔记
**
2019.6.30 论文阅读
主题:能有效测量并利用视觉任务之间的关联来避免重复学习,从而用更少的数据学习我们感兴趣的一组任务。
Taskonomy是一项量化不同视觉任务之间关联、并利用这些关联来最优化学习策略的研究。如果两个视觉任务A、B具有关联性,那么在任务A中习得的representations理应可为解决任务B提供有效的统计信息 。由此我们通过迁移学习计算了26个不同视觉任务之间的一阶以及高阶关联。如图一,如果有预测法线的网络和预测遮挡边缘测试的网络,我们可以通过结合两个网络的representations来快速通过少量数据解决Reshading和点匹配 (Point matching)。基于这些关联,我们利用BIP (Binary Integer Programming) 求得对于一组我们感兴趣的任务,如何去最优分配训练数据量。 比如,如果想最高效地解决10个问题,利用Taskonomy提供的学习策略可以减少2/3的训练数据量。
方法概括:
简单概括,方法分为两个大阶段,四个小步。第一大阶段涉及前三小步,我们要量化不同视觉任务之间的关联,并将任务关联表达成一个affinity matrix(关联矩阵)。第二大阶段,也就是最后一步,我们对求得的affinity matrix进行最优化,求得如何最高效地去学习一组任务。这个最高效的策略会由一个指向图 (directed graph) 来表示,我们称此指向图为Taskonomy。词语上Taskonomy是Task (任务) 和Taxonomy (分类论) 的合并简称。
方法细节:
第一步:从零学习
基本就是普通的分别训练常见的计算机视觉的任务
第二步:迁移学习
如上图所示,对于一个起始任务
s
∈
S
s\in\mathbb S
s∈S和一个目标任务
t
∈
T
t\in\mathbb T
t∈T ,我们将以
s
s
s的representation作为输入来学习 [公式] 。我们将freeze任务
s
s
s的encoder 参数,并基于encoder的输出 (representations) 学习一个浅层神经网络read out function。严谨来讲,如果我们用
E
s
E_s
Es 表示
s
s
s 的encoder,
f
t
f_t
ft 表示
t
t
t 的标注,
L
t
L_t
Lt 表示
t
t
t 的loss函数,
I
∈
D
I\in\mathbb D
I∈D 来表示图片和迁移训练集,
D
D
D 表示要迁移学习的浅层神经网络,学习目标为:
D
s
−
>
t
:
=
arg
min
E
I
∈
D
[
L
t
(
D
θ
(
E
s
(
I
)
)
θ
,
f
t
(
I
)
]
D_{{\rm{s}} - > t} : = \arg \mathop {\min E_{I \in D} [L_t (D_\theta (E_{\rm{s}} (I))}\limits_\theta ,{\rm{f}}_t (I)]
Ds−>t:=argθminEI∈D[Lt(Dθ(Es(I)),ft(I)]
上述迁移代表了任务之间一对一的关联,我们称其为一阶关联。如下图,几个任务之间可能具有互补性,结合几个起始任务的representations会对解决目标任务起到帮助。因此,我们也研究了任务之间多对一的关联,我们称其问高阶关联。在这种情况下,我们将几个起始任务的representation结合起来当作目标任务的输入,其余细节跟上段类似。
因为高阶的任务组合数量太大,我们基于一阶表现选择了一部分的组合进行迁移学习。对于小于五阶的高阶,我们根据一阶的表现,将前五的所有组合作为输入。对于n>5阶,我们选择结合一阶表现前n的起始任务作为输入。
第三步:Ordinal Normalization
这一步的目标为用一个 affinity matrix 量化任务之间的关联。虽然从上步习得的迁移网络中我们获得了许多的loss值
L
s
−
>
t
L_{{\rm{s}} - > t}
Ls−>t ,但因这些loss值来自于不同的loss 函数,它们的值域有很大差别。如果我们把这些loss值直接放入一个矩阵(上图左,纵轴为目标任务、横轴为起始任务),那么这个矩阵内的值及其不均匀,并不能有效反应任务之间的关联。同时,简单的线性规范化也并不能解决问题,因为任务的loss值和表现并不构成线性关系(0.01的
l
2
l_2
l2 loss并不代表其表现两倍好于0.02的loss)。由此,我们采用Ordinal Normalization(基于序数的规范化)来将loss值转换为关联度。该方法基于运筹学中的 AHP (Analytic Hierarchy Process)。概括来讲,affinity matrix中的第
(
i
,
j
)
(i,j)
(i,j) 个值为利用第
i
i
i个起始任务迁移后,其网络有多大的几率表现好于用第
j
j
j 个网络(我们在下文称其为
i
i
i 对于
j
j
j 的胜率)。
至此第一大阶段完结,我们通过上述affinity matrix量化了任务之间的关联性。
第四步:BIP (Binary Integer Programming) 最优化
最后一步,我们要基于affinity matrix求得如何最有效地学习一组我们感兴趣的任务。我们可以这个问题想象成一个subgraph selection的问题:选择一些任务从零学习,剩下的任务用少量数据进行迁移学习,具体迁移学习的策略由subgraph中的edge来决定(对一条directed edge,起始点代表我们从零学习的一个任务,终点代表要进行迁移的目标任务)。基于此,我们可以通过解如下BIP最优化问题来得到最优解:
具体看作者链接,很详细
总结:
在Taskonomy项目里,我们的目标是着眼于一组任务,并利用任务之间的关联性减少总体数据使用量。为此,我们量化了视觉任务的关联性,并基于求得的affinity matrix最优化得到如何分配任务监督数据量。实验表明,视觉任务之间确实存在很强的关联性,我们能通过更少的数据很好地解决一组任务。现在大家已经可以去Github来使用我们的任务词典:StanfordVL/taskonomy。