首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浅谈 多任务学习 在推荐系统中的应用

浅谈 多任务学习 在推荐系统中的应用

作者头像
NewBeeNLP
发布于 2022-01-19 07:15:16
发布于 2022-01-19 07:15:16
2K0
举报
文章被收录于专栏:NewBeeNLPNewBeeNLP

作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP

一. 为什么要用多任务学习?

  1. 「方便」。在推荐任务中,往往不仅要预测用户的engagement(例如CTR),还要预测用户satisfaction(例如评分、CVR、观看时长)。如果用多个模型预测多个目标,参数量会很大,而且在线上也不好维护。因此需要使用一个模型来预测多个目标,这点对工业界来说十分友好。
  2. 多任务学习不仅方便,还可能「效果更好」。针对很多数据集比较「稀疏」的任务,比如短视频转发,大部分人看了一个短视频是不会进行转发这个操作的,这么稀疏的行为,模型是很难学好的(过拟合问题严重),那我们把预测用户是否转发这个稀疏的事情和用户是否点击观看这个经常发生事情放在一起学,通过参数共享,一定程度上会缓解模型的过拟合,提高了模型的泛化能力。这其实是regularization和transfer learning。也可以理解为,其他任务的预测loss对于"转发"事件预测来说是辅助loss。从另一个角度来看,对于数据很少的新任务,这样也解决了「冷启动问题」

二. 多任务学习模型

2.1 Baseline -- Shared-Bottom Model

2.1.1 硬参数共享

不同任务间共用底部的隐层。这种结构由于全部的参数共享可以减少过拟合的风险(原因如上所述),但是效果上受到任务差异(optimization conflicts caused by task differences)和数据分布差异带来的影响。

2.1.2 软参数共享

与硬参数共享相对的是软参数共享:每个任务都有特定的模型、参数,参数不共享;但对模型间的参数,使用「距离正则化约束」,保障参数空间的相似。

两个任务的参数完全不共用,但是对不同任务的参数增加L2范数的限制(L2-Constrained):

2个任务的参数完全不共用,但是在损失函数中加入正则项。α是两个任务的相似度,α越大,两个任务参数越趋近于一致。

和shared-bottom结构相比,这样的模型对增加了「针对任务的特定参数(task-specific parameters)」,在「任务差异很大」的情况下效果比较好。缺点就是模型增加了参数量(如果要训练k个目标,就增加k倍),所以需要更大的数据量来训练模型,而且模型更复杂并不利于在真实生产环境中实际部署使用。

2.2 MMoE

论文 Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts 中提出了一个Multi-gate Mixture-of-Experts(MMoE)的多任务学习结构。

Shared-bottom, OMoE, MMoE

文章提出的模型MMoE目的就是相对于shared-bottom结构不明显增加模型参数的要求下捕捉任务的不同。其核心思想是将shared-bottom网络中的函数 f 替换成 MoE 层,如上图c所示,形式化表达为:

fk(x)=ni=1gk(x)ifi(x)yk=hk(fk(x)),

其中门控网络

gk(x)=softmax(Wgkx)

输入就是input feature,输出是所有experts上的权重。其实这个门控很像attention,针对不同的任务分配给experts以不同的权重。

一方面,因为gating networks通常是轻量级的,而且expert network是所有任务共用,所以相对上文提到的软参数共享方法有「参数量」上的优势;

另一方面,相对于所有任务公用一个gate的方法One-gate MoE model(OMOE),这里MMoE中每个任务使用不同的gating networks,从而学习到不同的组合experts的权重,因此模型考虑到了捕捉到任务的「相关性和区别」。因此在模型的效果上优于上文提到的硬参数共享的方法。实际上,如果任务相关度很低,则OMoE的效果相对于MMoE明显下降,说明MMoE中的multi-gate的结构对于「任务差异带来的冲突」有一定的缓解作用。

MMoE在Youtube推荐场景下的实践

论文:Recommending What Video to Watch Next: A Multitask Ranking System,这篇主要是在商业推荐上用了MMoE,以及提出了shallow tower解决position bias的方法。

