《小王爱迁移》系列之十六:探秘任务迁移 (CVPR 18)

《小王爱迁移》系列之十六:探秘任务迁移 (CVPR 18)

本次我们介绍刚刚在计算机视觉顶会CVPR 2018摘得最佳论文奖的文章:《Taskonomy: Disentangling Task Transfer Learning》。本文是继2017年《Open set domain adaptation》在ICCV摘得最佳论文第二名后,迁移学习在计算机视觉领域的又一次获奖。文章作者团队来自斯坦福大学和加州大学伯克利分校。文章题目其实有点难理解:Taskonomy是一个什么东西,它可以“disentangle”任务迁移学习?“Disentangle”这个词,中文有“解耦、分清、解脱”等意思。但我个人觉得都太抽象了,所以我给了一个更好的名字:“探秘”。

这样,文章的主题就基本上定了:探索任务迁移学习。从题目中我们也可以知道,既然要探索,就必然要做大量的科学实验,这也是科研的必经之路。因此,我们可以管中窥豹:本文通过做大量的实验,来揭示任务迁移学习中的一些现象。

这篇论文插图、表格太多,我们不一一列举。

Motivation

凡事都要从motivation而来。作者开篇就指出,诸如物体识别、深度估计、边缘检测等一些常见的计算机视觉任务,彼此之间都或多或少地有一些联系。比如,我们很清楚地知道曲面的法线和深度是相关的:它们是彼此的梯度。但与此同时,另一些任务我们却不清楚,例如,一个房间中的关键点检测和阴影是如何协同工作完成姿态估计的?

已有的相关工作均忽略了这些任务的关联性,而是单独地对各个任务进行建模。不利用任务之间的相关性,无疑是十分耗时和复杂的。即使是要在不同的任务之间进行迁移,由于不同任务的不同任务空间之间的联系尚不清楚,也无法实现简单有效的任务迁移。

本文就立足这一些,探索这些任务之间的可迁移性。作者用“structure”这个词来表示任务之间的联系。例如,一个任务是如何可以迁移到另一个任务上,就由这个结构给出。

从迁移学习的角度看,本文所研究的问题情境已经很清楚了:Domain相同,task不同,也就是 \mathcal{Y}_s \ne \mathcal{Y}_t

Method

文章的方法概括起来就叫做Taskonomy(Task taxonomy),这是一个计算图,它定义了任务之间的可迁移性。图中的节点表示任务,节点之间的边就表示迁移性,边的权重表示从一个任务迁移到另一个任务的可能表现。这个方法是文章的核心。它一共由下图所示的4个步骤构成。


这4个步骤从逻辑上非常好理解。首先我们要对不同任务进行建模,然后让它们两两之间进行迁移并获取迁移的表现。接着为了构建一个统一的字典,我们对这些迁移结果进行归一化。最后,我们构建可迁移图。

在迁移实验开始前,最重要的是,需要一个可用的超大型数据集,要包含不同的任务。然而目前没有。怎么办?很简单,作者构建了一个!这个数据集有从600个建筑物内拍摄的400万张图片!每张图片都针对不同的任务做了标注,也就是说都适用于每个任务。就问你怕不怕?单凭这一个数据集就足够发一篇文章了,更别说这只是实验基础!

1.针对目标的建模

这部分就是一个有监督学习,用的是编码-解码机制。目的是让神经网络针对特定的任务提取到强表征力的特征。

2.迁移学习建模

这部分是整个方法的基础。给定一张图片$I$,我们从上一步中学习到的特征表达表示为$E(I)$,那么迁移学习的目标就是要最小化以下损失:

\arg \min_\theta \mathbb{E}[L_t(D_\theta(E_s(I)),f_t(I))]

这个式子很好理解: D_\theta 是学习到的模型, f_t(I) 是ground truth, L_t 是损失函数。

这里作者考虑了以下几种情况:

