多任务学习算法系列的主要内容是回顾和总结自己2019-2021间在深度学习多任务学习算法(multitask)的工业实践和遇到的常见问题,欢迎更多同学讨论和指正,同时也宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://github.com/PaddlePaddle/PaddleRec),欢迎大家点赞,关注和讨论,熟悉框架后简历会加很多分噢~

多任务处理 python框架 多任务算法_多任务学习

第一章首先介绍多任务的基本概念和工业实践中的动机以及应用场景。

一. What multitask

多任务学习(multitask)的定义和形式有很多种。我觉得比较直观的理解是和单任务学习相对的一种机器学习方法。

以School Data案例为例介绍单任务和多任务的区别:

(1) School Data是用来预测学生成绩的回归问题的数据集,总共有139个中学的15362个学生,其中每一个中学都可以看作是一个预测任务。

(2) 单任务学习就是忽略任务之间可能存在的关系分别学习139个回归函数进行分数的预测,或者直接将139个学校的所有数据放到一起学习一个回归函数进行预测。

(3) 而多任务学习则看重任务之间的联系,通过联合学习,同时对139个任务学习不同的回归函数,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。

一般优化多于一个的目标函数的任务都可以称为多任务(multi-task)【1】。

本文的多任务学习特指工业界推荐系统领域(搜广推)中深度学习相关的多任务学习。

二. Why multitask

多任务算法的应用场景还是很广泛的,只要是推荐技术涉及的业务,比如搜索、广告还是推荐都有需求,另外无论是成熟的大规模推荐系统还是处于上升期的初创场景对于多个目标的联合训练一般都有强需求。

常见多任务学习的动机和需求还是围绕提升(主)模型的精度(泛化能力)、资源性能和维护成本,具体如下也欢迎更多同学补充交流。

(1)多任务场景下,多个任务(相关性较强)会从不同的角度学习特征,增强模型泛化能力来提升收益,最常见的就是通过增加优化目标,比如在信息流推荐领域中的点击,时长,评论,点赞等多个维度,比如在电商领域的点击和转化。

(2)共享参数,不额外增加资源的前提下变相增加参数规模。推荐系统的核心是embedding,对于相关的多个目标,比如点击/时长等,用户及相关特征的重合或者接近的,多个任务共享这部分参数可以极大的节省离线和在线资源

(3)用数据更多的任务指导学习数据较少的任务。一般常见的就是某个任务的数据量较少,期望能通过大数据训练较好的模型指导稀疏数据场景下的模型,比如点击率和转化率,一跳场景和二跳场景。

(4)冷启模型的快速收敛。将冷启模型和收敛模型同时训练,帮助冷启模型可以在一个相对正确的方向上快速收敛

(5)有更多反馈和指导的模型(人工参与或更接近用户反馈层)指导学习其他模型。最常见的就是在精排阶段或者重排序阶段有一些"精准"评分用来指导更上层的粗排或者召回模型

(6)多个模型合并为一个模型后的线上资源多路请求可以合并为一路,减少请求资源。这个一般是架构同学的强需求,毕竟线上资源还是非常贵的。

(7)减少多模型的维护成本。有很多策略和架构同学减少维护多个"相似"模型的需求是强烈的,一般一个模型有数据链条,离线训练任务,在线任务等多个环节,如果能合并成一个任务会极大的减轻工作量。

(8)混合数据中训练不同任务。由于数据生成或者任务形式的不同,常见的需求是期望不同的数据训练不同的模型(比如mlp塔),而不是所有数据都训练每个模型,这也是多任务学习中的常见需求。不同的数据一般指不同的样本 或者一条样本的不同特征。

总结一下,本章主要介绍了多任务的概念,一般优化多于一个的目标函数的任务都可以称为多任务。多任务学习的主要动机还是围绕提升(主)模型的精度(泛化能力)、资源性能和维护成本。

后续将总结不同需求下的解决方案,包括模型层面(share-bottom, mmoe, ple, esmm等)和数据层面的解决方案(Instag),后续也会推出常见问题的章节,比如esmm的ctcvr的auc精度损失问题,多个目标的融合等。

其他文章链接:

多任务学习的经典算法 Share-Bottom: 推荐系统多任务学习(multitask)的实战总结和常见问题(二)

欢迎更多同学讨论和指正,最好还是宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://github.com/PaddlePaddle/PaddleRec

参考文献:

【1】An Overview of Multi-Task Learning in Deep Neural Networks .