文中的优化目标大体分为两类,

  • 一类是「engagement」目标,包括点击、观看时长、完播率等,表示用户的参与度;
  • 第二类是「satisfaction」目标,例如评分或差评,表示用户的满意度。

这其中既有分类任务(e.g. clicked)也有回归任务(e.g. 观看时长、评分)。从文中实验来看,总共包括7个任务,这些任务或者是递进/依赖的关系,例如只有观看之后才会打分;或者是冲突的关系,点了之后发现不喜欢。MMoE比较适合这种多个任务之间联系不紧密、甚至冲突的场景。

完整的模型结构如下图所示。模型对每一个目标都做预估,分类问题就用cross entropy loss学习,回归问题可就是square loss。最后用融合公式来平衡用户交互和满意度指标(将目标预估结果做加权平均)取得最佳效果。这个权重需要人工手动来调整。

2.3 SNR(Sub-Network-Routing)

出自论文 SNR: Sub-Network Routing for Flexible Parameter Sharing in Multi-Task Learning。

MMoE主要针对多个共享的expert 网络的输出进行attention组合(也就是门控)。SNR 在这种模块化的基础上,使用编码变量(coding variables)控制子网络之间的连接,实现多任务模型中不同程度的参数共享。

SNR 的提出主要解决级间的参数共享问题,达到最佳组合的网络结构。简言之,SNR和MMoE的不同之处就是,MMoE拿多个子网络的输出做加权直接输入到了每个任务各自的tower中;而SNR对不同子网络的输出进行组合又输入到了下一层子网络,形成子网络的组合。

SNR设计了两种类型的连接方式:SNR-Trans 和 SNR-Aver来学习子网络的组合,最终得到特定多任务场景的最优网络结构。

图(b)(c)有两层子网络,分别是底层的DNN routing部分(3个sub-networks)和顶层的多任务tower部分(2个sub-networks)。

  • 「SNR−Trans模型:」 将共享层划分为子网络,子网络之间的连接(虚线)为变换矩阵W乘以标量编码z:

其中,

u1,u2,u3

代表low-level输出;

v1,v2

代表high-level输入;

Wi,j

代表

j

low-level到

i

high-level的权重矩阵,

zi,j

代表

j

low-level到

i

high-level的连接性(二元变量,0 or 1)。

W

z

是我们要学习的参数。假设

z

服从 Bernoulli 分布,用0/1来控制网络的连接与断开。但是

z

是不可微的,把

z

做一个变换,变换成一个平滑的函数:

  • 「SNR−Aver模型:」 将共享层划分为子网络,子网络之间的连接(虚线)为加权平均。

2.4 PLE(Progressive Layered Extraction)

RecSys2020最佳长论文 Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations.

文章首先提出多任务学习中不可避免的两个缺点:

  • 「Negative Transfer.」 针对相关性较差的多任务来说,使用hard parameter sharing这种方式通常会出现negative transfer的现象,原因就是因为任务之间相关性较低或者说存在冲突的话,会导致模型无法有效进行参数的学习,学的不伦不类。
  • 「跷跷板现象」。对于一些任务相关性比较复杂的场景,通常会出现跷跷板现象,即提升一部分任务的同时,会牺牲其他任务的效果。

为了解决“跷跷板”现象,文章针对多任务之间的共享机制和单任务的特定网络结构进行了重新的设计,提出了PLE模型。

2.4.1 CGC (custom gate control)

首先,只考虑一层的抽取网络,就是CGC。

从图中的网络结构可以看出,CGC的底层网络主要包括「shared experts」「task-specific experts」构成,每一个expert module都由「多个expert子网络」组成。每个子任务tower的输入是对task-specific和shared两部分的expert vector进行加权求和。

CGC网络的好处是既「包含了task-specific网络独有的个性化信息,也包含了shared 网络具有的更加泛化的信息」,文章指出虽然MMoE模型在理论上可以得到同样的解,但是在实际训练过程中很难收敛到这种情况。

2.4.2 PLE

PLE就是上述CGC网络的多层叠加,以获得更加丰富的表征能力。具体网络结构如下图所示:

