Multi-task多任务学习在推荐算法中应用(2)

1. 阿里ESM2:Conversion Rate Prediction via Post-Click Behaviour Modeling

我们之前介绍过一种基于多任务学习的CVR预估模型ESMM,简单回顾下:

ESMM中有两个子网络,分别是Main Task用于预估CVR值,Auxiliary Tasks用于预估CTR值。二个网络共享Embedding部分。Loss分为两部分,一是CTR预估带来的loss,二是pCTCVR(pCTR * pCVR)带来的loss。CTCVR是从impression到buy,CTR是从impression到click,所以CTR和CTCVR都可以从整个impression样本空间进行训练,一定程度的消除了样本选择偏差。

但对于CVR预估来说,ESMM模型仍面临一定的样本稀疏问题,因为click到buy的样本非常少。但其实一个用户在购买某个商品之前往往会有一些其他的行为,比如将商品加入购物车或者心愿单。如下图所示:

文中把加购物车或者心愿单的行为称作Deterministic Action (DAction) ,表示购买目的很明确的一类行为。而其他对购买相关性不是很大的行为称作Other Action(OAction) 。那原来的 Impression→Click→Buy购物过程就变为Impression→Click→DAction/OAction→Buy过程。

ESM2模型结构:

那么该模型的多个任务分别是:Y1:点击率 Y2:点击到DAction的概率 Y3:DAction到购买的概率 Y4:OAction到购买的概率

并且从上图看出,模型共有3个loss,计算过程分别是:

pCTR:Impression→Click的概率是第一个网络的输出。
pCTAVR:Impression→Click→DAction的概率,pCTAVR = Y1 * Y2,由前两个网络的输出结果相乘得到。
pCTCVR:Impression→Click→DAction/OAction→Buy的概率,pCTCVR = CTR * CVR = Y1 * [(1 - Y2) * Y4 + Y2 * Y3],由四个网络的输出共同得到。其中CVR=(1 - Y2) * Y4 + Y2 * Y3。是因为从点击到DAction和点击到OAction是对立事件。

随后通过三个logloss分别计算三部分的损失:

最终损失函数由三部分加权得到:

2. YouTube:Recommending What Video to Watch Next: A Multitask Ranking System

本文主要解决了视频推荐场景下普遍存在的两个问题:

1)视频推荐中的多任务目标。比如不仅需要预测用户是否会观看外,还希望去预测用户对于视频的评分,是否会关注该视频的上传者,否会分享到社交平台等。
2)偏置信息。比如用户是否会点击和观看某个视频,并不一定是因为他喜欢,可能仅仅是因为它排在推荐页的最前面,这会导致训练数据产生位置偏置的问题。

模型结构:

从上图可知,整个模型需要预测两大类目标,分别是:

engagement objectives:主要预测用户是否点击和观看视频的时长。其中通过二分类模型来预测用户的点击行为,而通过回归模型来预测用户观看视频的时长。
satisfaction objectives:主要预测用户在观看视频后的反馈。其中使用二分类模型来预测用户是否会点击喜欢该视频,而通过回归模型来预测用户对于视频的评分。

模型中有两个比较重要的结构:Multi-gate Mixture-of-Experts (MMoE)消除位置偏置的shallow tower。

MMoE的结构为:


shallow tower的结构为:

通过一个shallow tower来预测位置偏置信息,输入的特征主要是一些和位置偏置相关的特征,输出的是关于selection bias的logits值。然后将该输出值加到子任务模型中最后sigmoid层前,在预测阶段,则不需要考虑shallow tower的结果。值得注意的是,位置偏置信息主要体现在CTR预估中,而预测用户观看视频是否会点击喜欢或者用户对视频的评分这些任务,是不需要加入位置偏置信息的。

3. 知乎推荐页Ranking模型

上图是知乎在推荐场景下使用的多目标模型,预测的任务包括点击率、收藏率、点赞率、评论率等,共 8 个目标。可以看出知乎的做法也是底层embedding和DNN前几层权重设置成共享。损失函数可设置成这几个 task 的简单线性加权和。上线后线上性能:点击率基本不变,而其他的几个指标,比如点赞,收藏大幅提升。

4. 美图推荐排序多任务

模型结构:

如上图,Multi-task NFwFM模型的前几个隐层是共享的。在最后即将预估多个目标时通过全连接层进行拆分,各自学习对应任务的参数,从而专注地拟合各自任务。在线上预估时,因为模型尺寸没有变化,推理效率和线上的点击率预估模型一致。考虑到我们是在点击率任务的基础上同时优化关注转化率,融合公式上体现为优先按照点击率排序再按照曝光→关注的转化率排序。Multi-task NFwFM已在美图秀秀社区首页Feeds推荐、相关推荐下滑流全量上线。首页Feeds 点击率 +1.93%,关注转化率 +2.90%,相关推荐下滑流人均浏览时长+10.33%, 关注转化率+9.30%。

小结

当我们在推荐场景需要同时优化多个目标时,多任务学习就可以派上用场。那反过来思考一个问题,在什么样的情况下,多任务学习会没效果呢?其实也很容易想到,当多个任务的相关性没那么强时,这些任务之间就会相互扰乱,从而影响最后的效果。

最后总结下现在多任务学习模型的主要使用方式:

  • 底层embedding和mlp参数共享,上层演化出各个任务的分支,最后loss函数是各个任务的简单加权和。
  • 通过多任务之间的关系来建模出新的loss函数,比如阿里的ESSM,ESSM2。
  • 通过Multi-gate Mixture-of-Experts (MMoE)这种特殊的多任务结构来学习出不同任务的权重,比如YouTube的多任务模型。

参考文献:

编辑于 2019-12-30

文章被以下专栏收录