极简笔记 Taskonomy: Disentangling Task Transfer Learning
极简笔记 Taskonomy: Disentangling Task Transfer Learning
论文地址:https://arxiv.org/abs/1804.08328
本文是CVPR2018 best paper,核心是提出了一种计算不同任务相似性的方法,以及利用不同任务相似性,在少量训练数据条件下进行多任务组合学习的分配方法。
文章的终极目标,是通过计算任务相似性,进一步计算选取(不是手动设计)针对目标任务的multi-task组合进行训练,并实现以少量数据尽可能接近fully supervised learning性能。
该计算流程主要分为4个步骤,在介绍算法流程之前再做一些背景和符号介绍。我们现在有一堆任务集合,可以划分为两个集合:源任务集合表示可以从零开始训练的任务(样本太少就不能从零训练了),和目标任务集合表示我们感兴趣的任务。两个集合是有重叠的。称为任务词典,也就是手头上所有任务的集合。对于输入图片,它在任务下的标签记作
接下来就开始分步介绍算法流程。算法大致分2大步,4小步。前3小步是第1大步,量化不同任务间的相似性;第4小步就是第2大步,从相似性针对目标任务计算出最优的多任务学习组合方式。
单任务网络建模
对于所有源任务集合中的任务,分别fully supervised训练一个网络。文章中提到encoder部分用了resnet-50,decoder部分视任务而定。
迁移网络建模
首先对于单个源任务和目标任务,冻结 encoder部分的参数,并用其encoded特征作为输入训练到的transfer function 。记被冻结的encoder为,误差计算公式可表示为:
同时,由于不同任务特征可能有互补的性质,文章还尝试了多任务组合特征作为输入,称作高阶关联。因为高阶的任务组合数量太大,文章基于一阶表现选择了一部分的组合进行迁移学习。对于小于五阶的高阶,文章根据一阶的表现,将前五的所有组合作为输入。对于n>5阶,文章选择结合一阶表现前n的起始任务作为输入。
量化相似性
从不同任务迁移到目标任务所产生的loss因为的不同而不在一个量级上,需要进行归一化。文章采用了运筹学中的层次分析法(AHP)进行量化。AHP可参考博客https://blog.****.net/u013007900/article/details/45932851
首先对于每一个目标任务构建pairwise tournament矩阵,其纵轴和横轴均对应所有的起始任务及我们计算过的高阶组合。给定一个测试集。给定一个测试集,每一个元素表示在测试集中,有多大几率到比到误差更小(有几成使得)。然后计算,现在的第(i,j)项表示的表现比好几倍。
在此之后就是正常的AHP计算了,最终得到affinity matrix
BIP (Binary Integer Programming) 最优化
利用affinity matrix,从任务字典里抽取一组任务和迁移方式,等价于一个子图选取问题。子图选取问题可以抽象成一个BIP问题求解。文章针对这个最优化问题给了三个约束:
1. 如果选了一种迁移,那么该迁移的源任务和目标任务都要出现在子图中;
2. 每个目标任务有且只有一个迁移(将从零学习在图中定义为从自己到自己的迁移,即一条自己到自己的edge);
3. 监督信息加和不超过预算。
通过解BIP问题最终得到针对目标任务的multi-task组合
文章的实验结果这里就不列了,上述笔记部分参考CVPR 2018 Best Paper Taskonomy 作者解读 https://zhuanlan.zhihu.com/p/38425434