注意,在底层的Extraction网络中,除了各个task-specifict的门控网络外,还有一个share部分的门控网络,这部分门控网络的输入「包含了所有input」,而各个task-specific的门控网络的输入是task-specific和share两部分。

下一篇将介绍多任务学习的目标loss设计和优化改进、一些辅助loss的设计、以及多目标排序的代码实践。

本文参考资料

[1]腾讯PCG RecSys2020最佳长论文——视频推荐场景下多任务PLE模型详解: https://zhuanlan.zhihu.com/p/272708728

[2]Recommender:推荐系统中的多任务学习与多目标排序工程实践(上): https://zhuanlan.zhihu.com/p/422925553

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
这些我全要!推荐系统一石二鸟之道
在做推荐系统时,在系统刚刚搭建时,针对业务目标我们可能只需要去优化CTR或者CVR即可,但是不同的推荐场景下的优化目标不同。同时,随着系统的不断迭代,我们希望推荐算法能够同时优化多个业务目标。
炼丹笔记
2021/05/14
8480
这些我全要!推荐系统一石二鸟之道
多任务学习模型MMoE详解 Multi-gate Mixture-of-Experts 与代码实现
在线上推荐预测任务时往往需要预测用户的多个行为,如关注、点赞、停留时间等,从而调整策略进行权衡。其中涉及到多任务学习,本篇将会大概整理一些常用的模型如MMoE, ESMM, SNR方便理解与学习。
大鹅
2021/06/09
16K0
多目标建模算法PLE
在现如今的推荐系统或者搜索中,都存在多个目标,多目标的算法在现如今的系统中已然成为了标配。在多目标的建模过程中,如果不同的学习任务之间较为相关时,多个任务之间可以共享一部分的信息,这样最终能够提升整体的模型学习效果。但是如果多个任务之间的相关性并不强,或者说多个任务之间存在某种冲突,这样通过部分的共享就会起到事与愿违的效果,这便是通常所说的在多任务建模中出现的负迁移(negative transfer)现象,即在相关性不强或者无相关性的多任务环境下进行信息共享,最终影响整体的网络效果,MMo[1]便是在这样的情况下被提出。在MMoE中,通过共享多个专家(expert)实现信息的共享,同时针对每一个上层任务(task)都有对应的门控函数(gate),学习到多个专家对于特定任务的贡献程度,即专家的分布。以此,实现了对任务之间的关联和区别的学习。
felixzhao
2023/01/18
1.5K0
多目标建模总结
在推荐系统中,通常有多个业务目标需要同时优化,常见的指标包括点击率CTR、转化率CVR、 GMV、浏览深度和品类丰富度等。为了能平衡最终的多个目标,需要对多个目标建模,多目标建模的常用方法主要可以分为:
felixzhao
2023/01/19
1.4K0
多任务学习如何做到你好我也好?
Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations (Recsys20)
炼丹笔记
2021/05/14
2.2K0
多任务学习如何做到你好我也好?
基于Pytorch的多任务推荐系统工具包发布
MTReclib是基于PyTorch开发的用于多任务推荐系统的开源框架。在MTReclib中,我们实现了诸多经典的多任务推荐模型,并且提供了4个多任务数据集以及相应结果。该框架易于扩展,基于该框架设计新的多任务模型或者尝试新的数据集十分方便。MTReclib地址:
张小磊
2022/04/08
8230
基于Pytorch的多任务推荐系统工具包发布
7篇顶会论文带你梳理多任务学习建模方法
多任务学习(Multitask Learning)是迁移学习的一种方式,通过共享表示信息,同时学习多个相关任务,使这些任务取得比单独训练一个任务更好的效果,模型具有更好的泛化性。在深度学习模型中,多任务学习的最直接实现方法是多个Task共享底层的多层网络参数,同时在模型输出层针对不同任务配置基层Task-specific的参数。这样,底层网络可以在学习多个Task的过程中从不同角度提取样本信息。然而,这种Hard Parameter Sharing的方法,往往会出现跷跷板现象。不同任务之间虽然存在一定的关联,但是也可能存在冲突。联合训练导致不相关甚至冲突的任务之间出现负迁移的现象,影响最终效果。为了解决Hard Parameter Sharing的弊端,学术界涌现了如多专家网络(Multi-expert Network,MoE)等多种解决深度学习中多任务学习问题的方法,是学术界一直以来研究的热点,在工业界也有诸多应用。本文从最基础的多任务学习开始,梳理了近几年来7篇多任务学习顶会相关工作,包括Hard/Soft Parameter Sharing、参数共享+门控、学习参数共享方式等建模方式。
圆圆的算法笔记
2022/09/22
4.7K0
7篇顶会论文带你梳理多任务学习建模方法
【CTR】MMoE:Google 多任务学习框架
基于神经网络的多任务学习已经过成功应用内许多现实应用中,比如说之前我们介绍的阿里巴巴基于多任务联合学习的 ESMM 算法,其利用多任务学习解决了 CVR 中样本选择偏差和样本稀疏这两大问题,并在实际应用场景中取得了不错的成绩。
阿泽 Crz
2020/07/21
2.5K0
【CTR】MMoE:Google 多任务学习框架
大厂技术实现 | 多目标优化及应用(含代码实现)@推荐与计算广告系列
推荐,搜索,计算广告是互联网公司最普及最容易商业变现的方向,也是算法发挥作用最大的一些方向,前沿算法的突破和应用可以极大程度驱动业务增长,这个系列咱们就聊聊这些业务方向的技术和企业实践。本期主题为多目标学习优化落地(附『实现代码』和『微信数据集』)
ShowMeAI
2021/10/21
2.3K1
大厂技术实现 | 多目标优化及应用(含代码实现)@推荐与计算广告系列
如何利用多任务学习提升模型性能?
提升模型性能的方法有很多,除了提出过硬的方法外,通过把神经网络加深加宽(深度学习),增加数据集数目(预训练模型)和增加目标函数(多任务学习)都是能用来提升效果的手段。(别名Joint Learning,Learning to learn,learning with auxiliary task....等)
石晓文
2021/03/24
5K0
如何利用多任务学习提升模型性能?
多任务学习经典品读:MMoE模型篇
今天带来是Google发表于KDD2018,针对于多任务推荐的经典模型MMOE。
NewBeeNLP
2022/11/11
1.8K0
多任务学习经典品读:MMoE模型篇
多目标学习在推荐系统中的应用
一般来说在搜索和推荐等信息检索场景下,最基础的一个目标就是用户的 CTR,即用户看见了一篇内容之后会不会去点击阅读。但其实用户在产品上的行为是多种多样的。比如在微信的订阅号中,用户可以对某个内容进行点赞,可以收藏这个内容,可以把它分享出去,甚至某篇文章如果他觉得比较符合他的兴趣,也可以进行留言。
石晓文
2020/11/09
4K0
多目标学习在推荐系统中的应用
【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)
上一篇我们讲了PLE的前置模型CGC(Customized Gate Control)定制门控网络,核心思想是在MMoE基础上,为每一个任务tower定制独享专家,使用任务独享专家与共享专家共同决定任务Tower的输入,相比于MMoE仅用Gate门控表征任务Tower的方法,CGC引入独享专家,对任务表征更加全面,又通过共享专家保证关联性。
LDG_AGI
2025/05/22
2130
【深度学习】多目标融合算法(六):渐进式分层提取模型PLE(Progressive Layered Extraction)
推荐广告算法模型之多目标模型
在推荐广告场景中,用户的不同行为代表用户对内容的不同需求和兴趣。点击:用户想看这个内容,点赞:喜欢这个内容,投币:用户爱这个视频,收藏:用户认为这个视频自己还能用到,会反复观看这个视频。因此在对用户进行推荐的时候,我们要综合考虑用户的各种行为,我们需要对用户的各种行为都进行预测,如果单独的对各种行为进行预测,然后再去融合的话,容易过拟合和样本选择偏差,因此将多个任务放在一个模型中,就成为了对用户各种行为去建模的主流做法,好处就是:一定程度上会缓解模型的过拟合,提高了模型的泛化能力;充分利用数据。
用户2794661
2022/06/03
1.6K0
SIGIR 2022 | 多场景多任务优化在支付宝数字金融搜索的应用
机器之心专栏 机器之心编辑部 本文是蚂蚁集团和武汉大学共同提出的, 一种面向多场景多任务优化的自动稀疏专家选择方法。论文题目为《Automatic Expert Selection for Multi-Scenario and Multi-Task Search》,它通过简洁有效的架构,实现了样本级细颗粒度的自动网络结构学习,对各种场景结构有较强的普适性。论文已被 SIGIR2022 录用,同时已经在支付宝数金搜索场景上进行了全流量推全,获得了显著的业务效果。 一、业务背景和问题 支付宝数金搜索是财富、保险
机器之心
2022/07/18
1.4K0
SIGIR 2022 | 多场景多任务优化在支付宝数字金融搜索的应用
Multi-gate Mixture-of-Experts(MMoE)
在工业界经常会面对多个学习目标的场景,如在推荐系统中,除了要给用户推荐刚兴趣的物品之外,一些细化的指标,包括点击率,转化率,浏览时长等等,都会作为评判推荐系统效果好坏的重要指标,不同的是在不同的场景下对不同指标的要求不一样而已。在面对这种多任务的场景,最简单最直接的方法是针对每一个任务训练一个模型,显而易见,这种方式带来了巨大的成本开销,包括了计算成本和存储成本。多任务学习(Multi-task Learning)便由此而生,在多任务学习中,希望通过一个模型可以同时学习多个目标。然而在多任务学习中,多个任务之间通常存在着或是彼此联系或是巨大差异的现象,这就导致了多任务模型常常效果不佳。Google于2018年提出了Multi-gate Mixture-of-Experts(MMoE)模型[1]来对任务之间相互关系建模。
felixzhao
2022/05/12
1.3K0
Multi-gate Mixture-of-Experts(MMoE)
【深度学习】多目标融合算法(五):定制门控网络CGC(Customized Gate Control)
上一篇我们讲了MMoE多任务网络,通过对每一个任务塔建立Gate门控,对专家网络进行加权平均,Gate门控起到了对多个共享专家重要度筛选的作用。在每轮反向传播时,每个任务tower分别更新对应Gate的参数,以及共享专家的参数。模型主要起到了多目标任务平衡的作用。
LDG_AGI
2025/03/20
3781
【深度学习】多目标融合算法(五):定制门控网络CGC(Customized Gate Control)
收藏|2021年浅谈多任务学习
当然不仅仅是NLP和推荐系统,最近CV和强化学习使用多任务学习进行创新的研究也是非常多的,但由于笔者对于CV和强化学习的多任务学习理解太浅,本文在谈多任务学习的时候更多会用NLP和推荐系统中的模型来举例和分析。
AI部落联盟
2021/02/24
1.4K0
【机器学习基础】一文"看透"多任务学习
大家在做模型的时候,往往关注一个特定指标的优化,如做点击率模型,就优化AUC,做二分类模型,就优化f-score。然而,这样忽视了模型通过学习其他任务所能带来的信息增益和效果上的提升。通过在不同的任务中共享向量表达,我们能够让模型在各个任务上的泛化效果大大提升。这个方法就是我们今天要谈论的主题-多任务学习(MTL)。
黄博的机器学习圈子
2021/04/16
3880
【机器学习基础】一文"看透"多任务学习
一文梳理多任务学习(MMoE/PLE/DUPN/ESSM等)
大家在做模型的时候,往往关注一个特定指标的优化,如做点击率模型,就优化AUC,做二分类模型,就优化f-score。然而,这样忽视了模型通过学习其他任务所能带来的信息增益和效果上的提升。通过在不同的任务中共享向量表达,我们能够让模型在各个任务上的泛化效果大大提升。这个方法就是我们今天要谈论的主题-多任务学习(MTL)。
炼丹笔记
2021/04/09
5.7K0
一文梳理多任务学习(MMoE/PLE/DUPN/ESSM等)
推荐阅读
相关推荐
这些我全要!推荐系统一石二鸟之道
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档