推荐系统(三):推荐系统中常见多任务模型MMOE,ESMM,CGC,AITM
作者:互联网
在实际生活中,我们关注的任务往往是一对多的,例如推荐系统场景中,我们希望物品的点击率和转化率都要高,如果只是单纯的集中于优化某一个目标,往往会导致其他被忽略的目标变差。多任务学习通过共享目标之间的表征,优化多个任务的目标,从而改善多个任务的模型性能,因此多任务模型在推荐系统中很常见。
这次和大家分享其中常见的几种多任务模型MMOE,ESMM,CGC,AITM,文末给出了参考文献,有兴趣的小伙伴可以从论文中获取详细内容。
Hard-parameter sharing
图 (a)为最常见的多任务模型,共享底部的bottom部分,只是在最后处理的时候区分不同的tower以对应不同的task。
k表示第k个task,f()为共享的bottom,h()为不同的tower。
这种方式底部学习多个任务之间的共同信息,不同的tower学习特定于任务的信息。
-
优点是该方法在多个任务之间相关性较高时,效果较好,且任务越多的时候,单个任务越不容易过拟合,因为bottom部分经过多个任务,学习了共同特征。
-
缺点就是在当多个任务之间相关性不高时,bottom部分难以学习到不同任务之间的共同表征
MMoE
图中(b)为MoE (Mixture-of-Experts),(c)为MMoE (Multi-gate MoE) 。相对于上面的方法,
-
MoE和MMoE的特点在于将bottom部分分割为多个experts,通过其中一部分experts学习一些任务的表征,从而弥补上述直接用一个网络无法有效学习到所有任务表征的缺陷。
-
同时它们增加了门(gate)控制,使得不同的experts占据不同的权重,这点类似于注意力机制,凸显不同expert对于任务的作用。
-
MoE和MMoE的不同之处在于,MMoE为每一个tower都设置了一个gate,即对于不同的任务可以更多样性的使用expert,从而动态捕捉共享信息和特定于任务的信息。
下式为其计算公式,k表示第k个任务,yk表示第k个任务对应的tower的输出,即后续可用于交叉熵损失函数计算。不同的fk可有门控gk和不同的experts的输出fi计算得到
CGC
CGC可以看做是MMoE的改进版本,MMoE中所有experts是被所有task共享的,这使得模型无法捕捉到人物之间更加复杂的关系,并且experts之间缺乏交互,只是在输入的时候在门控机制的作用下结合比例不同。
-
CGC加入了一组共享experts,这部分学习任务之间的公共信息,而experts A组和B组学习特定于任务的信息,这样分工就更加明确了。
-
并且CGC中的gate部分也有所改进,在MMoE中,gate计算得到权重后是和所有的特征fi进行计算得到fk,计算过程可以参考MMoE部分。权重的计算方式和MMoE相同,fi部分有所差异,不再是所有experts输出的特征,而是任务特有experts和共享experts的特征组合。
第一个框为任务特有experts的输出,第二个框为共享的experts的输出。
ESMM
大图为详细图,小图为简略图
在前面的多任务框架汇总,不同的tower对应的任务之间是没有交互的,即对应的损失函数就是每一个tower对应的损失函数求和。而ESMM框架中,作者考虑了任务之间的关系。
该方法主要考虑了点击率,转化率以及点击后转化率之间的关系。在item中,如果某个item的点击率很低,并不能表示他的转化率也很低。因为有可能item的展示很丑,大家都不想点;但是点进去发现,很符合要求。
-
之前的工作,点击率的预测是在曝光的数据中进行训练,在曝光数据上点击为正,未点击为负;
-
而转化率的预测是在点击的数据中训练,点击转化为正,点击未转化为负。
一方面,预测都是在整个数据上进行预测的,数据是有偏的,影响泛化性;另一方面,点击数据量远小于曝光数据量,数据稀疏使CVR模型拟合困难。
因此本文挖掘了cvr,ctr,ctcvr(点击后转化)之间的关系。如下式所示,ctcvr和ctr的训练都是在全量数据上训练的模型,这样去除了样本偏差问题。通过下式,间接计算得到cvr
损失函数如下式,第一部分为ctr-task,第二部分为ctcvr
AITM
该方法主要考虑序列动作之间的关系,比如看到->点击->购买。前面的动作可以给后面的动作带来有用信息,比如用户点击了item,那他更有可能会去购买这个item。
-
因此本文增加Info模块,从前一个任务向后一个任务传递有用信息,结合AIT融合info传递的信息为该任务所用
-
由于顺序依赖性,对于相同的受众,前一个任务应该比后一个任务具有更高的端到端转换概率。因此提出Behavioral Expectation Calibrator,实则一个正则项,
,维持前一个任务的输出要大于后一个任务的输出,最后结合交叉熵损失函数得到总的损失函数
AIT模块
可以参照文中的结构图来看:v为input的特征embedding,为经过tower t得到的输出,
为从第t-1个tower传过来的信息(info),为第t-1个AIT模块得到的输出,得到info的
是前馈神经网络,作者给出的代码中是单层神经网络
AIT计算方式,类似于self-attention
<·,·>为点积,h为前馈神经网络,文中采用单层MLP。
文献:
Xi D, Chen Z, Yan P, et al. Modeling the Sequential Dependence among Audience Multi-step Conversions with Multi-task Learning in Targeted Display Advertising[J]. arXiv preprint arXiv:2105.08489, 2021.
Ma X, Zhao L, Huang G, et al. Entire space multi-task model: An effective approach for estimating post-click conversion rate[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1137-1140.
Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 1930-1939.
Tang H, Liu J, Zhao M, et al. Progressive layered extraction (ple): A novel multi-task learning (mtl) model for personalized recommendations[C]//Fourteenth ACM Conference on Recommender Systems. 2020: 269-278.
标签:ESMM,task,点击,MMOE,MMoE,experts,任务,AITM,tower 来源: https://www.cnblogs.com/xiaweimian/p/15345084.html