赞
踩
paper: https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9392366
authors: 南科大,港科大
本文从算法建模、应用和理论分析的角度对多任务学习(MTL)进行了survey。在算法建模中,我们给出了MTL的定义,然后将不同的MTL算法分为 feature learning approach, low-rank approach, task
clustering approach, task relation learning approach, 和decomposition approach五类,并讨论了每种方法的特点。为了进一步提高学习任务的性能,MTL可以与其他学习范式相结合,包括半监督学习、主动学习、无监督学习、强化学习、多视图学习和图模型。对于任务数量较大或数据维数较高的情况,我们回顾了在线、并行和分布式MTL模型以及降维和特征哈希,以揭示它们的计算和存储优势。许多真实世界的应用程序使用MTL来提高其性能,我们回顾了具有代表性的工作。最后,我们提出了理论分析,并讨论了MTL的几个发展方向。
人类可以同时学习多个任务,在这个学习过程中,人类可以利用在一个任务中学习到的知识来帮助学习另一项任务。例如,根据我们一起学习打网球和打壁球的经验,我们发现打网球的技巧可以帮助我们学习打壁球,反之亦然(vice versa)。受人类的这种学习能力的启发,多任务学习(MTL)旨在共同学习多个相关任务,这样其中一个任务所包含的知识可以被其他任务利用,以此希望提高所有任务(all the tasks at hand)的泛化性能。
在早期阶段,MTL的一个重要动机是缓解(alleviate)数据稀疏性问题,即每个任务的标记数据数量有限。在数据稀疏性问题中,每个任务中标记数据的数量不足以训练一个准确的learner,而MTL以数据增强的思路将所有任务中的labeled data聚合,为每个任务获得更准确的learner。从这个角度来看,MTL可以帮助重复使用现有的知识,并降低学习任务中的手工标记成本。当 “大数据” 时代出现在计算机视觉和自然语言处理(NLP)等领域时,人们发现深度MTL模型比单任务模型具有更好的性能。 多任务学习有效的一个原因是:与单任务学习相比,它利用了更多来自不同学习任务的数据,有了更多的数据,多任务学习可以学习到对多任务而言更健壮和通用的表征以及更强大的模型,从而导致任务之间更好的知识共享、每个任务更好的更好性能、以及每个任务中较低的过拟合风险。
MTL与机器学习中的其他学习范式是相关联的,这包括 迁移学习(transfer learning)、多标签学习(multi-label learning) 和多输出回归(multi-output regression)。
MTL vs. Transfer Learning:多任务学习与迁移学习的设置很相似,但他们其实有着显著的差异。在多任务学习中,不同的任务之间没有区别,目标是提高所有任务的性能。然而,迁移学习是通过source task来提高target task的性能,因此target task比source task发挥着更重要的作用。简而言之,多任务学习对所有任务平等对待,迁移学习对目标任务最为关注。从知识流的角度来看,迁移学习中的知识流动是从源任务到目标任务的,而在多任务学习中,任何一对任务之间都存在双向的知识流动,即共享的,示意图如下。
MTL vs. Continual Learning:持续学习,是一个接一个地学习任务(即任务依次出现),而MTL是一起学习多个任务。
MTL vs. Multi-label Learning:在多标签学习(multi-label learning) 和多输出回归(multi-output regression)中,每个数据都与多个labels相关联,这些labels可以是类别也可以是回归的数字。如果我们把每一个有可能的标签作为一个任务,多标签学习和多输出回归在某种意义上可以看作是多任务学习的一种特殊情况,在训练和测试阶段中,不同的任务总是共享相同的数据。但是,多标签学习和多输出回归中的这种特征导致了与MTL不同的研究问题。作者认为,多标签学习和多输出回归是多个任务拥有相同的数据,但是在多任务学习中,不同的任务拥有的是不同的数据(如下图所示),对于这句话我的理解是:data是包含input和label的,多标签学习和多回归学习的input相同,label虽然类别不同,但都属于同一种,对于多任务学习而言输input也是相同的,但是label并不属于同一种标注,所以作者这里说多任务学习不同任务拥有不同的数据(data)。
MTL vs. Multi-view Learning:多视图学习的每一个数据点都与多个视图相关联,每个视图都由一组特征组成。尽管不同的视图拥有不同的特征,但所有的视图被一起用于学习的同一个任务,因此,多视角学习属于具有多组特征的单任务学习,这与MTL不同,如下图所示。
为了更充分地描述MTL,作者首先对MTL进行了如下定义:
根据特征空间的不同,多任务学习分为同构特征MTL和异构特征MTL(类比于迁移学习分类)。同构特征MTL是指对于每个任务而言,用到的特征空间都相同(所有任务存在于同一个特征空间下),如果不同则属于异构特征MTL。没有特殊的解释,默认的MTL就是是同构特征MTL。
此外,在作者的分类中,异构特征MTL(heterogeneous-feature MTL)和异构MTL(heterogeneous MTL)也不相同。 作者对异构MTL(heterogeneous MTL)的定义是:异构MTL由不同类型的任务组成,包括有监督学习、无监督学习、半监督学习、强化学习、多视图学习和图形模型。而同构MTL就是包含的所有任务都属于一个类别。同样的,没有特殊的解释,默认的MTL就是是同构MTL。
简明来讲: the homogeneous and heterogeneous MTL differ in the type of learning tasks while the homogeneous-feature MTL is different from the heterogeneous-feature MTL in terms of the original feature representations.
对于多任务学习而言,最重要的是“share”,因此在你决定使用多任务学习算法之前,需要将一下这三个问题想清楚:
学习公共特征表示而不是直接使用原始特征表示的一个原因是,原始表示可能对多个任务没有足够的表达能力。有了所有任务中的训练数据,就可以为所有任务学习到更强大的表示,而这种表示可以提高性能。(个人认为这种方式其实是有一定缺陷的,学习多任务的公共特征的目的是为了获取一个对多任务而言更强大的特征,但是这个特征为了去满足每个任务,在特定任务上必然是会损失一些的)
根据原始特征表示与学习特征表示之间的关系,我们可以进一步将其划分为两个子类。第一个子类别是特征变换方法(Feature Transformation Approach),其中学习到的表示是原始表示的线性或非线性变换,在这种方法中,学习到的表示中的每个特征都不同于原始特征。与此方法不同的是,第二个子类别是特征选择方法(Feature Selection Approach),即选择了原始特征的一个子集作为学习到的表示,因此学习到的特征是根据不同的标准来消除无用的特征后的特征子集,与原始特征是相似的。
最初多任务学习范式的特征变换方法是基于MLP的,输入是多个任务的实例,输出也是针对各个任务的,中间有个隐藏层用于将原始特征转换到想要学习到的特征。转换是非线性还是线性取决于隐藏层中的激活函数。在这里还没有学习共享的特征,而是将一个任务与另一个任务分开(数据及输出),只是使用其他任务的表征来帮助某个任务获取更强大的表征。
近年来,深度学习因其学习非线性特征的能力而流行起来,这有利于学习多任务的不变特征(invatiant feature),因此许多深度多任务模型被提出,每个任务都由深度神经网络建模。作者将目前基于深度网络的多任务学习分为了三类:
在MTL中进行特征选择的一种方法是通过使用范数来实现特征选择[4][5]。
以上这两种特征学习方法有着不同的特性, feature selection approach可以看作是feature transformation approach的一种特殊情况:当转换矩阵是对角矩阵,且对角线上的元素对应被选择的特征时。通过选择原始特征的一个子集作为新的表示形式,feature selection approach是具有更好的可解释性的。
如果第i-th,j-th,k-th个任务是相关的,wi是第i-th个任务的模型参数,而且wi其他两个任务参数的线性组合,那么很容易表明整体模型参数矩阵W的秩最多是m−1,也就是low-rank。从这个角度来看,多个任务间相关性越强,W的秩就越低。
最近有工作将迹范数正则化(trace norm regularization)应用于深度多任务网络中来正则化模型参数。在这个工作中,作者将深度多任务神经网络的最后几个全连接层中的权值看作是所有任务的learner的参数。从这一角度出发,作者将每个任务的最后几层的权值共同放在一个矩阵中组成W,然后使用了几种基于trace norm的正则化器来识别参数矩阵的low-rank结构(这篇工作的多任务应该是类似于cross-stitch架构)。
任务聚类方法假设不同的任务可以形成几个clusters,每个聚类由相似的任务组成。顾名思义,该方法与聚类算法有密切的联系,可以看作是聚类算法到任务级的扩展,而传统的聚类算法是在数据级。
在MTL中,任务是相关的,任务相关性可以通过任务相似性(task similarity)、任务相关性(task correlation)、任务协方差(task covariance)等方式进行量化。这篇文章中使用 task relations来包含所有的量化关系。
总之不同的方法有着不同的特点,第一种是feature-based(主要在特征上做动作),剩下四种都是parameter-based(主要在参数上做动作)。
具体地,feature learning approach可以学习共同的特征,这些特征是通用的,对所有当前的任务甚至新的任务都是不变的。但是当存在与其他任务无关的 outlier 任务时,这个学习到的特征会受到离群任务的显著影响,并可能导致性能下降。这是由于针对不同任务的特征的交集变小,因为学到的特征是必须是这所有特征中的一个交集,特征变小自然就会导致性能下降。这一点也印证了多任务学习虽然能找到共性的领域不变特征,但是也会导致一部分信息的损失。
通过假设参数矩阵是低秩的,low-rank方法可以显式地学习参数矩阵的子空间,或者通过一些凸(convex)或非凸(non-convex)正则化器隐式地实现它。这种方法很强大,但它似乎只适用于线性模型,使非线性的扩展难以设计。
任务聚类方法对模型参数在任务级上进行聚类,它可以识别包含相似任务的任务簇。任务聚类方法的一个主要局限性是,它可以捕获同一聚类中任务之间的正相关,而忽略了不同聚类中任务之间的负相关。此外,尽管这类方法中的一些方法可以自动确定集群的数量,但大多数方法仍然需要使用交叉验证等模型选择方法来确定它,这可能会带来额外的计算成本。
任务关系学习方法可以同时学习模型参数和成对的任务关系。学习到的任务关系可以让我们深入了解任务之间的关系,从而提高了可解释性。
解耦方法可以被视为其他基于参数的方法的扩展,因此它们可以建模更复杂的任务结构,例如树状结构。解耦方法中的组件的数量对性能很重要,需要仔细确定。
与假设不同的任务共享相同的特征表示不同,对于multi-database人脸识别问题,zhang[7]认为来自不同database的人脸识别就是一个单独任务。由于不同的人脸数据库有不同的图像大小,在人脸识别中,自然所有的任务(每个数据库的人脸识别)都不位于同一特征空间,这导致了异质特征MTL问题。为了解决这一异构特征MTL问题,在这个工作中提出了一种多任务判别分析(MTDA)方法,首先将不同任务的数据映射到一个公共子空间中,然后学习该子空间中的公共映射来区分不同任务中的不同类别。
这个工作可以给一些启发,zhang是将不同尺寸的人脸图像看作是异构数据,然后将这些不同任务的“异构数据”映射到共同子空间中后再进行判别的。这个工作将“尺寸”这个宏观的特性作为是数据是否异构的判别,不同尺寸的数据是异构的。但其实对于每种尺寸的数据,其内部包含的对不同任务有效的特征同样是异构的,只不过这种异构相对于[7]是“微观”层面的。因此,对于输入的一张图片,不同任务的有效特征在最初始的状态是异构的, 有共享层的feature-based方法最初的这些共享层所做的事就是将这些不同任务的异构特征映射到一个新的空间下(可以看作是[7]中的公共子空间),这个过程可以看作是特征转换的过程,因为特征转换的目的就是为了提取出公共的特征,如果没有把这些异构的数据映射到同样的特征子空间下,是无法使网络在这些异构的特征上去选择出公共的特征的。这一过程包含了特征映射和筛选,从归一化后的原始特征映射到公共子空间这一过程理论上没有信息的损失(TODO: 这句话待考究),但是在筛选的过程中通过参数矩阵的稀疏化实现了对非共有特征的去除,这些被去除的特征虽然并非公共的,但是相对于每个具体任务而言可能确实有用的,因此虽然基于共享层的feature-based方法可以提取出公共特征,但是它们却导致了一些有用的信息被损失,因此如何来避免这样的信息损失是一个问题。通过cross-stitch方法或许可以实现(TODO:待考究),但是这会使模型规模变得庞大,这一点或许可以通过其他任务(上阶段)的知识来弥补失去的这部分损失。
多任务学习中的优化技巧主要分为以下几类:
以下来自于文章:《Multi-task learning for dense prediction tasks: A survey》
之前的多任务模型分类只是简单的分为软共享和硬共享(见下图),但是最近几年有一些工作同时基于二者的思想来完成多任务的学习,因此这篇文章中作者将目前的多任务模型分为新的两种类别:encoder-focused和decoder-focused。
上图是传统的MTL分类:硬共享和软共享。下图是作者提出的新的分类方式。
PAD-Net[12]将每个task-specific模块最后一层的输出特征作为initial prediction,提出一个Multi-Modal Distilation模块,通过空间注意力机制对任务具体模块的最后层特征进行交互以提取出cross-task information来产生最终预测,而不是直接使用来自encoder的shared feature来完成预测,为了什么使用任务层最后feature来提取任务关系,因为其认为the task features已经通过具体任务的supervise被解耦。
PAD-Net的多模态蒸馏是在固定的尺度上进行的,即主干的最后一层的特征,因此MTI-Net[13]通过在多个尺度上进行任务交互(多模态蒸馏),最后将多个尺度的特征上采样到最大尺度并连接从而得到每个任务的最终表示。
PAD-Net和MTI-Net的核心思想是不仅在encoder中学习共享的知识,还在decoder中挖掘任务间的交互关系,以利用任务间的相互关系去互相辅助,但是它们都是在feature-level上去探索任务具体特征之间的关系,并没有从model-level上去显式的建模我们常识中的任务间相互关系。
JTRL[14]在预测每一个任务时利用了先前阶段的特征,这一点的思路与我们有点相同,就是分阶段从粗到细的进行细化。但是JTRL最大的缺点就是它是sequentially预测每个任务,也就是backbone输出的特征只用于第一个任务,而下游任务所用到的特征是上个阶段的输出,这就导致了下游任务不能用到backbone输出的良好的初始特征,只能用到被其他任务监督过的特征(这对下游任务可能并没有很大用),所以就导致了JTRL的方式很难应用于超过两个任务的场景,否则下游任务效果将严重受到影响。
为了解决第一个问题,我们从model-level考虑,合理地设计模型架构以显式的利用其他任务的知识(输出而非输出层的特征);为了解决第二个问题,我们将backbone输出的有效特征对每个任务模块都共享,此外方案一能够任务模块之间能够任务交互,但是并不能像JTRL那样利用上阶段的知识来不断的细化,我们设计了一种循环的方式(不同于JTRL中的sequentially)来将上个阶段的知识传入下阶段来完成细化。
Uncertainty Weighting、Gradient Normalization、Dynamic Weight Averaging、Dynamic Task Prioritization、MTL as Multi-Objective Optimization
[1] Y. Shinohara, “Adversarial multi-task learning of deep neural networks for robust speech recognition,” in Interspeech, 2016.
[2] P. Liu, X. Qiu, and X. Huang, “Adversarial multi-task learning for text classification,” in ACL, 2017.
[3] I. Misra, A. Shrivastava, A. Gupta, and M. Hebert, “Cross-stitch networks for multi-task learning,” in CVPR, 2016.
[4] G. Obozinski, B. Taskar, and M. Jordan, “Multi-task feature selection,” tech. rep., University of California, Berkeley, 2006.
[5] P. Gong, J. Ye, and C. Zhang, “Multi-stage multi-task feature learning,” JMLR, 2013.
[6] Y. Yang and T. M. Hospedales, “Trace norm regularised deep multi-task learning,” in ICLR, Workshop Track, 2017.
[7]Y. Zhang and D.-Y. Yeung, “Multi-task learning in heterogeneous feature spaces,” in AAAI, 2011.
[8] Z. Chen, V. Badrinarayanan, C. Lee, and A. Rabinovich, “Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks,” in ICML, 2018.
[9] T. Yu, S. Kumar, A. Gupta, S. Levine, K. Hausman, and C. Finn, “Gradient surgery for multi-task learning,” in NeurIPS, 2020.
[10] O. Sener and V. Koltun, “Multi-task learning as multi-objective optimization,” in NeurIPS, 2018.
[11] Vandenhende S, Georgoulis S, Van Gansbeke W, et al. Multi-task learning for dense prediction tasks: A survey[J]. IEEE transactions on pattern analysis and machine intelligence, 2021.
[12] Xu D, Ouyang W, Wang X, et al. Pad-net: Multi-tasks guided prediction-and-distillation network for simultaneous depth estimation and scene parsing[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 675-684.
[13] Vandenhende S, Georgoulis S, Gool L V. Mti-net: Multi-scale task interaction networks for multi-task learning[C]//European Conference on Computer Vision. Springer, Cham, 2020: 527-543.
[14] Zhang Z, Cui Z, Xu C, et al. Joint task-recursive learning for semantic segmentation and depth estimation[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 235-251.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。