查看原文
其他

【强基固本】多场景建模



“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

来源:知乎—绝密伏击

地址:https://zhuanlan.zhihu.com/p/446635065

01

背景

最近在我们信息流尝试了一些多场景建模的方法,总结一下具体的实践。首先介绍下多场景建模的背景。在我们导航右侧的图文场景,主要包含scene1和scene2两个场景,这两个场景用户的行为是有差异的,从整体上看,两个场景的CTR相差很大,高CTR的数据也相差很大,scene1主要是星座、体育、彩票的CTR最高,scene2主要是游戏、动漫、星座是高CTR数据。两个场景的用户活跃度也有很大差异,scene1冷用户的pv占比接近50%,而scene2都是点击用户,冷用户1天的平均pv是5,而活跃用户1天的平均pv是16左右。那么我们的问题就是针对scene1、scene2不同场景样本分布不同,如何同时建模共性和差异性。在具体实践中,我们参考了阿里巴巴2021年提出来的STAR模型结构。


02

多场景建模与单场景/多任务学习的区别

在介绍具体实践之前,这里先介绍下多场景建模和单场景建模的区别,以及和多任务学习的区别。对于单场景建模,我们需要根据样本    预测点击率    ,我们假设样本    是独立同分布的。而对于多场景,我们需要根据场景    内的样本    ,预测点击率    ,样本    只有在场景    内的是独立同分布的。

和多任务学习相比,多任务是解决相同场景下的不同任务,而多场景建模是解决不同场景下的相同任务。例如:推荐场景下的多任务学习通常是单个样本对于CTR,CVR等目标同时预估,而多场景建模是对不同场景样本预估相同的CTR目标。直接采用多任务学习的方法解决多场景建模也会存在一些问题。

图1 多场景建模和多目标学习

对于多场景建模,如果采用各场景独立的方式,会忽视场景共性,导致长尾小场景难以学好,同时每个场景维护一个模型极大地增加系统资源开销和人力成本。如果直接将样本混合,训练共享模型,会忽视场景差异性,导致预测准确度下降。


03

多场景建模版本迭代

在我们自己的业务场景,对于多场景建模,最早的版本1是直接将场景信息作为特征使用。后来我们在视频场景分别实验了将场景信息作为bias侧特征,以及多塔结构,最近的版本是在合并其它小场景时,使用的MMOE结构。

版本1:场景信息直接作为特征使用

版本2:场景信息作为bias侧特征

版本3:多塔结构+场景信息作为bias侧特征

版本4:MMOE结构建模多个场景

其中,版本3多塔结构+场景信息作为bias侧特征在视频场景取得了不错的效果。版本4融合了右侧图文场景+其它小场景,上线后在主场景取得了3%+的提升,小场景取得了10%+的提升。

图2 多场景版本迭代


04

阿里巴巴STAR多场景建模

在之前版本的基础上,前段时间调研了一下阿里的一篇论文,使用STAR建模不同场景。阿里的场景一共有19个,STAR模型在阿里场景整体CTR提升了8%,场景信息如图3所示。

图3 阿里巴巴各场景信息

接下来介绍下STAR模型结构。STAR模型结构如图4所示,目标是学习场景内特定行为和场景间共性行为。主要的方法是使用了一个叫STAR的结构,每个场景拥有自己独立的参数,同时场景间拥有共享的参数。场景间共享参数和场景独有参数相乘,得到实际每个场景的参数。

图4 阿里巴巴STAR模型结构


05

STAR结构(星型拓扑全连接)

图4中建模场景差异性和共性主要的结构是STAR,其具体结构如图5所示。中间是共享的FCN参数,和每个独立场景的参数进行element-wise相乘,得到最终的FCN参数。

图5 STAR星型拓扑全连接

在STAR中,对于每一个FC层,都有中心的共享参数和场景私有参数,每个场景最终的参数通过二者进行element-wise product得到:

假设FC层的输入是    ,那么输出由下式计算得到:

通过这样的实现方式,STAR的共享参数被所有场景样本的梯度更新,学习场景共性,而场景私有参数只被场景内样本更新,建模场景差异性。


06

STAR结构对比MMOE

和MMOE相比,MMOE对不同场景采用独立的全连接参数(门控网络参数独立,门控网络之后的塔也是独立的),缺少参数共享。另外,为了建模场景间的共性,MMOE是通过门控隐式建模,而STAR是直接通过共享参数。此外,MMOE引入的门控显著增加了计算开销,而STAR基本上没有额外计算开销。从实际结果来看,STAR结构确实比MMOE快很多。下面是阿里一次分享里面对比MMOE的结果。

  • MMOE 对不同任务采用独立的FC层,缺少共享参数,而STAR的FC层共享参数可以学习场景共性行为。

  • MMOE 通过可学习gate隐式的建模场景间的关系,这样会丢失显示的domain-specific知识,而STAR引入场景先验,通过场景私有/共享参数,而不是gate显示建模场景间的关系,保留显示的domain-specific知识(保留在场景私有参数内)。

  • MMOE通过gate,需要计算每个场景的expert,相对共享模型FC层会有M倍的计算开销 (M为场景数,通常较大,在展示广告下可达上百),而STAR稀疏激活的特性不引入额外计算,和原来计算开销持平。

  • 由于gate的学习存在冷启动,MMOE对于新场景不友好,而STAR更易于接入新场景,只需将新场景私有参数全初始化为1即可开始fine-tune接入,更加符合展示广告场景动态变化的需求。


07

STAR在我们自己场景的实验结果

最后,在我们的右侧scene1、scene2场景上进行了实验。除了使用STAR结构,我们对scene1、scene2使用了独立的用户行为序列(这里的序列是和目标id同类别的序列,比如目标id是娱乐新闻,那么序列就是所有娱乐相关的行为)。实验结果如图6所示。

图6 实验结果

实验结果来看,单独的STAR结构并没有明显提升,效果最显著的还是每个场景独有的序列。这里可能的原因是模型虽然期望建模不同场景的差异性,但是由于特征都是混合在一起的,因此模型很难从混合序列中区分特定场景的兴趣。此外,在我们混合序列中引入相关新闻这样的点击,但是语料中没有相关新闻的样本,这样可能导致STAR模型过于关注场景的共性。实际上,最后我们实验出有效果的是每个场景独有的用户序列,如图7所示,相当于从语料层面,直接区分了用户在每个场景的兴趣。

图7 每个场景独立序列(最终上线版本)


08

为什么独立序列是有效的

为什么每个场景独有行为序列是有效果的。我们可以看出,混合序列和后验ctr的相关性只有0.09,而分场景序列和对应场景的后验ctr相关系数是0.198,基本上相关性提升了一倍。

图8 序列长度和后验CTR的相关性

图8很直观的反应了混合序列和分场景序列,和后验CTR的关系。总结一下,就是分场景序列能够从语料侧区分用户不同场景兴趣,之所以有效果,也验证了不同场景用户行为差异大。

图9 序列长度和CTR的关系图

参考文献

https://mp.weixin.qq.com/s/c7rckW2u2SCd98hwzQy4Cg

https://arxiv.org/abs/2101.11427

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存