|
前言得物社区是潮流内容信息流推荐场景,用户在信息流可以浏览图片、视频,在视频详情页可以通过不断下滑进行沉浸式地体验。推荐系统在内容的个性化分发中有着关键的作用,而排序模型是保障算法推荐效果的重要支撑。过去得物社区,主要通过对曝光点击率CTR进行建模,提升用户在推荐流中的点击率。随着推荐系统的不断完善,为了进一步提升用户体验,在排序阶段需要对停留时长、点赞、评论、关注、收藏、分享、留存等指标进行优化。目前主流的推荐系统,后期都会通过对多目标进行建模,从而为用户提供更佳优质的体验感。不过在不同的场景、不同的产品形态下,各个目标的重要程度会有所区别。本文主要是阐述得物社区多目标建模的初步探索和具体实践。?理论篇业界一般存在多种主流的方案来解决多目标推荐的问题,包括多模型分数融合、排序学习和多任务学习,也是这些年多目标建模技术演进的方向。下面分别介绍三种主流方案的技术思想。?多模型分数融合多模型就是将多目标中的单个目标分别进行建模,每个模型有自己的模型结构、训练集和特征,单独进行训练,每个模型都可以进行预测打分。在线使用时,引擎并发请求多个预估模型,拿到全部模型的结果,在引擎侧按照设计的融合公式对多个模型分进行融合,最终按照融合后的分数进行排序。多模型融合方案的整体架构如下图所示。这种方案的优势很明显:1)可以针对单个目标进行深度的优化;2)各个目标从模型上解耦了,方便快速迭代;3)根据不同的业务目标,可以灵活地控制每个目标的权重。当然劣势也是显而易见地:1)多个模型需要多套资源来训练和存贮模型;2)融合公式的形式和参数也没有统一的范式,需要通过不断实践来找到适合业务的点;3)部分目标样本很稀疏,模型常常很难收敛。?排序学习?多模型分数融合是计算物品的综合得分进行排序,本质上通过point-wise排序来进行推荐。因此,可以学习每对物品之间的相对顺序(pair-wise),或者直接学习物品序列的得分(list-wise),来解决多目标的排序问题。优点是:1)直接优化排序目标,一般会有较好的排序效果;2)单个模型就具有多个目标的排序能力,不需要部署多个模型。缺点是:1)样本不好构造,预测时会出现很多训练集没有出现的相对顺序;2)样本量大,训练耗时久;3)正负样本不平衡问题更加显著。?*point-wise:只考虑单个推荐内容进行建模,模型对每个推荐内容进行独立打分,按照得分进行排序,一般回归方法均可解决此类问题。*pair-wise:考虑的是推荐内容对,根据内容对的偏序关系建模和优化,经典的模型有RankNet、LambdaRank等;*list-wise:考虑全部推荐内容,直接对所有内容可能的排序结果进行建模,常见的模型有ListNet、AdaRank、LambdaRank等。多任务学习多任务学习是迁移学习的一种,通过共享表示,将多个相关的任务放到统一网络结构进行学习的范式。其中的共享机制可以十分地灵活,常见有下面四种模式:参数的硬共享模式。不同任务的共享同一套底层的特征表示结构,从而可以对各个任务提取通用的特征表示,在此基础上再针对不同任务设计各自的子网络结构。?参数的软共享模式。与硬共享不同的是,软共享没有直接共用特征提取模块,而是通过间接的手段来对不同任务之间进行信息的同步,比如损失函数加约束、注意力机制或者隐含状态的复制,比较典型的就是谷歌的MMOE。?齐次共享模式。对于较深的网络结构,不同层提取的特征往往表示着不同尺度的物理特征。底层一般提取的是局部特征,高层提取的更多的是抽象的特征。如果多个任务也具有这种比较明显的层次结构,可以将低级任务在底层输出,高级任务在高层输出,从而达到统一网络结构学习多个任务的目标。?共享私有模式。与硬共享水平划分共享模块和私有模块不同的是,它按照垂直方向进行划分共享模块和私有模块。共享模块完成多个任务间共享特征的提取,而私有模块只提取各个任务相关特征,最终表征是有共享特征和私有特征组成。?比较经典的多任务学习网络结构有ESSM模型和MMOE模型等,下面做个初步的介绍。ESSM在一个闭环的推荐系统中,对于推荐的内容,用户的交互行为遵从递进的模式,从曝光到点击,最后进行深层次的互动。点击互动率pCVR是针对点击后的互动样本进行建模,优化的是点击后互动概率,数学形式如下:如果套用曝光点击率pCTR的建模范式,pCVR需要解决以下两个关键问题:1)样本选择偏差,即训练集是点击后样本,预测时是曝光样本,前后样本空间不一致;2)数据稀疏,即点击样本是曝光样本很少的一部分,模型很难收敛。?ESSM基于用户行为序列和引入辅助任务,在完整的样本空间里同时曝光点击率CTR和曝光互动率CTCVR,目标函数如下。?其中,θcvr、θctr代表CVR和CTR任务相关的超参数,是l(.)代表交叉熵损失函数,xi代表输入的样本特征,yi代表点击标签,zi代表互动标签。从联合损失函数L(.)可知,CVR是通过CTR和CTCVR两个辅助任务进行间接学习的,通过公式pCTCVR=pCVR*pCTR来实现。避免了采样从而使用了整个空间的样本,解决了样本选择偏差问题,同时通过共享底层的Embedding层,缓解了CVR任务面临的数据稀疏问题。ESSM本质上是参数的硬共享模式,Embedding层会被多个任务共享。MMOE多任务学习时很容易遇到,由于多个任务差异比较大,导致最终的效果会比较差。MMOE在设计网络结构时,充分考虑了不同任务的差异性。MOE是MMOE主要的子网络结构,它是由门限控制结构Gate将多个小网络Expert的输出进行加权汇总得到最终的输出,类似于一种注意力机制。MMOE在MOE的基础上,针对不同的任务设计了专属的Gate结构,从而达到不同Expert网络在不同的任务上具有不同的重要性的效果。下图a是标准的参数硬共享模式,多个任务共享同样的底层结构;图b是MOE的网络结构,底层结构采用多个专家混合打分;图c是MMOE网络结构,不同的任务使用不同的门限进行融合多个专家进行打分。实践篇时长模型?得物社区在CTR之外,第一个建模的目标就是停留时长。停留时长是用户体验的重要体现,所以提升用户的停留时长很有必要。除此之外,时长样本不是很稀疏,相对更容易拿到线上效果。优化目标确定后,需要选择在现状下采用哪种多目标排序方案更加合适。为了避免对当前的CTR模型的快速迭代造成干扰和便于后期的扩展,时长模型第一版采用单独建模融合排序的方式。?时长单独建模可以使用类似CTR的网络结构,需要注意的是:1)样本空间的选择;2)对Label的处理。在第一点上,我们尝试了两种采样方式:1)基于曝光样本构造训练集;2)基于点击后样本构造训练集;最终全量的版本采用了方案2。对于第二点,为了减缓相对不容易估准的较小时长和较大时长对模型效果的影响,可以利用盖帽的方式基于合适的阈值将两头截断,最后进行归一化。通过对Label分布的分析和对不同损失函数的尝试,最后使用log_loss作为损失函数效果更佳,模型效果的评估可以使用rmse。?离线训练好模型,线上如何融合多个模型分是此方案的主要难点。机器学习常见的多模型融合的范式有Voting、Weighted Averaging、Bagging、Boosting和Stacking等。第一版的融合方式使用融合公式人工线上调参的方式,通过对超参数进行网格搜索,找个合适的参数,快速全量拿到了效果。融合公式数学形式如下:上式中,α1,α2,β1,β2,γ1,γ2是超参数。最终全量的时长模型版本,在pvctr相对减少1.01%和uvctr相对减少1.49%的可接受的损失下,DAU推荐来源时长相对增加4.09%,DAU均社区时长相对增加3.02%,DAU人均互动数相对增加4.46%,初步完成了打压短点击、增加用户停留时长的目标。?视频完成度模型在得物社区的沉浸式视频详情页场景中,为了有效提升用户的场景体验,我们首先考虑就是对视频完成度进行建模,主要是因为视频完成度很大程度上能够隐性表征用户对视频的喜爱程度。通过对样本分布的分析,我们采用类似双列流时长模型的截断策略,避免双端值的影响。模型结构上进行了多次实验,最终采用了类似DeepFm的形式效果更佳。完成度指标的主要缺点是,长视频完成度天然的低,短视频完成度天然的高,为了尽量避免视频本身长短带来的影响,我们在此场景上经过大量实验,最终找到适合场景的截断阈值。与时长模型不同的是,完成度模型在线上使用时需要结合视频本身的时长,从而达到预估观看时长的目的,即模型上线后,取得了明显的效果,场景访问uv人均时长相对提升30.21%,场景单次点击时长相对提升31.85%。互动模型在拿到用户停留时长的效果后,我们考虑对用户更加显式的互动行为进行建模,即点赞、评论、关注、收藏、分享等。相对于停留时间,这类显式的用户互动行为非常稀疏,单独建模模型很难取得好的效果。我们在得物社区的首页双列流场景和沉浸式视频详情页场景,都尝试了对互动模型进行了建模。?双列流场景对于双列流场景,通过多种方式来缓解样本的稀疏问题。在样本层面,对点赞、评论、关注、收藏、分享等多个标签进行聚合,构造统一的互动标签。在模型结构上,采用了ESSM网络,同时学习CTR任务和互动任务,避免了互动任务样本过少Embedding层无法收敛的问题。对ESSM网络的具体实现上,尝试了双塔和单塔两种结构,线上实验显示单塔结构效果更好。为了防止非互动任务样本的梯度对CTR任务造成影响,可以在梯度反向传播时增加阻断机制。?在线使用时,我们尝试了多种融合方式。最初直接使用类似时长模型的融合公式时,具体形式如下:线上实验显示,CTR得分pctr和时长得分ptime会受到互动分pinter影响比较严重,造成实验组的uvctr降幅比较多,互动效果兑换不划算。通过分析,互动样本主要由少数高互动用户产生,从而模型对其他更多的低活跃用户预估不准。使用了两种策略来缓解这个问题,首先对多路预估得分使用channel-sort的方式进行归一化,从而让每路得分的分布保持一致。在对pinter进行融合时,基于用户过去一段时间的互动记录对pinter进行修正,减弱大量低活用户pinter的影响。新的融合公式形式如下:其中,α1,α2,α3,β1,β2,β3,γ1,γ2,γ3是超参数rankSort(.),按照输入值进行排序,得到值的序号,比如1、2、3...linear(.),线性变化函数,可将离散的序号值分布进行转换truncated(.),对于不同用户使用个性化的截断策略在小流量实验上显示,新的融合方式在未对之前的指标有明显损失情况下互动指标有小幅提升,pvctr相对提升0.53%,uvctr相对减少0.05%,人均社区总时相对提升0.45%,分组dau人均互动综合指标相对提升2%,互动用户渗透率相对提升1%。沉浸式视频详情页对于沉浸式视频详情页场景,有了在双列流场景积累的经验,以及之前此场景线上全量的只有视频完成度模型,所以接入多目标互动模型相对顺利。在这个场景中对互动建模,也尝试了两种不同的方式。第一种是采用ESSM架构,对双列流的CTR样本和视频详情页的互动样本联合建模,直观上是想充分利用双列流大量的样本,从而学习到更加通用的Embedding特征。第二种是在视频详情页场景直接按照CTR的范式进行建模,主要是考虑到这个场景视频的互动量相对可观,独立建模存在可行性。实验显示,第二种方案效果更好。线上在对完成度得分pfinish和互动分pinter的融合方式,经过多次实验,最终使用了级联排序的方式进行融合,取得了最好效果。全量上线后相对反转组,在此场景上业务指标提升明显,分组dau人均互动综合指标相对提升14.05%,人均互动数相对提升12.85%,曝光互动率相对提升14.72%,互动用户渗透率相对提升9.08%,场景人均播放时长相对提升0.38%。?融合框架在双列流场景中,对于CTR模型、TIME模型和INTERACTIVE模型等多个模型得分的融合公式相对复杂,在线融合时超参数搜索空间过大,手动调参很有挑战。同时也为了后续迭代的可扩展性,我们决定搭建多模型自动化的融合框架。第一版的方案是构建相对小的融合模型,最终的排序使用融合模型的得分。为了尽量不增加整个系统的RT,融合模型只使用少量关键的特征和相对简单的结构。目前已经在小流量实验上证明了方案的可靠性和效果,后续会做框架做进一步的优化进而全量,加快整个排序阶段对多目标的迭代速度。?一个相对简单可行的融合模型架构如下图所示。总结本文主要总结了得物社区推荐系统从单模型向多目标模型的探索和逐步演进。在我们的主要场景上,对Label融合、多目标网络参数共享、ESSM模型、梯度阻断、多模型融合和融合框架等方面进行了初步实践,通过自动化和算法化解决了很多业务的痛点,也取得了明显的效果。后续我们会针对业务场景持续迭代优化,期望取得进一步的突破。?引用[1] Ma, Xiao, et al. "Entire space multi-task model: An effective approach for estimating post-click conversion rate." The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018.[2] Zhang, Wei, et al. "When drug discovery meets web search: learning to rank for ligand-based virtual screening." Journal of cheminformatics 7.1 (2015): 1-13.[3] Ma, Jiaqi, et al. "Modeling task relationships in multi-task learning with multi-gate mixture-of-experts." Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018.*文/召俊
|
|