首先是accessibility。用于迁移的网络不能太复杂,不然特征不具有可迁移性,会使问题难以继续。因此,作者选用了一个浅层的卷积网络,用少量的数据去训练。

然后是高阶的迁移。不同于简单地对一个source任务的一种特征表达的迁移,作者在这里考虑了高阶任务,即多个不同任务共同进行迁移。也就是我们在迁移学习中说的multi-source domain。如果有 k 阶,则需要迁移的任务就有 C^{|S|}_{k} 个。

最后是transitive transfer,就是可传递式的迁移。作者也考虑到了这一点,做 A \rightarrow B \rightarrow C 的迁移。不过文章说在实验中并没有发现传递迁移对效果的提升。

3.任务相似性标准化

这一步的目标很明确,就是构建一个迁移学习的相似度矩阵,从中我们可以很清楚地知道哪两个任务迁移效果最好。如何构建?我们本能地想到,可以把上一步中训练的损失函数拿来用。然而,不同任务下的损失函数不具有可比性,因此不能用。自然地,我们又想到了归一化,把所有的结果归一化到$[0,1]$之间。这也是通常用的办法。但是问题又来了,通常来说,神经网络的损失函数具有很大的震荡幅度,直接拿来用是不可行的。

作者提出了一种基于序列的方法,使得训练的表现和损失函数的值呈正相关。对于目标任务 t ,用矩阵 W_t 来表示可迁移到 t 的源域任务的表现。矩阵中的元素 w_{ij} 就表示:在同一个分出来的测试集上,源域 s_i 迁移到 t ,比 s_j 迁移到 t 的表现好的百分比。比如 s_1t 要比 s_2t15\% 。这个矩阵表示的是两两之间的比较,因此作者形象地把它叫做tournament matrix (锦标赛矩阵)

得到这个矩阵以后,还想知道到底一个源域比另一个要好多少,也就是说,打败了对方多少次?作者又做了一些小操作,比较简单。详细步骤可以参考原文。

最后作者对得到的新矩阵进行了特征分解,则 s_it 的迁移表现就是第 i 个特征向量。把所有目标域 t 的特征向量组合起来就得到了一个相似度矩阵。这个矩阵是归一化过的。

这个方法不是作者发明的,是之前有人发明的,叫做Analytic Hierarchy Process。

4.计算可迁移图

得到任务相似度矩阵后,我们的事情就简单了。我们需要在这个矩阵里找一条路,选择从多个源域到 t 的这条路上,迁移表现最好。这可以被看作是一个子图选择 (subgraph selection)的问题。在这个图中,任务是节点,迁移性和迁移效果是边。

作者使用了之前的Boolean Integer Programming的方法来解决来个寻找子图的问题。具体过程不再详细描述。

Experiments

实验部分是本文的重点。作者收集的数据集共包含26个计算机视觉的通用任务。在这些任务上,作者进行源领域训练、单一迁移、高阶迁移,一共构建了大约3000个学习任务,一共需要47886个GPU小时来进行计算。读到这里,我们基本可以洗洗睡了:有钱真的可以为所欲为!

实验所用的所有编码器都是相同的,都基于ResNet-50,去掉了pooling层。所有的迁移网络用的都是包含2个卷积的网络。损失函数和解码器就相应地根据不同任务进行调整。调整方式可见文章。

作者在一部分数据上进行实验,把这部分数据进行了如下的划分:训练集120k,验证集16k,测试集17k。

主要进行了以下方面的实验:

目标网络的性能

作者首先比较了不迁移情况下,目标网络的性能,也就是方法部分中的第1步。对比两个最近的方法可以看出,文章的网络性能不错。

领域相似度情况

作者验证了根据构建出的相似度矩阵进行相似度挖掘的实验,对不同的任务都画出了迁移性能图。从图中就可以清楚地知道哪些任务是对目标任务的迁移效果好坏。

作者又进一步对这些结果进行了更好的图示。

新任务上的泛化能力

