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

第一章多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一) 介绍了多任务的基本概念和常见的动机及应用场景。

第二章Share-Bottom: 推荐系统多任务学习(multitask)的实战总结和常见问题(二)主要介绍工业实践中的多任务解决方案中最经典的入门级算法Share-Bottom

本章主要介绍主流的多任务学习模型——门控专家(Gate&Expert)算法,主要包括MMoE【1】和CGC/PLE【2】,相较于其他复杂的多任务算法,因其易于实现,解释性强和效果明显成为多任务模型升级路径的常见算法。除了简要介绍具体的算法,我们将更多关注实战使用模型时遇到的具体问题。

一. MMoE

在上一章中提到Share-Bottom的结构过于简单,对于相关性差的任务之间共享信息会导致效果变差。为了解决这个问题,MMoE采用了类似集成学习的思想,用若干个专家模型(expert model)加权影响子任务,门控机制(Gate)就是训练不同专家的影响因子,最终通过softmax输出不同专家的权重。如果对于所有子任务只有一套Gate就是MoE模型,但是更好的处理方式是每个子任务都有一个属于自己的Gate,升级为MMoE模型,详细的模型示意图见下图,摘自MMoE原论文 <Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts>【1】。

在原论文的实验和我们的工作实践中,在相同参数规模下(很重要,有可比性!)要比share-bottom有明显的提升效果,正如原论文所描述的,对于相关性低的任务联合训练MMoE效果更加明显。任务的相关性,有很多方法可以刻画,大家可以自行查阅。

在我们的工作实践中有几个现象在这里总结一下,希望更多同学可以参与讨论和指正:

(1) 如何描述多个专家模型对于不同任务的差别和有效性?

我一般采用的是在一个足够大的数据集上,打印每个gate网络 softmax后的分布,这里直接体现的就是每个专家系统对于当前子任务的权重。如下图所示,每个gate的分布:

(2) 如何确定超参,如expert数和专家模型的实现方案?

实际的expert模型和gate模型都不是固定的,最常见的就是多层FC网络组成的mlp,具体实现可以参考PaddleRec/MMoE 但是在相同的参数规模下,gate模型建议不要太简单,一般直接输出softmax不是最好的方式,在我们的实践中,当gate网络由一层fc升级为3层fc(gate网络参数增大,expert网络参数减少)时效果有明显提升。

expert专家数量根据我们的对比实验(expert数量增大时,每个expert网络模型参数减少),一般呈现中间高两头低的现象,最佳的实验结果是expert专家数量在gate数量(子任务个数)1-2倍区间。对于具体的任务最好的方式还是多组实验对比。

(3) 新加子任务时的热启解决方案?

我们在实践中经常会遇到需要增加任务或者修改模型的情况。我们在实践中尝试过如下解决方案:

a. 完全冷启训练。这种适用于收敛较快,模型改动特别大的场景,尤其是对于sparse部分的修改。

b. 只热启sparse部分(embedding)。这是最常见的方式,一般增加目标的场景或者修改上层模型的场景下,sparse都是共享的,所以直接热启线上训练好的sparse表可以快速收敛,稳定性也更好。

c. 热启sparse部分和部分dense模型。比如只增加目标,不修改expert数量的场景下,直接热启expert专家模型的参数。这个在部分场景下适用,但不建议这样热启,因为当新增加一个任务或者修改上层模型后,整体的分布会改变,从之前的专家模型参数开始重新收敛并不一定比完全冷启expert专家模型效果更好,有可能会出现局部收敛陷阱,这个需要具体场景下的多组实验对比。

二. CGC/PLE

为了解决跷跷板现象(一部分任务效果变好,另一部分效果变差),PLE <Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations>【2】在MMoE的基础上新增了每个任务独有的expert 专家,用来强化自己任务的特性,gate网络用来学习每个子任务的独有expert和共享expert联合的权重,这是单层CGC模型。

PLE的多层的CGC,与CGC不同的是考虑了不同expert的交互性,在底层的Extraction网络中有一个share gate,他的输入不再是cgc的独有expert和share expert,而是全部expert . 详细模型示意图见下图。

具体实现可以参考 PaddleRec/PLE

总结一下实践中遇到的常见问题。

(1) share expert 和 独有expert的超参设置?

这个目前看并没有特别明确的定论,根据子任务的数量一般是每个任务的expert 1-2个,share expert个数在1倍以上。这个超参最好还是根据具体的任务实验为准。

(2) CGC还是PLE,和MMoE对比效果怎么样?

实践中单层CGC在相同参数规模下效果普遍要优于MMoE,从理论上也可以解释的通,毕竟增加了每个子任务各自的expert,对于相关性特别差的多任务,有一个专有的expert做"保底"。我们的实践中多层的PLE只有在个别场景下会好于CGC,所以很多情况下我们就直接采用CGC升级MMoE ,不过这个还是要具体实验一下。

(3) 多个任务的指标怎么比?

这个没有明确的定论,一般如果都是auc,首先看有没有特别重要的任务,比如点击率,转化率等等。如果都一样的权重可能就是简单的总体相加。如果是特别多的任务或者想快速计算指标差异,建议还是写一个通用脚本。

总结一下,MMoE为了解决相关性较差的多任务联合训练,PLE引入专有expert降低跷跷板效应。

