剪辑自:https://zhuanlan.zhihu.com/p/59413549
背景:只专注于单个模型可能会忽略一些相关任务中可能提升目标任务的潜在信息,通过进行一定程度的共享不同任务之间的参数,可能会使原任务泛化更好。广义的讲,只要 loss 有多个就算 MTL,一些别名(joint learning,learning to learn,learning with auxiliary task)
目标:通过权衡主任务与辅助的相关任务中的训练信息来提升模型的泛化性与表现。从机器学习的视角来看,MTL 可以看作一种 inductive transfer(先验知识),通过提供 inductive bias(某种对模型的先验假设)来提升模型效果。比如,使用 L1 正则,我们对模型的假设模型偏向于 sparse solution(参数要少)。在 MTL 中,这种先验是通过 auxiliary task 来提供,更灵活,告诉模型偏向一些其他任务,最终导致模型会泛化得更好。
MTL Methods for DNN
- hard parameter sharing (此方法已经有 26 岁了 < 1993>)
在所有任务中共享一些参数(一般底层),在特定任务层(顶层)使用自己独有参数。这种情况,共享参数得过拟合几率比较低(相对非共享参数),过拟合的几率是 O(#tasks). [1]
- soft parameter sharing
每个任务有自己的参数,最后通过对不同任务的参数之间的差异加约束,表达相似性。比如可以使用 L2, trace norm 等。
优点及使用场景
- implicit data augmentation: 每个任务多少都有样本噪声,不同的任务可能噪声不同,最终多个任务学习会抵消一部分噪声(类似 bagging 的思想,不同任务噪声存在于各个方向,最终平均就会趋于零)
- 一些噪声很大的任务,或者训练样本不足,维度高,模型可能无法有效学习,甚至无法无法学习到相关特征
- 某些特征可能在主任务不好学习(比如只存在很高阶的相关性,或被其他因素抑制),但在辅助任务上好学习。可以通过辅助任务来学习这些特征,方法比如hints(预测重要特征)[2]
- 通过学习足够大的假设空间,在未来某些新任务中可以有较好的表现(解决冷启动),前提是这些任务都是同源的。
- 作为一种正则方式,约束模型。所谓的 inductive bias。缓解过拟合,降低模型的 Rademacher complexity(拟合噪声的能力,用于衡量模型的能力)
传统方法中的 MTL (linear model, kernel methods, Bayesian algo),其主要关注两点:
- 通过 norm regularization 使模型在任务之间具有稀疏性
- 对多任务之间关系进行建模
1.1 Block-sparse regularization (mixed l1/lq norm)
目标:强制模型只考虑部分特征,前提为不同任务之间必须相关。
假设 K 个任务有相同的特征,和相同数量的模型参数。形成一个矩阵 A(DxK),D 为参数维度,K 为任务数,目标为这些任务只使用一些特征,也就是 A 的某些行也 0。(最简单的想法就是使其变为一个 low rank 的矩阵;或者使用 L1 正则,因为 L1 可以约束某些特征到 0,如果我们想使某些行为 0,则只要先对行聚合操作,再对聚合后的结果使用 L1 即可,具体可以参考文章 [3]。通常,使用 lq norm 先对行(每个特征)进行约束,之后使用 L1 norm 再约束,就是mixer l1/lq norm。
发展:
- group lasso [4] : l1/l2 norm,通过 trace norm 解决 l1/l2 norm 非凸; 之后有人对此提出了 upper bound for using group lasso in MTL [5]
- 当多个任务公共特征不多时,l1/lq norm 可能没有 elment-wise norm 效果好。有人提出了结合这两种方法,分解参数矩阵为 A = S + B,对 S 使用 lassso,对 B 使用 l1/l_infinite。[6]
- distributed version of group-sparse reguarization [7]
2.1 regularization way for learning task relationship
当任务之间相关性较弱,使用上述方法可能导致 negative transfer(也就是负向效果)。在此情景下,我们希望增加的先验知识是,某些任务之间是相关的,但是某些任务之间是相关性较差。可以通过引入任务 clustering来约束模型。可以通过 penalize 不同任务的 parameter vectors 和他们的方差。限制不同模型趋向于不同的各自 cluster mean vector。
类似的,比如 SVM 中引入 bayesian 方法,事先指定一些 cluster,目标在最大化 margin 的同时使不同任务趋向于各自的 cluster 中心;[8]
指定了 cluster,可以通过聚类方法(类内,类间,自己的复杂度)对模型进行约束
有些场景下,任务可能不会出现在同一个 cluster,但存在潜在的相似结构,比如 group-lasso 在树结构和图结构的任务。
2.2 other methods for learning task relationship
- KNN methods for task clustering. [9]
- semi-supervised learning for learning common structures of some related tasks. [10]
- 多任务 BNN,通过先验控制多任务的相似,模型复杂度大,可以使用 sparse approximation 贪心选择样本 [11];高斯过程中通过不同任务之间使用相同的 covariance matrix 和相同的先验(进而也降低复杂度)[12]
- 对每个 task-specific layers 使用高斯先验,可以使用一个 cluster 的混合分布(事先定好)来促使不同任务的相似 [13]
- 进而,通过一个 dirichlet process 采样分布,使模型任务之间的相似性和 cluster 的数目。相同 cluster 的任务使用同一个模型 [14]
- hierarchical Bayesian model,学习一个潜在的任务结构 [15]
- MTL extension of the regularized Perceptron,encodes task relatedness in a matrix. 之后可以通过不同正则对其限制(比如 rank)[16]
- 不同 tasks 属于不同的独立 cluster,每个 cluster 存在于一个低维空间,每个 cluster 的任务共用同一个模型。通过交替迭代学习不同 cluster 的分配权重和每个 cluster 的模型权重。假定任务之间的绝对独立可能不太好 [17]
- 假设两个不同 cluster 的两个任务之间存在重叠,存在一部分的 latent basis tasks。令每个任务的模型参数是 latent basis tasks 的线性组合,对 latent basis tasks 限制为稀疏的。重叠部分控制共享程度 [18]
- 学习一小撮shared hypotheses,之后 map each task to a single hypothesis [19]
DNN 中的 MTL
Deep Relation Network [20]
计算机视觉中,一般共享卷积层,之后是任务特定的 DNN 层。通过对任务层设定先验,使模型学习任务之间的关系。
Fully-Adaptive Feature Sharing [21]
从一个简单结构开始,贪心地动态地加宽模型,使相似的模型聚簇。贪心方法可能无法学到全局最优结构;每个分支一个任务无法学习任务之间的复杂关系。
Cross-stitch Networks [22]
soft parameter sharing,通过线性组合学习前一层的输出,允许模型决定不同任务之间的分享程度
Low supervision [23]
寻找更好的多任务结构,复杂任务的底层应该被低级任务目标来监督(比如 NLP 前几层学习一个 NER 或 POS 辅助任务)
A Joint Many-task Model [24]
对多个 NLP 任务预先设定层级结构,之后 joint learning
Weighting losses with uncertainty [25]
不考虑学习共享的结构,考虑每个任务的不确定性。通过优化 loss(Gaussian likelihood with task-dependant uncertainty),调节不同 tasks 之间的相似性。
Tensor factorisation for MTL [26]
对每层参数进行分解,为 shared 和 task-specific
Sluice Networks [27]
大杂烩(hard parameter sharing + cross stitch networks + block-sparse regularization + task hierarchy(NLP) ),使得模型自己学习哪些层,哪些子空间来共享,在哪层模型找到了 inputs 的最优表达。
当不同的任务相关性大,近似服从相同的分布,共享参数是有益的,如果相关性不大或者不相关的任务呢?
早期工作是预先为每对任务指定哪些层来分享,这种方法扩展性差且模型结构严重有偏;当任务相关性下降或需要不同 level 推理时,hard parameter sharing 就不行了。
目前比较火的是learning what to share(outperform hard parameter sharing);还有就是对任务层级进行学习在任务具有多粒度因素时也是有用的。
Auxiliary task
我们只关注主任务目标,但是希望从其他有效的辅助任务中获利!
目前选择一些辅助任务方法
- Related task:常规思路 (自动驾驶 + 路标识别; query classification+web search;坐标预测 + 物体识别;duration+frequency)
- Adversarial:在 domain adaption,相关的任务可能无法获取,可以使用对抗任务作为 negative task(最大化 training error),比如辅助任务为预测输入的 domain,则导致主任务模型学习的表征不能区分不同的 domain。
- Hints:前面提到的某些特征在某些任务不好学,选择辅助任务为 predicting features(NLP 中主任务为情感预测,辅助任务为 inputs 是否包含积极或消极的词;主任务 name error detection,辅助任务为句子中是否有 name)
- Focusing attention:使模型注意到那些在任务中可能不容易被注意到的部分(自动驾驶 + 路标检测; 面部识别 + 头部位置识别)
- Quantization smoothing:某些任务中,训练目标是高度离散化的(人为打分,情感打分,疾病风险等级),使用离散程度较小的辅助任务可能是有帮助的,因为目标更平滑使任务更好学
- prediting inputs:有些场景下,可能不会选择某些特征,由于其不利于预估目标,但是这可能这些特征对模型的训练有一定的帮助,这种场景下,这些特征可以作为 outputs 而不是 inputs
- Using the future to predict the presnet:有些特征只有在决策之后才会有,比如自动驾驶时,当车路过一些物体才得到这些物体的数据;医疗中只有使用过药物才知此药物的效果。这些特征不能作为 inputs,但是可以用作辅助任务,来给主任务在训练过程中透露信息。
- representation learning:auxiliary task 大多都是潜在地学习一些特征表达,且一定程度上都利于主任务。也可以显示地对此学习(使用一个学习迁移特征表达的辅助任务,比如 AE)
那么,哪些 auxiliary task 是有用的呢?
auxiliary task 背后的假设是辅助任务应该在一定程度上与主任务相关,利于主任务的学习。
那么如何衡量两个任务是否相关呢?
一些理论研究:
- 使用相同的特征做决策
- 相关的任务共享同一个最优假设空间(having the same inductive bias)
- F-related: 如果两个任务的数据是通过一个固定分布经过一些变换得到 [28]
- 分类边界(parameter vectors)接近
任务是否相似不是非 0 即 1 的,越相似的任务,收益越大。learning what to share 允许我们暂时忽略理论上的不足,即使相关性不好的任务之间也能有所收益。但是发展任务之间的相似性对我们在选择辅助任务上也是有绝对的帮助的。
MTL learning Tips
- 紧凑分布均匀的 label 的辅助任务更好(from POS in NLP)[29]
- 主任务训练曲线更快平稳,辅助任务平稳慢(还未平稳)[30]
- 不同任务尺度不一样,任务最优学习率可能不同
- 某个任务的输出可以作为某些任务的输入
- 某些任务的迭代周期不同,可能需要异步训练(后验信息;特征选择,特征衍生任务等)
- 整体 loss 可能被某些任务主导,需要整个周期对参数进行动态调整(通过引入一些不确定性, 每个任务学习一个噪声参数,统一所有损失 [31]
- 某些估计作为特征(交替训练)
总结
20 多岁的 hard parameter shareing 还是很流行,目前热点 learning what to learn 也很有价值,我们对 tasks 的理解(similarity, relationship, hierrarchy, benefit for MTL) 还是很有限的,希望以后有重大发展吧。
可研究方向
- learning what to share
- measurement for similarity of tasks
- using task uncertainty
- 引入异步任务(特征学习任务),采用交替迭代训练
- 学习抽象子任务;学习任务结构(类似强化里面的 hierarchy learning)
- 参数学习辅助任务
- More…
备注:本文内容主要来自 An Overview of Multi-Task Learning in Deep Neural Networks
https://arxiv.org/abs/1706.05098
Reference
[1] A Bayesian/information theoretic model of learning to learn via multiple task sampling. http://link.springer.com/article/10.1023/A:1007327622663
[2] Learning from hints in neural networks. Journal of Complexity
https://doi.org/10.1016/0885-064X(90)90006-Y
[3] Multi-Task Feature Learning
http://doi.org/10.1007/s10994-007-5040-8
[4] Model selection and estimation in regression with grouped variables
[5] Taking Advantage of Sparsity in Multi-Task Learning
http://arxiv.org/pdf/0903.1468
[6] A Dirty Model for Multi-task Learning. Advances in Neural Information Processing Systems https://papers.nips.cc/paper/4125-a-dirty-model-for-multi-task-learning.pdf
[7] Distributed Multi-task Relationship Learning
http://arxiv.org/abs/1612.04022
[8] Regularized multi-task learning
https://doi.org/10.1145/1014052.1014067
[9] Discovering Structure in Multiple Learning Tasks: The TC Algorithm
http://scholar.google.com/scholar?cluster=956054018507723832&hl=en
[10] A Framework for Learning Predictive Structures from Multiple Tasks and Unlabeled Data
[11] Empirical Bayes for Learning to Learn
[12] Learning to learn with the informative vector machine
https://doi.org/10.1145/1015330.1015382
[13] Task Clustering and Gating for Bayesian Multitask Learning
https://doi.org/10.1162/153244304322765658
[14] Multi-Task Learning for Classification with Dirichlet Process Priors
[15] Bayesian multitask learning with latent hierarchies
http://dl.acm.org.sci-hub.io/citation.cfm?id=1795131
[16] Linear Algorithms for Online Multitask Classification
[17] Learning with whom to share in multi-task feature learning
[18] Learning Task Grouping and Overlap in Multi-task Learning
[19] Learning Multiple Tasks Using Shared Hypotheses
[20] Learning Multiple Tasks with Deep Relationship Networks
http://arxiv.org/abs/1506.02117
[21] Fully-adaptive Feature Sharing in Multi-Task Networks with Applications in Person Attribute Classification http://arxiv.org/abs/1611.05377
[22] Cross-stitch Networks for Multi-task Learning
https://doi.org/10.1109/CVPR.2016.433
[23] Deep multi-task learning with low level tasks supervised at lower layers
[24] A Joint Many-Task Model: Growing a Neural Network for Multiple NLP Tasks http://arxiv.org/abs/1611.01587
[25] Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics http://arxiv.org/abs/1705.07115
[26] Deep Multi-task Representation Learning: A Tensor Factorisation Approach https://doi.org/10.1002/joe.20070
[27] Sluice networks: Learning what to share between loosely related tasks
http://arxiv.org/abs/1705.08142
[28] Exploiting task relatedness for multiple task learning. Learning Theory and Kernel Machines https://doi.org/10.1007/978-3-540-45167-9_41
[29] When is multitask learning effective? Multitask learning for semantic sequence prediction under varying data conditions
http://arxiv.org/abs/1612.02251
[30] Identifying beneficial task relations for multi-task learning in deep neural networks http://arxiv.org/abs/1702.08303
[31] Multitask learning using uncertainty to weigh losses for scene geometry and senantics
https://zhuanlan.zhihu.com/p/59413549