将一个任务作为目标任务,其他25个任务作为源领域任务,考察模型在新任务上的泛化能力。实现效果显示这种迁移会比当前一些最好的非迁移深度方法还要好。从中我们得出的结论是,如果能够选择好源域任务,那么通常来说迁移学习的表现都要比直接从目标领域训练要好

模型的扩展性

另外,作者还在MIT Place和ImageNet两个大型图像数据集上测试了方法的可扩展性。并且根据迁移效果,构建了迁移树用于进一步分析迁移表现。

详细的实验结果在文章的官网 taskonomy.vision/ 中有介绍。

局限性

作者还在文章花费很多篇幅讨论了自己方法的局限性。主要有以下几点:

方法可能依赖于特定的数据和模型。尽管作者在不同的大型数据集上做了大量实验,作者依然担心,方法可能会依赖于特定的数据和网络。这么实诚的人不多了

任务的通用性。作者只是在一些认为定义的任务上进行了实验。但有没有可能有更复杂更高级的任务?

任务空间限制。可能还需要更多的实验。

迁移到非视觉和机器人任务。这是一个值得考虑的问题。

终身学习。此方法目前还是离线的。如何实现在线终身学习?

总结

本文最大的亮点是,构建了非常多的迁移学习任务,详尽地探索了不同任务之间进行迁移的效果,为以后的研究提供了宝贵的基础。方法比较朴素,但是实现完备,很值得我们学习。作者在探索之外,还专门提供了一个数据集,这种精神值得钦佩!我们在今后的研究中,也要学习这种实验精神,多做,少说,慢慢积累。

Reference

原paper链接:taskonomy.stanford.edu/


========================

[作者简介]王晋东(不在家),中国科学院计算技术研究所博士生,目前研究方向为机器学习、迁移学习、人工智能等。作者联系方式:微博@秦汉日记 ,个人网站Jindong Wang is Here

=================

更多《小王爱迁移》系列文章:

《小王爱迁移》系列之零:迁移学习领域著名学者和研究机构

《小王爱迁移》系列之一:迁移成分分析(TCA)方法简介

《小王爱迁移》系列之二:联合分布适配(JDA)方法简介

《小王爱迁移》系列之三:深度神经网络的可迁移性

《小王爱迁移》系列之四:深度网络如何进行迁移学习(DaNN、DDC、DAN)

《小王爱迁移》系列之五:测地线流式核方法(GFK)

《小王爱迁移》系列之六:学习迁移(Learning To Transfer)

《小王爱迁移》系列之七:负迁移(Negative Transfer)

《小王爱迁移》系列之八:深度迁移学习文章解读

《小王爱迁移》系列之九:开放集迁移学习(Open Set Domain Adaptation)

《小王爱迁移》系列之十:张量迁移学习(tensor unsupervised domain adaptation)

《小王爱迁移》系列之十一:选择性对抗迁移学习(Selective Adversarial Network)

《小王爱迁移》系列之十二:新年新气象-重新整理的迁移学习资源仓库

《小王爱迁移》系列之十三:在线迁移学习(online transfer learning)

《小王爱迁移》系列之十四:用于部分迁移学习的深度加权对抗网络

《迁移学习简明手册》发布啦!

《小王爱迁移》系列之十五:自动选择源域的迁移学习方法(SSFTL)

《小王爱迁移》系列之十六:探秘任务迁移学习 (CVPR 2018最佳论文解读)

《小王爱迁移》系列之十七:深度迁移度量学习

《小王爱迁移》系列之十八:联邦迁移学习

《小王爱迁移》系列之十九:基于条件对抗网络的领域自适应

《小王爱迁移》系列之二十:深度迁移学习用于时间序列分类

小王爱迁移》系列之二十一:最大分类器差异的领域自适应(MCD_DA)

《小王爱迁移》系列之二十二:Learn What and Where to Transfer

编辑于 2019-09-17

文章被以下专栏收录