算法在淘宝躺平推荐系统中的应用实践
淘宝躺平频道是手机淘宝内主推家居类商品的内容场景化导购平台(以下简称躺平)。频道中的内容主要以场景搭配为主,内容内挂载了多个商品锚点,点击商品锚点可以跳转到商品详情页。躺平强调算法大数据搭配及D端设计师理念,内容以多种形态迎合消费者的家居类需求。
用户可以通过以下3种方式进入淘宝躺平频道:
1)关注躺平家居,然后在手淘顶部ICON区域主动访问;
2)搜索躺平关键词访问;
3)点击手机淘宝首页猜你喜欢的躺平内容卡片。
多目标优化&MMoE
用户进入躺平频道页后,浏览和点击内容卡片进入内容详情页,点击内容详情页的商品锚点进入商品详情页,进而进行收藏加购等行为。业务最终的目标是GMV的提升,因此,业务模型涉及的优化目标包含了一跳点击,二跳点击,以及进入商品详情页后的收藏加购下单。我们当前的精排模型主要考虑了用户在场景内的一跳点击,缺乏对二跳以及后续相关行为的建模,与我们最终的优化目标是有gap的。因此,实现躺平频道的家多目标优化是模型深度优化和完成业务目标的必要途径。
▐ 多目标优化方法
已有的多目标优化方式包括:
- 通过sample weight进行多目标优化[1];
- 多个模型stacking;
- Shared bottom NN model[2,3,4];
- MMoE多目标模型[5]等。
方式1本质上并不是对多目标进行建模,而是把不同的目标折算成一个目标,并且相关的折算可能需要多次AB测试才能确定;方法2需要更多的模型参数,模型规模变大,线上serving需要更多的时间开销;方式3在基于深度学习的推荐模型中引入shared bottom layer来加强参数共享,通过多个目标的模型联合训练,减小模型的参数规模,同时防止模型过拟合,但是Shared bottom NN model能够成功的前提,是预测的目标之间的相关性比较高,对于差异性比较大的目标,简单粗暴的共享bottom layer反而容易造成不同任务之间的相互干扰。
MMoE是方法3的一个改进版本,其思想是所有目标共享多个experts,但是考虑到不同任务之间的特异性,为每一个目标设置一个gate,用来控制不同目标选择每个expert的信号占比,类似于weighted sum pooling操作。MMoE通过共享experts学习到不同任务的联系和差异,提高了每个任务的学习效率和质量,同时通过gates来平衡多个任务对experts信号的选择,不要求目标之间必须是高相关性的。
▐ MMoE模型介绍
MMoE模型的结构(下图c)基于广泛使用的Shared-Bottom结构(下图a)和MoE结构,其中图(b)是图(c)的一种特殊情况。
- Shared-Bottom Multi-task Model
如上图a所示,shared-bottom网络位于底部,多个任务共用这一层,我们将其表示为函数f。往上,K个子任务分别对应一个tower network,表示为 ,每个子任务的输出 。
- Mixture-of-Experts
MoE模型可以形式化表示为 ,其中 , 是n个expert network(expert network可认为是一个神经网络)。g 是组合experts结果的gating network,其输出是对不同experts的权重。
- MMoE模型: Multi-gate Mixture-of-Experts
MMoE模型的思想是用MoE结构替换shared-bottom网络中的函数 f ,如上图c所示,可形式化表达为: , 其中 ,输入是input feature,输出是不同任务在所有experts上的权重。
MMoE在躺平多目标优化实践
基于MMoE的灵活性及高可扩展性,我们选择MMoE作为躺平多目标优化模型,并对其进行了4个维度的优化和实验。
▐ 底层特征处理,引入局部激活单元
在传统的Embedding + MLP模型中,首先将大规模稀疏输入特征映射到低维Embedding向量中,然后通过pooling转换为固定长度向量,最后再把它们连接在一起输入到MLP以学习特征之间的非线性关系。这样存在的问题是:将多个特征向量压缩到一个固定长度的表示向量来学习特定用户所有的兴趣表示,限制了模型的能力,使得模型很难从历史行为中提取用户变化的兴趣。参考Deep Interest Network模型[6],我们在MMOE底层特征向量处理中引入局部激活单元,提取用户跟当前内容相关的向量表示。
▐ 加入线性特征&线性结构
在深度模型中,主要通过学习到的低维度稠密向量实现模型的泛化能力,从而实现对未见过的内容进行泛化推荐。 在躺平多目标优化中,我们不仅需要模型具备泛化能力,同时也希望模型能够通过线性逻辑对模型泛化的规则进行修正。在如何引入线性逻辑对MMoE进行优化方面,我们实现了5个版本优化方案,其中第4种方案的实验效果最优:
- 线性模型输出 + MMoE网络输出作为最终预测结果;
- 将线性特征输入到MMoE各任务Tower网络全连接层;
- 将线性特征输入到MMoE专家网络和门控网络;
- 在3)的基础上,同时结合1);
- 在2)的基础上,同时结合1)。
▐ 多目标Loss权重调参
在多目标学习中,每一组loss之间的数量级和学习难度不一样,如何平衡多个loss得到较优的效果也是一个值得研究的课题。在比较简单的多目标组合中,一般通过调超参就可以;对于比较复杂的多任务loss之间的平衡,可以参考其他loss权重优化的方法[7],这也是我们的多目标模型后续优化和探索的方向。
在躺平多目标前期实践中,只有一跳点击和二跳点击两个目标,目标组合相对简单,做法是直接看这几个loss输出的值,将他们调整到几个loss平衡的状态,然后开始根据训练验证的曲线,调整一下相对的权重。在实验了多组相对权重后,发现对于目前躺平一跳点击率和二跳点击率多目标优化而言,相对权重是1:1的效果最优,ctr和cvr预测的离线AUC分别提升0.24%和6.01%;
▐ 三目标优化&结构瘦身
除了对用户的一跳和二跳点击行为进行建模,我们还把用户通过躺平频道进入商品详情页后的收藏加购等行为视作第3跳目标进行建模,引入了三跳相关的样本和特征,使用MMoE进行三目标优化。并且考虑到目前设计的MMoE模型实际上包含了5层深度神经网络,线上打分消耗时间较长,我们对模型进行合理减层减参的“瘦身”试验,最终将模型调整至3层深度,取得了较好的效果;
▐ 效果
我们将训练得到的多目标模型用于躺平频道的内容推荐和躺平内容外投场景的精排阶段,上线完整AB7天,线上A/B Test结果如下:
MMoE模型的引入及我们所做的相关优化实践使躺平频道的二跳点击率得到了较大提升,前期优化中一跳点击率稍微负向,主要是因为目前的baseline是只基于ctr优化的,引入MMoE多目标优化后模型的优化变成了对场景
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E7%AE%97%E6%B3%95%E5%9C%A8%E6%B7%98%E5%AE%9D%E8%BA%BA%E5%B9%B3%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%E5%AE%9E%E8%B7%B5/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com