利用视觉任务之间的关联性避免重复学习,冗余数据的收集和计算。
Taskonomy通过量化不同视觉任务之间的关联、并利用这些关联最优化学习策略。(如果两视觉任务A,B之间具有关联性,那么我们在A中学习到的表达理应可以为解决任务B 提供有效的统计信息)
文章通过transfer learning计算了26个不同视觉任务之间的一阶以及高阶的关联。(?如何通过迁移学习的方式计算一节高阶的)
Method
符号&公式:
gamma:有限的监督预算
S:起始任务(source tasks)
T:想要最大化表达的目标任务(target tasks)
V=T cup S :任务字典(target dictionary)
T - T∩S:“target only”
T∩S:既可以作目标任务也可以作为source tasks使用
S - T∩S:“source only”
将一个任务t更正式地表示为函数f_t的形式(在f_t的作用下将图片I映射为f_t(I))
数据集:
创建了一个包含400w张从600个建筑中采集而来的室内场景图(每张图片均有26个不同视觉任务的GT,通过编程的方式而非手工标注)
Step 1:Task-specific Modeling
对于每一个encoder-decoder(simplify,encoder可理解为classification中前面的卷积提取特征的部分,decoder理解为后面的FC层输出分类结果部分)选用相似的神经网络结构,encoder均为ResNet50结构,decoder由于任务的不同异界output的纬度不同所以不尽相同(decoder的层数远小于encoder的)。
Step 2:Transfer Modeling
一阶关联(迁移):对于每一对source task s 和target task t,通过冻结在s上已经训练好的encoder参数,将在s上学习到的表达作为输入来进一步训练目标任务t ,基于encoder的输出学习一个浅层的readout function。
更具关联的s会为t提供更好的统计信息,达到更好的训练效果,而关联性较小的s则不具有这种表现。
故而作者认为基于s的迁移学习在t任务中的表现效果可以很好地代表s之于t的关联性。
高阶关联(迁移):考虑到多个任务之间可能具有互补性,结合多个起始任务的representation可能对于目标任务有着更好的表达。
作者考虑了高阶迁移,和一阶的实现细节相似,但是在输入时把多个起始任务的表达作为输入。
但是因为直接的高阶迁移任务的组合数量太大,作者通过定向搜索的方式,对于目标任务迁移阶数k小于等于5的,选取5个一阶时表现最好的起始任务和他们所有的k阶组合作为目标任务的输入,对于k大于等于5的,选取一阶表现前k的起始任务作为输入。
关于过度迁移和直接迁移的讨论:
作者通过实验发现过渡迁移(srightarrow t_1rightarrow t_2先在s上做迁移学习,再在t_1上)和直接迁移(arightarrow t_2,这里的a暂时理解为s与t_1的组合)在几乎所有的情况下有着相同的表现,因此在寻找最优迁移路径时,作者不考虑高阶(即大于一阶的)迁移的方式。
Step 3:利用层次分析法的顺序标准化
Step 4:BIP(Binary Integer Programming)最优化
现在要基于上述求得的关联矩阵利用最少的资源最有效地学习到一组我们感兴趣的任务。
可以想象成一个选择子图的问题:即选择一些任务作为起始任务(从零开始学习),剩下的任务通过少量的数据迁移学习得到,具体迁移学习的策略由所选择的子图的边决定(对于一条有向边,其实点为我们的起始任务,终点为要进行迁移的目标任务)。x可以假想为0,1矩阵(其中若存在从i到j的路径,则x_{ij}=1)
未完待续。。。