我们常见的多任务模型升级路线是Share-Bottom -> MMoE ->CGC/PLE。

后续我们继续介绍工业实践中常用的算法ESMM以及相关问题,以及我们针对样本不一致采用的Instag解决方案。

最后再宣传一波我们组在推荐方向的工作成果——大规模推荐算法库PaddleRec(https://github.com/PaddlePaddle/PaddleRec),欢迎大家点赞,关注和讨论。

其他文章链接:

多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一)

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

多样本空间下的多任务算法——ESMM & Instag:推荐系统多任务学习(multitask)的实战总结和常见问题(四)

参考文献:

【1】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts. Jiaqi Ma

【2】Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations. (Hongyan Tang)

MMoE PLE:推荐系统多任务学习(multitask)的实战总结和常见问题(三)相关推荐

  1. 多任务学习综述:推荐系统多任务学习(multitask)的实战总结和常见问题(一)

    多任务学习算法系列的主要内容是回顾和总结自己2019-2021间在深度学习多任务学习算法(multitask)的工业实践和遇到的常见问题,欢迎更多同学讨论和指正,同时也宣传一波我们组在推荐方向的工作成 ...

  2. 【推荐系统多任务学习 MTL】PLE论文精读笔记(含代码实现)

    论文地址: Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized ...

  3. 深度学习核心技术精讲100篇(八)-keras 实战系列之深度学习中的多任务学习(Multi-task learning)

    多任务学习(Multi-task learning)简介 多任务学习(Multi-task learning)是迁移学习(Transfer Learning)的一种,而迁移学习指的是将从源领域的知识( ...

  4. 多任务学习 (Multitask Learning) 汇总

    1 前言 多任务学习(Multi-task learning)是和单任务学习(single-task learning)相对的一种机器学习方法.在机器学习领域,标准的算法理论是一次学习一个任务,也就是 ...

  5. 如何融合多任务学习 (Multi-Task Learning ) 损失函数loss

    目录 1 Uncertainty Weighting 1.1 基础概念 1.2 方法 2 GradNorm 2.1 原理 2.2 方法 3 Multi-Objective Optimisation 3 ...

  6. 【推荐系统多任务学习MTL】MMoE论文精读笔记(含代码实现)

    论文地址: Google KDD 2018 MMOE (内含论文官方讲解视频) PDF Modeling Task Relationships in Multi-task Learning with ...

  7. 排序层-深度模型-2020:PLE【多任务学习模型】【腾讯】

    PLE模型是腾讯发表在RecSys '20上的文章,这篇paper获得了recsys'20的best paper award,也算为腾讯脱离技术贫民的大业添砖加瓦了.这篇文章号称极大的缓解了多任务学习 ...

  8. 多任务学习(Multi-task Learning)方法总结

    多任务学习(multi task learning)简称为MTL.简单来说有多个目标函数loss同时学习的就算多任务学习.多任务既可以每个任务都搞一个模型来学,也可以一个模型多任务学习来一次全搞定的. ...

  9. 【推荐系统多任务学习MTL】ESMM 论文精读笔记(含代码实现)

    论文地址:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate ...

最新文章

  1. Android按钮事件的4种写法
  2. mac mongodb可视化工具_「时序数据库」和MongoDB:第3部分-查询、分析和呈现
  3. [转载]We Recommend a Singular Value Decomposition
  4. 高并发图片实时渲染技术在阿里妈妈的大规模应用
  5. 【Siddhi】Error:osgi: [siddhi-execution-string] Manifest file ${_include} missing OSGi facet
  6. Eratosthenes筛法求素数
  7. IJCAI阿里论文 | JUMP: 一种点击和停留时长的协同预估器...
  8. redis新数据类型-Geospatial
  9. AFNetwork 作用和使用方法具体解释
  10. MySQL数据库:参数优化
  11. 百病皆由痰作祟~一碗神奇的水?(生姜红糖水、姜糖水、中医)
  12. python实现微信发送信息
  13. 诚之和:一年过去了,蚂蚁集团IPO“批文”到期!再上市需重新“排队”
  14. 巨潮网怎么下载年报_如何下载上市公司的年度报告
  15. 【周末送新书】基于BERT模型的自然语言处理实战
  16. Android_listview_video安卓列表视频直接播放
  17. 表观修饰的“当红炸子鸡” - 组蛋白乳酸化
  18. web程序安装说明书
  19. E - Obstacle Course的详细解答
  20. 多线程读写大量数据到excel

热门文章

  1. 岁月的剪影【五月Alive】
  2. mysql字符凭藉_凭借清华扫地僧的路线指引,从Java基础到算法,吊打阿里面试官!...
  3. 【阿朱说】到底啥叫企业数字化转型
  4. 中国垃圾车产业运营模式分析及未来需求预测报告2021年版
  5. php怎么解析mqtt协议,关于php:PHPMQTT-v131-版本发布MQTT-协议解析-协程客户端
  6. 去除android浏览器下a/input等元素获得焦点时高亮边框,大发黄金版手机登陆-官网首页...
  7. vb.net限制软件使用次数_小程序客服消息怎么使用、有没有什么限制?
  8. 如何在R中将数字格式化为百分比
  9. 【Linux】基础IO(万字详解) —— 系统文件IO | 文件描述符fd | 重定向原理
  10. Introduction to GPON and XGS-PON Protocols