合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
本文工作是从业务出发提出的一项创新性工作,首先来介绍一下业务背景。
图中所示是常见的 Shopee 双列流 feed,用户点击一个直播后,会进入全屏沉浸流,产生消费时长,同时也可以点击购买商品,产生消费下单。
该路径下的用户会经历几个阶段:
因此,不同用户群体对不同任务指标的偏好相差较大,通过数据分析,我们发现 CTR、停留时长、CVR 任务的用户群分布类似于幂律分布。对于不同阶段的用户,CTR、停留时长、CVR 等分布也不同,新用户的 CTR、停留时长等分布较为靠后。因此,我们观测到不同任务指标的偏好与用户当前的状态密切相关,且用户状态会随时间而变。
我们从数据分析中提炼出了如下的关键问题:现有方法中在多任务优化时,对所有用户一视同仁,会导致优化跷跷板现象。因此问题核心是要准确追踪用户状态,才能同时提高 CTR、时长和订单指标。对此问题进行拆解,可以得到如下三个子问题:如何识别用户状态,如何追踪用户状态信息以及如何结合用户状态优化多任务模型。
针对以上问题,我们提出了 STAN 这一解决方案。STAN 网络如上图所示,分为几个部分:右侧是传统的 MMoE 的模型结构,是 PLE 模型;左侧是对用户信息建模,用户信息会反映在 loss 上,对 loss 进行调整。
首先,第一个问题是如何识别用户状态。我们使用了用户特征抽取网络建立特征间的交互关系,通过 Attention 网络结构,针对特定任务生成含有用户倾向信息的用户表征。在此之上构建 loss,Label 为用户是否点击、购买等。这里没有 Item 侧信息,Label 的平均估计为用户对 CTR、CVR、时长等的偏好。
通过对用户每个目标的预估值,就能够大概知道用户处于哪个状态,同时针对每个用户,我们引入了用户自适应的 Beta 分布对用户倾向的预测值重采样。Beta分布在用户数据较少情况下置信度低,此时预估值较为不准确,需要引入重采样校正方法校正产出预估值,从而降低极端数据影响。
最后是结合用户状态,优化多任务模型。多任务模型的优化部分会叠加本身多任务模型 loss 与用户状态 loss,同时训练,同步迭代。
首先,我们进行了理解性试验,验证离线效果。
如何验证本文方法能否识别用户状态呢?我们对比了同一组用户在不同模型的表征。如上图所示,STAN 模型对于 Wander、Stick、Loyal 用户分群下的表示比 PLE 区分度更大。该图是对用户 Emb 降维到二维空间构建的,PLE、STAN 模型用的用户 Emb 是通过 userid 抽取得到的。
另一个问题是,本文方法能否准确追踪用户状态?我们对比了同一组用户在不同日期的状态,如上图右下角的图中所示,五星表示用户,Day 1 用户处于 New 的状态,Day 31 则变为 Wander 和 Stick 状态,说明本方法能够自适应地追踪用户状态的变迁。
我们采用工业数据集对效果进行了验证,为了方便对比,我们使用了三周的数据进行训练,一周的数据进行测试。评估指标是 AUC,NDCG@1。在图中的 PLE 模型中,我们添加了 stage 的标识,固定了 2 个 stage,任务准确率有一定提升。在增加自适应 stage 后,准确率有所提升,但模型波动较大。加入 Beta 重采样后,准确率稳中有升,模型更加稳定。
我们在公开数据集:微信视频号数据集上进行了验证,其中有三个目标:点赞、点 up 主头像、转发,评估指标是 AUC,NDCG@5,其中 NDCG@5 是该数据集中的公开对比指标。从图中可以看出,实验效果与 Shopee 数据集表现类似。
我们将此工作在线上进行了验证,base 是 PLE 模型,实验组增加了 STAN 模型。实验效果 CTR+3.94%,staytime+3.05%,order+0.88%,每个指标都有所增长。其中 order 增长较小,是因为 Shopee 平台上的 order 量还比较小,相应的用户群也较小,因此提升稍弱一些。
本文的工作已被 Recsys’23 接收。
总结来说,我们应当重视推荐系统中用户的生命周期;在多任务学习中需要显式建模用户生命周期;同时我们需要立足于线上真实分布的数据,深挖技术突破点。
未来,我们会在每一层的推荐候选中结合用户生命周期进行细粒度调整;同时也希望创新方法可以落地,业务也需要进行持续创新。
TOP