作者丨Anticoder@知乎
链接丨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来提供,更灵活,告诉模型偏向一些其他任务,最终导致模型会泛化得更好。
多任务学习(multi task learning)简称为MTL。简单来说有多个目标函数loss同时学习的就算多任务学习。多任务既可以每个任务都搞一个模型来学,也可以一个模型多任务学习来一次全搞定的。
-
hard parameter sharing (此方法已经有26岁了<1993>)
在所有任务中共享一些参数(一般底层),在特定任务层(顶层)使用自己独有参数。这种情况,共享参数得过拟合几率比较低(相对非共享参数),过拟合的几率是O(#tasks). [1]
-
soft parameter sharing
每个任务有自己的参数,最后通过对不同任务的参数之间的差异加约束,表达相似性。比如可以使用L2, trace norm等。
优点及使用场景
-
implicit data augmentation: 每个任务多少都有样本噪声,不同的任务可能噪声不同,最终多个任务学习会抵消一部分噪声(类似bagging的思想,不同任务噪声存在于各个方向,最终平均就会趋于零)
-
一些噪声很大的任务,或者训练样本不足,维度高,模型可能无法有效学习,甚至无法无法学习到相关特征
-
某些特征可能在主任务不好学习(比如只存在很高阶的相关性,或被其他因素抑制),但在辅助任务上好学习。可以通过辅助任务来学习这些特征,方法比如hints(预测重要特征)[2]
-
通过学习足够大的假设空间,在未来某些新任务中可以有较好的表现(解决冷启动),前提是这些任务都是同源的。
-
作为一种正则方式,约束模型。所谓的inductive bias。缓解过拟合,降低模型的Rademacher complexity(拟合噪声的能力,用于衡量模型的能力)
20多岁的hard parameter shareing还是很流行,目前热点learning what to learn也很有价值,我们w对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
内容中包含的图片若涉及版权问题,请及时与我们联系删除
评论
沙发等你来抢