天天看点

Taskonomy : Distangling Task Transfer Learning2019.6.30 论文阅读

**

Taskonomy : Distangling Task Transfer Learning 阅读笔记

**

2019.6.30 论文阅读

作者链接:https://zhuanlan.zhihu.com/p/38425434

主题:能有效测量并利用视觉任务之间的关联来避免重复学习,从而用更少的数据学习我们感兴趣的一组任务。

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

Taskonomy : Distangling Task Transfer Learning2019.6.30 论文阅读

这一步的目标为用一个 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。

继续阅读