- 来源于公众号:https://mp.weixin.qq.com/s/2I9iPFP_BkSjSEm7xJiHPQ
早在2017年,SEBASTIAN RUDER研究员就对当时的多任务学习进行了详细总结:An Overview of Multi-Task Learning in Deep Neural Networks
多任务学习优点
- 一次搞定多个任务降低时间成本、计算成本、存储成本、甚至还有模型的维护成本。
- 多任务学习不仅方便,还可能效果更好!将很多数据集比稀疏的任务放在一起学,一定程度上会缓解模型的过拟合,提高了模型的泛化能力。
- 多任务学习能提高泛化能力,从另一个角度来看,对于数据很少的新任务,也解决了所谓的“冷启动问题”。
- 数据增强,不同任务有不同的噪声,假设不同任务噪声趋向于不同的方向,放一起学习一定程度上会抵消部分噪声,使得学习效果更好,模型也能更鲁棒。
- 多任务学习通过引入不同任务的数据,自然而言有类似的效果。
- 辅助任务,某些任务所需的参数可以被其他任务辅助训练的更好。
多任务学习方法
- 分为:hard parameter sharing和soft parameter sharing
hard parameter sharing
无论最后有多少个任务,底层参数统一共享,顶层参数各个模型各自独立。由于对于大部分参数进行了共享,模型的过拟合概率会降低,共享的参数越多,过拟合几率越小,共享的参数越少,越趋近于单个任务学习分别学习。
soft parameter sharing
底层共享一部分参数,自己还有独特的一部分参数不共享;顶层有自己的参数。底层共享的、不共享的参数如何融合到一起送到顶层,也就是研究人员们关注的重点啦。
多任务学习改进的方向
- 模型结构设计:哪些参数共享,哪些参数不共享?
- MTL的目标loss设计和优化改进
- 直接设计更合理的辅助任务!
注意事项
- 洗掉你的脏数据!
- 理解你的数据、特征的含义、监督信号是不是对的,是不是符合物理含义的
- 如果MTL中有个别任务数据十分稀疏,可以直接尝试一下何凯明大神的Focal loss!
- 仔细分析和观察数据分布,如果某个任务数据不稀疏,但负例特别多,或者简单负例特别多,对负例进行降权/找更难的负例也可能有奇效果哦。