本文正在参加 人工智能创作者扶持计划 ”
1.重排在快手短视频推荐系统中的应用
导语:快手短视频作为国内比较领先的短视频和直播社区,具有巨大的日活流量。短视频平台拥有巨大的流量入口和复杂的业务形态。例如,快手拥有短视频、直播、广告等十余种业务形态,产生了海量的交互数据。这让短视频推荐系统拥有复杂的技术场景落地,如大规模预估、强化学习、因果分析、因果推断等。
1.1 快手短视频推荐场景介绍
快手推荐系统包括了传统的召回、粗排、精排、Learning To Rank 的多目标排序、多目标预估等技术环节。而在这些模块之后的技术环节就属于重排序,主要包括手机端和服务端两部分。服务端通过传统服务器部署重排服务,包括序列重排、多源内容混排、多样性模块。端上部分包括端上重排模型和端上重排策略两部分。重排技术是快手十分重要的技术环节,它的发展速度远快于其他排序环节,属于较新的技术范畴。
重排阶段处理的问题包括:
- 整个序列的价值并非单 item 效果的累计,如何使得序列价值最大化;
- 沉浸式场景中,什么是好的多样性体验,业务意志如何体现;
- 同一个场景下越来越多的业务参与其中,如何恰当地分配流量和注意力,达成业务目标和整体最优;
- 如何更加及时、更加细微地感知用户状态,及时调整我们的推荐策略和内容。
1.2 序列重排
首先,上下文对当前 item 造成了重要影响,即视频的交互或者表现指标的好坏不仅仅由 item 自身决定,还由上文内容决定。
比如当前推荐视频是有关英语学习的,但如果前一个视频是一个小姐姐跳舞的视频,那么看完上文视频再去看学英语的视频可能性较小。但如果上一条视频是一首很燃的英语歌曲,那很可能用户会因为听不懂歌曲内容,更愿意观看下一条有关学习英语的视频。
其次,相同的内容不同的序的表现也是天差地别的。
比如第一条视频是将军对于台海危机的言论,但如果下一条视频推荐了小姐姐视频那就相当不合时宜,因为这两个视频没有连贯性,推荐效果较差。那如果下一个推荐视频是比较燃的音乐,再在后面推荐小姐姐跳舞的视频,那么这时候内容的连贯性就较好,用户不会觉得突兀。
我们希望得到一个好的推荐序列使得序列价值最大,那么就会涉及到好的序列如何去定义的问题。我们认为好的序列完成度很高,整个序列的正向交互程度很高,用户具有高粘性,有看完视频后下刷的意愿,且序列在内容上具有序贯属性。
传统方案具有以下缺陷:
- 精排单点打分缺少当前 item 其他内容的信息,单点的预估存在不准确的问题;
- 贪心的打散方案只能解决内容散度的问题,缺少局部最优到整体最优路径;
- Mmr,dpp 等是在优化目标上加入散度项,并非是序列表现最佳。
所以我们序列重排的目标:
- 首先需要有 transformer 或者 LSTM 把上游内容信息融入当前内容信息中;
- 第二,我们的优化目标是序列表现情况,而不是单item的表现;
- 第三,我们需要重排模型有持续发现好的排列模式的能力。
这三个目标属于序列发现和序列评价范畴。
我们序列重排的整体结构采用了 generator-evaluator 范式,generator 从 top50 中生成模式丰富的序列类型,然后使用 evaluator 评价召回的序列整体价值。
序列的生成方法最容易想到的是将得分高的排在序列头部,得分低的排序序列尾部,即使用贪心的算法生成序列。其中大家常用的实现方法是 beam search,它顺序地生成每个位置的视频,选择方式是根据该位置前序的 item 选择模型或者策略预估地最优 topk 视频。
第二种方案是多队列权重。原先我们在线上的队列是使用手工调参或者使用自动调参工具的方法进行调节。但是线上参数并不是每时每刻都是固定的,我们需要在不同状态下使用不同参数,比如某段时间我需要推荐沉浸时间较长的视频,而另外一段时间需要低成本高获得感的视频内容,那么前者需要更多关注观看时长的目标,互动可以进行折算,而后者需要互动、点赞率较高。所以我们不能使用固定的参数,而是进行协同采样。采样过程从原理上来讲是不断地逼近 Pareto 最优曲面,进而得到不同的采样点,形成不同的序列。
其他的一些序列生成办法有 mmr 多样性召回、Seq2slate 召回,还有其他一些规则性的或者启发式的召回策略,在这里就不一一介绍了。
生成不同的序列后就需要对序列进行评价。我们的目标有三个:
- 首先,序列播放时长要大于某一个分位点;
- 第二,序列播放完毕后用户要有下刷动作;
- 第三,用户互动率能够大于平均互动水平。
Evaluator 使用单向 transformer 模型,这是因为用户其实是自上而下的刷视频,下游视频信息对上游视频没有增益,只有上游信息会对下游内容有影响。单向 transformer 模型可以降低计算复杂度,提升模型的稳定性。在单向 transformer 之后,我们使用一个辅助模型去做 embedding 表达,最后依次预估整个序列的得分。这一序列重排模型在线上产生了非常多的累积收益。
1.3 多元内容混排
在混排之前,业务是通过固定位置的形式来获取流量,平台不会考虑业务价值或者用户需求。这就会带来以下三个问题:
- 用户角度,偏好的业务和非偏好业务等频率出现;
- 业务方角度,流量中既有偏好的用户也有非偏好的用户,降低了业务服务效率;
- 平台角度,资源错配导致了浪费。
那么混排问题就可以被定义为:将各个业务返回结果恰当地组合,得到社会综合价值最大的返回序列。
1.3.1 base方案
最简单的办法就是对每个业务结果进行打分并据此进行排序。例如 LinkedIn 的一篇论文就是使用打分之后排序操作来实现的,他们为这一方法做了很完善的理论分析。它将优化目标设定为在用户价值体验大于C的前提下最优化营收价值。如果用户的广告价值大于用户的产品价值的时候,那我们就去投放广告内容;否则我们就去投放用户的产品内容。这一算法实现很简单,即在满足用户体验约束以及两个广告间隔约束下,那一部分价值高就推送那一部分内容。
但上述方案有一个弊病,即它包含了很多强假设。
- 首先,它的目标是最大化营收价值而不是最大化综合价值。
- 第二,这一算法假设单一 item 的价值在不同位置和不同上下文的情况下保持不变,这和序列化建模时认知不同。
- 第三,它认为广告对用户后续体验及留存等没有影响,但是如果从单一刷次来看放置广告的价值一定比不放广告的价值大,可是它并不是最优解,因为它会对后续的用户体验产生影响。
1.3.2 混排listwise方案
首先介绍一下混排listwise方案。这一方法秉承了序列生成和序列评估的过程,我们对每一种放置方案都会进行预估,衡量其对排序结果的影响,包括广告在不同位置不同上下文的情况下 ctr,cvr 等指标以及对自然结果的影响。
- 模型的第一个模块是 context 信息提取模块。这一模块我们重新预估了视频内容的表现情况。
- 第二个模块是跨域转换模块,因为广告和自然内容是跨域的。
- 第三个模块会对广告的内容进行多任务重预估,比如衡量它的曝光率,cvr,ctr 等。有了这些预估指标后,我们就可以得到一个最佳价值序列。
1.3.3 混排强化学习方案
混排RL方案
在不同状态下,RL可以在不同策略中选择一个最佳策略来达到长期体验和近期收入的平衡。原先的模型采用的是固定策略,即在不同状态下的广告放置、广告营收和结果体验的配比都是固定的。但这一做法其实是有问题的。
我们定义状态为用户在一个 session 内下刷深度、曝光内容、广告交互历史、内容交互历史、上下文信息以及本刷的内容。动作空间则包含如第一条、第二条广告放置在哪一位置等。当然动作空间中需要满足业务约束。最终的结果既要考虑营收价值,又要考虑用户体验价值以及长期留存的内容
Action 空间是一个十分稀疏的空间,我们最终选择了 Duel DQN 的方案来实现。
- 首先,V网络评估用户当前的满意程度,这使得模型可以在不同的用户状态下选择不同的放置策略。但由于放置策略十分离散,它的解空间相当大,那么我们需要对离散空间 dense 化。我们的 dense 化不是通过模型去做的,而是通过之前使用的重预估监督模型来实现。通过监督模型,我们就可以知道这个 action 下每个位置放置的内容可以带来多少的用户体验和商业价值。
- 之后,我们可以使用一个神经网络对不同的 action 进行打分。我们的优化目标是每一步选择能够达到最终的总和价值最大,reward 是长期价值和近期价值的组合。
我们采用了两段式训练范式
- 首先使用 online policy 的方式,先将模型部署上线生成 online policy 下的数据,作为 off policy 的训练数据放入回放池。
- 之后,我们使用 off policy 来训练 DQN 模型。经过优化后,在线上模型针对不同的用户状态得到的 Value,可以选择使得Q值最大的策略,最终得到线上的预估结果。
1.4 端上重排
端上重排主要解决以下四个问题:
- 实时感知:目前我们每次针对每次请求使用的用户信号都是历史信息,用户反馈信号感知存在延迟,导致下刷操作之间的反馈信号没有被利用到。
- 实时反馈:分页请求场景下,下次请求前无法及时调整当前推荐内容。如果不在端上部署模型,那么针对长序列,由于序列无法根据用户下刷过程中的反馈来实时调整,导致用户由于不满意而离开,使得用户流失概率变高。
- 千人千模:端上每一台手机都是一个小服务器,我们可以正对每一个用户训练一个模型,达到更加极致的个性化推荐。
- 算力分配:灵活的 pagesize,可以在算力紧张的时候,动态决定服务端请求频次,提升算力经济性。
上图展示了端上重排的整体框架。服务端收到客户手机发出的一个分页请求后会进行召回、粗排、精排、重排,返回推荐的视频及特征。端上的推理模型使用候选视频以及候选视频的特征,加上用户的特征和反馈行为进行模型推理,最后使用端上策略库得到最终混排结果。Offline 比起传统的样本拼接、模型训练以外会增加一个 DQN 模型上传。
我们还在尝试千人千模的工作,目前能达到的能力是端云混合的部署模型,即我们在服务器端部署一部分模型,在客户端部署另一部分模型。在客户端,部署的这部分模型需要兼顾轻量级和表达能力,需要利用实时交互动作;在服务端则要利用其强大的算力,把所有 embedding 相关操作(如embedding lookup等)在服务器中完成。我们可以做到分布式实时训练,并达到小时级的推送能力。
端上模型使用的特征除了显示的用户行为反馈,还有音量、横屏等端上特有的隐式反馈,这些特征在服务端是无法建模的。具体地,我们把用户最近的反馈行为加入了实时反馈列表中,使用候选动作与它们进行基于 transformer 的交互。端上模型主要体现了针对实时反馈特征的更有效地表达。
端上模型在上线后,业务指标有了明显的提升。比如模型将 ctr 提升了2.53pp,ltr 提升了4.81pp,wtr 提升了1.36pp。
1.5 QA精彩问答
Q:如何判断哪一种生成的序列效果更好?客观的模式判断会不会与主观意识上有不一致?
A:我们确实可以通过数据分析来发现较好的推荐策略与推荐模式,但是我们很难发现全部的表现情况,无法进行穷举,因为每个用户对应的最佳模式是不一样的,即它是个性化的产物。我们发现好的模式通常来说前后具有因果关系、关联关系,上游内容与下游内容具有好的承接属性。不仅如此,一个session内的推荐应该是让用户看起来是有条理性的而不是杂乱无章的。我们还发现一个的推荐策略其实是可以在一个连贯的内容中穿插一些其他效果较好的主题,进而发掘一些更好的策略。但是我们也不可能将所有的模式发掘出来,根本原因在于它是一个个性化决策过程。
Q:千人千模中每个用户的参数是一样的吗?是否需要根据每一个人来做训练?如果需要对每个用户做训练,那么如何进行模型的离线效果评测?
A:千人千模的问题就是如何把个性化特征抽取出来,做一个完全适配于每个用户的模型。我们做过离线验证,比如活跃用户和非活跃用户的区分。其实这种做法产生了很大的经济价值。**我们所有的模型其实是被活跃用户主导的,而对于非活跃用户或者冷启动用户在刚进入社区的时候会有很多不适应的地方,所以对他们做单独的模型会有很好的效果。**这便是千人千模方向的一个简单的试验。我们也对用户做了分群,根据他们的交互数据和人口属性做了分析,发现不同群体的用户的交互表现完全不同。这是由于快手涵盖的用户面特别多,有白领也有农民工兄弟;有中年人、青年人,也有老年人。那么这些不同群体下的表现数据一定也是具有很大的差异性的。我们利用分群做不同的模型,进行离线实验,发现这样确实会有很明显的收益,但是线上我们好没有进行部署。若想进一步将模型粒度进行切分,会存在稳定性的问题,我们目前还在尝试解决它们。
Q:会不会考虑设置一个多样性的底线,比如不同的视频类型之间的间隔要求,或者其他一些多样性的类似需求?还是完全从算法上追求整体的收益最优?
A:目前我们的模型是有多样性的要求的。我们召回序列生成完成后不一定满足业务需求,所以它会过一些多样性模块和业务要求的模块。
2. 手淘信息流多兴趣重排技术
2.1 前言:
重排的常见逻辑是设计一套基于RNN或者Transformer的深度学习模型,使用各种复杂的交互结构来建模上下文信息的关联,以提升user-item的预估精度。我们在探索重排范式的开始阶段也尝试过类似的方式,例如《手淘信息流多目标重排技术》中使用Attention/GRU网络建模前后内容的关联性或者《PS-ODRL之路:基于价格力与实时强化学习的智能化流量调控》[1] 中使用深度强化学习来自适应的调整各类排序因子。然而,在实践过程中,我们发现这种厚重的重排建模方式线上开销往往很大,全量时会造成机器资源或者全链路RT的明显增加;而且此类all in one的建模方式往往是将上下文信息笼统的喂到模型网络中,希望模型能自主学习出重排中的关键因素。这种重排模型往往可解释性偏弱,而且不利于后期维护。因此,我们在探索重排范式的过程中逐步放弃了较为厚重的 all in one 的生成式重排思路,转而聚焦于可解释性更强、复杂度更低且后期维护成本更小的轻量化重排模型。我们的思路是在重排序列的生成过程中更为显式的融入多样性提升策略,明确序列生成的偏向性,让整个重排环节更可控,而不完全依赖模型自发地学习出序列的最佳排布方式,这样才能在算法全量后保障重排环节的稳定性,提高算法可维护性,同时降低链路风险。
在本文中,我们聚集于多兴趣重排模型,捕捉用户对推荐准确度和多样性的感知差异性。为此,我们设计了一套具有创新性的序列重排框架。该框架的计算部分主要包括一个基于BS-DPP的序列选择算法和一个轻量化的序贯打分模型,前者仅涉及到小规模矩阵的运算,后者是一个单层模型,可以直接在TPP上做计算,不需要请求远程RTP。因此,这套框架计算开销很低而且并不带来明显的线上RT增长。我们将该模型应用于对开销和RT要求更严苛的信息流首屏重排中。长期线上观测表明,该模型能为大盘效率带来稳定提升:IPV+2.45%,一跳DPV+2.16%,笔数+1.72%,金额+2.48%,PV+0.34%,停留时长+2.07%,有效UV+1.05%(8月月均数据),与此同时,该重排算法还能提升曝光一级类目宽度4%,有效拓宽推荐内容广度。
2.2 相关工作
很多很优秀的重排工作,例如基于RNN/Transformer框架的《淘宝主搜重排技术的应用与进展》[2]、《重排在商品微详情页(Minidetail)的实践和应用》[3]、《DeepRerank: 基于Listwise Ranking Context的深度重排模型》[4],基于强化学习框架的《AGCR:基于探索、生成和评估框架的电商重排序模型》[5]、《脱胎换骨的生成模式:强化学习重排》[6],端上部署的《下一代重排系统在手淘信息流推荐中的实践》[7] 等等。我们的工作深受以上工作的启发。不过以上工作都涉及较为复杂的deep框架,RT开销较大,很难直接迁移至信息流首屏并且全量。另一方面,现有的重排工作大都聚焦于利用上下文信息提升推荐准确性,关注AUC、NGCG等准确性指标,较少对推荐内容的多样性进行直接建模,所以不一定能缓解推荐内容扎堆的问题。提升多样性的常用手段包括规则性打散 [9]和一些启发式策略如MMR [10],集也有不少相关探索。学术界提出了一些基于deep框架的多样性模型,例如DCF [11]、BGCF [12]、DSSA [13]等。工业界最熟悉的方式是DPP及相关的衍生算法。
我们要求重排模型的复杂度尽可能低,所以我们没有采用deep模型的方案。同时,我们也希望能在重排环节对效率和多样性进行更为完善的联合建模。我们还希望框架的各个组件能进行独立的技术迭代,以适应排序目标的变化,并且让不同技术方向的同学共同参与。考虑到规则性打散和MMR的提升方式主要依赖人工规则和参数调整,可拓展性不强,而DPP算法则提供了一个更为优雅的效率与多样性联合建模范式,因此我们最终决定对标准DPP算法做适应性改进,设计高效的重排框架,探索重排提效的关键因素。
2.3 解决方案
2.3.1 框架总览
我们在本文提出的重排框架包含三个子模型/算法:序贯选择算法 Bi-Sequential DPP (BS-DPP),轻量化的序贯打分模型 Context-Aware Estimator (CAE) 和考虑用户感知差异性的多样性核函数 Perception-Aware Kernel (PDK)。逻辑上,我们的框架可划分为两层:选择层 (selection-layer) 使用BS-DPP算法,根据预估层 (estimation-layer) 的CAE模型估计出的准确性分和PDK方法估计出的多样性分从候选集中逐一选择序列中每个坑位上的最优的item,组成最终返回序列。框架示意图如下:
2.3.2 基于BS-DPP的选择过程
第一,重排模型一般部署在各个频道的场景下游,需要对来自多频道的 item 进行统一排序,而这些频道的精排模型并不统一,导致精排分不能直接对比。因此,我们在重排侧需要设计一个效率分的修正模型将各个 item 的上游精排分重新映射到一个统一价值的空间中,然后进行对比。
第二,在重排领域被广泛验证过的一个结论是,item 在一个序列中的准确性也会受到上下文的影响。例如,我们在混排过程中所考虑的,多频道信息交互的影响。因此我们在对上游精排分校准的过程中,同时融入了上下文特征,以提升 item 在整体序列中的分数预估准度。为了兼容这个准确性分的序贯更新过程,我们将标准DPP算法拓展至BS-DPP算法,使其能在序贯选择item的时候,对 item 的准确性分进行同步更新。标准DPP可以视为BS-DPP的特殊情况,在实际上线时,可按需选择。
2.3.3 考虑上下文的准确性预估模型
该模型的目标是给出每个候选item的准确性分。这类轻量化的序贯模型我们已经在该系列的其他的文章中详细介绍过。在此,我们简要描述一下其序贯打分过程,更详细的算法方案和相关实验结论可以参考《手淘信息流多目标重排技术》。给定一个大小为的候选集,我们的目标是考虑上下文信息,在决定每个坑位上的最优item时,对候选集中的每个item都打一个context-aware的准确性分。与此同时,在序贯打分的过程中,我们会维护两个embedding vector来刻画上下文信息,一个是前文已插入item的context信息,一个是后续剩余的候选卡片信息。以决定序列的第个 item 为例,我们会将前个item的embedding做mean pooling,作为前文context,同时将剩余候选卡片做mean pooling作为后文context,在给剩下所以能选择的候选 item 打完一轮context-aware的准确性分后,即得到每个候选 item 的准确性分。接着,BS-DPP会根据推导出的核心排序公式
2.3.4 考虑个性化感知的多样性核函数
- 长短期兴趣向量化表征
- 复合型多样性核函数
更多内容参考:xxxx
3.手淘信息流多目标重排技术
3.1问题描述
ALL IN ONE的建模方式存在以下问题:
- 数据循环问题:在重排建模过程中,普遍的做法是将上下文信息直接输入到网络中,寄希望于模型能学习出商品间的相互影响,从而生成最优序列。对于每一次请求,从Top N个商品中挑选K个商品进行有序展示,有种选择,但是只有已曝光的数据只存在其中一种序列,且该序列不一定为最优排布。因此,受限于数据循环问题,寄希望模型去直接从曝光中学习到最优商品排布范式过于理想化。
- 性能和资源问题:由于模型结构采用RNN或Transformer等序列建模结构,涉及大量复杂的计算,导致资源开销大且计算耗时搞。此外,基于深度学习的重排模型需要部署在RTP上,不仅需要大量机器,还徒增了通信开销成本,最终导致较高的线上RT和机器资源占用。在首页信息流,由于前序召回和精粗排阶段已经占用了大量资源,留给到后链路的RT和资源空间很少。
- 业务策略支持问题:在后链路会存在许多复杂的业务策略,例如去重、打散、定坑、多样性保证等,用于改进用户体验和支持产品策略。一般在重排之后,对生成的序列根据业务规则进行相应的修改。这就导致重排序列的上下文信息被重新构建,新的序列的效果也无法保证。
考虑到上述问题,在最终落地时我们尝试构建在满足RT和资源限制、支持业务策略插入的情况下,能够最大程度捕捉最优排序策略的重排框架。具体的做法是将重排拆分为序列生成和序列评估两个模块。序列生成模块类似于召回阶段,用于快速生成多个不同侧重点的优质序列,为Evaluator模块提供选择空间。在生成序列时,我们会显式的融入不同侧重点的策略(多目标、发现性等),避免依赖模型自发学习最佳序列。在序列评估阶段,我们希望能从候选序列中找到最优的商品排布方式,设计并实现了基于Multi-Head Self-Attention机制的模型版评估器。长期观测表明,在成交基本持平的基础下,该框架为首页信息流带来IPV +2.80%,一跳DPV +2.37%。
3.2 解决方案
对于重排任务,我们做出如下定义:对于给定用户和商品集合,我们的目标是从中选出个商品组成最终曝光的有序推荐列表,将其返回给用户进行展示。针对前文提到的问题,我们提出的多目标重排框架。如下图所示,其由序列生成和序列评估两个模块构成:
●序列生成模块:负责生成多个优质的有不同侧重的候选序列,为序列评估器的选择提供空间,由基于深度学习的多轮重排生成器和轻量化多路序列生成器。在轻量化的多路序列生成器中,我们又构建了LR 序贯重排模型、层次化重排模型和基于BS-DPP的多样性重排模型。
●序列评估模块:负责从序列生成器生成的候选序列中选择当前最优序列进行最终展示,设计并实现了基于模型版评估器。
3.3 序列生成模块
在多目标重排框架中,序列生成模块的目标是从精排后的Top N个候选商品中生成包含K个商品的序列。在该环节,我们希望能像召回一样,每个序列生成器能够独立的生成序列,而且不同序列具有相应的侧重点。具体来说,我们显示的从不同角度去生成各种优质的序列:从效率角度出发的LR序贯重排模型、从多目标角度出发的层次化多目标重排模型和从多样性角度出发的基于BS-DPP的多样性重排模型。这些从不同角度构建的生成器在保证重排下限的同时,也带来了更多的可能性(曝光数据中不曾出现的序列范式)。这种方式有效的打破了数据循环,避免依赖模型自发学习序列的最佳排布。此外,通过明确序列生成的偏向性,能够在算法全量后保障重排的稳定性,提高算法可维护性的同时降低链路风险。最后,这些“轻量化”的生成模型均部署在TPP侧,在生成序列的同时可以很好的融入各种业务策略,模型无需访问RTP,耗时极少且不占用机器资源。
除了上述的轻量化多路序列生成器,我们也尝试了基于深度学习的序列生成器,通过Self-Attention机制对上下文信息进行建模,并引入多轮打分机制解决序列生成前后不一致的问题。但是受限于RT和资源消耗问题未进行全量,下文也会进行简单介绍。
3.3.1 基于深度学习的序列生成器
在最初探索重排时,我们希望能够引入候选集信息对商品的打分进行校准,校准后的分数可以用于后续的序列生成。常见的做法是直接将候选集合商品作为特征输入,通过Self-Attention等结构进行建模,最后选择打分TopK的商品作为最终展示。这种方法虽然简单直接,但是模型预测时依赖的上下文信息和最终展示呈现的曝光信息存在差异,即在离线不一致问题。为此我们设计了多轮序列重排模型,模型将整个打分过程拆分为多次。每轮打分时,我们将之前轮次中已选择的序列作为前序序列,和候选序列信息一起输送到网络中,根据打分结果从候选序列中选择出下一轮次的序列。这种多轮打分的机制,在引入候选集信息的同时,可以强化上文信息对用户后续决策的影响,不仅接近于用户真实的浏览过程也加强了在离线一直性。在实际应用时,我们可以根据需求调整打分轮次,达到平衡效率和性能的目的。框架示意图如下:
在实际部署模型时,我们和RTP团队深度合作,对打分逻辑进行改造,以满足多轮打分的需求。此外,我们设计了启发式重排序列筛选器,作为RTP插件,更好的支持打散、体验等业务需求。在每轮打分结束,我们会请求改候选器,确保生成的前序序列满足筛选需求。
在首页信息流场景,我们对多轮序列重排模型进行了实验验证。在离线实验中,将打分轮次设置为一,模型退化为单轮重排模型,对比上游精排打分离线AUC提升千三,其收益来自于候选集信息的引入。将打分轮次提高至四轮后(针对线上每次请求展示20个卡片的环境,进行四轮打分,平衡RT和效率),离线AUC能进一步提升千四。最后我们将多轮序列重排模型进行上线,在成交基本持平的情况下,带来一跳DPV +0.65% IPV+1.71%的提升。
3.3.2 轻量化的多路序列生成器
在最初验证多轮序列重排模型,我们很顺利的拿到了线上效果。但是在后续研究中,我们也发现了一些瓶颈。由于模型依赖于曝光日志,只能捕捉已曝光的排布范式,而最优的范式可能未曾出现,因此存在效果上限。此外,虽然我们可以通过降低打分轮次的方式减少请求时间,但是仍很难满足首页信息流严苛的RT和资源需求。因此,我们尝试在生成序列考虑不同侧重,并融入先验知识,在保证各自的效果的同时使相互之间具有明显的差异性。这种方式让整个重排环节更可控,且不完全依赖模型能够学习出序列的最佳排布方式。此外,序列生成器均在TPP侧进行构建,无需请求RTP,因此不占用机器资源且RT远远低于多轮序列重排方案。下文将对效率角度出发的LR 序贯重排模型、从多目标角度出发的层次化多目标重排模型和从多样性角度出发的基于BS-DPP的多样性重排模型进行一一介绍。
LR 序贯重排模型
LR序贯模型的出发点非常直接:如何在确保性能和资源消耗的前提下,最大程度上逼近多轮序列重排模型的效率。对于重排侧,最关键的是如何对上下文信息进行很好的抽取。具体来说,我们采用了传统的LR模型+人工上下文特征抽取的方式,去替代self-attention等序列建模机制。LR模型的效果好坏关键在于特征设计,好的特征体系能够很大程度接近深度神经网络。针对信息流的场景特点,我们设计了多个上下文特征,并结合上游精排打分等单点特征进行建模,部分核心特征如下:
整体链路上,我们的LR模型在AOP平台进行离线训练,训练完成后会自动将模型参数导致igraph平台。在TPP侧直接请求igraph获取LR模型权重,然后进行one-by-one打分。在每轮打分时,我们会遍历候选商品集合,将其和前序序列进行标叫,计算得到上下文特征的具体数值,然后和LR模型的权重进行交叉相乘,获得最后的打分。得到所有候选商品的打分后,我们可以贪心的选择最高打分的商品加入候选集合。在选择的过程中,我们也可以灵活的加入各种限制条件,已满足各种业务需求。经过轮序贯打分后,即得到目标序列。在此基础上,我们继续探索了BeamSeach多序列生成,以及效率更高的Context Embedding Light LR模型。
(1)BeamSearch多序列生成
对于LR来说,通过贪婪的方式直接生成最终的序列,很难确保整体最优。在每一步做出选择时,我们只考虑了前序信息对当前的影响来选择最优解,但是忽视了当前选择商品对后续的影响。例如,在考虑前序信息后,可能存在一些商品的效率并非最高,但是其能够促进用户下滑,带动后续产生更多的点击或成交收益。为了避免陷入局部最优,我们基于BeamSearch同时生成多个序列,提高生成最优序列的可能性。基于算法效率考虑,我们每次保留预期收益最高的条序列。在第轮时,我们针对每条序列从候选集中选择打分最高的个商品,生成新的条序列,最后在这条序列中选择收益最高的条序列进入下一轮Search。
(2)Context Embedding Light LR
在BeamSearch中,我们需要同时生成多条序列,对RT的要求也更加严格。对于LR来说,部分上下文特征需要将待打分商品和前序序列进行逐一比较(slide_num_higer_score/slide_num_lower_score/…),这些计算很难并行加速,造成了BeamSearch的性能瓶颈。因此,寻找一种替代方案去加速上下文特征的计算是至关重要的。为此我们引入了深度学习中的Embedding机制对商品进行表征。在打分的过程中,直接将前序商品的embedding vector进行Mean Pooling后和目标商品进行交叉,快速引入上下文信息。模型结构如下:
层次化多目标重排模型
在上文中,我们设计了LR 序贯重排模型去捕捉上下文信息,并通过BeamSearch生成多条序列扩大最优序列的命中概率。在这一小节,我们尝试从多目标的角度出发,探索新的序列生成范式。对于推荐场景,多目标的设定是直接和最终效果挂钩的,常见的做法是在不同目标的打分上设置统一的融合公式,按照融合公式的计算结果进行排序。但是不同用户在不同场景下,其目标也存在差异,统一的融合公式很难满足用户差异化的多目标需求。以PageNum这一切面为例,我们对首页信息流的数据进行统计,最后发现用户的成交往往集中在前3页。也就是说用户在前期的成交意愿是强烈的,随着不断的浏览慢慢倾向于逛的目的。
在重排侧,我们尝试引入层次化多目标重排模型去解决多目标差异化的问题。具体来说,我们设计了多种点击兴趣和购买兴趣交叉排布的模板,不同模板对点击和成交的倾向性不同。例如在连续出现多个点击商品后,加入强成交引导的商品。这种强策略的排布范式,往往很难在曝光数据中出现,因此无法由传统的重排模型(例如上文提到的多轮序列模型和LR序贯模型)进行捕捉。在实际部署时,我们按照不同模版生成多条序列,交由下文提到的Evaluator进行挑选。模板化方式的层次化模型已经能给线上带来稳定的提升,但迭代空间受限。我们目前正在将层次化Generator与千人千策模型结合,通过参数化的方式定义点击兴趣和购买兴趣交叉的形式,并且根据不同人群对点击和成交的偏好调整相应的展示内容。
基于BS-DPP的多样性重排模型
LR 序贯重排模型和层次化多目标重排模型分别从效率和多目标角度出发,生成丰富的候选序列。基于BS-DPP的多样性重排模型则从多样性角度出发,尝试缓解短期兴趣扎堆的现象,提升推荐结果的内容多样性的同时带动效率的提升。这里我们不再赘述,详细的算法方案和相关实验结论可以参考《手淘信息流多兴趣重排技术》。
3.4 序列评估模块
在序列评估模块,我们需要对序列生成模块产生的多个序列进行评估,选择其中价值最高的序列进行展示。在该环节,我们可以使用复杂的网络结构对序列的上下文信息进行建模,提高单点预估准确度。最后将每个商品的预估值相加作为序列整体的价值。和序列生成模型相比,序列评估模型可以获得完整的上下文信息,进行更加细致的建模。此外模型输入的上下文信息和真实曝光的上下文信息几乎相同,因此不存在不一致问题,预测结果会更加准确。在该模块,我们设计并实现了多目标序列评估模型,对多组序列的点击和成交收益进行评估。和大多数工作类似,该模型使用Multi-Head Self-Attention结构对目标商品与其上下文商品之间的各种交互进行充分建模,模型结构如下图所示。
在特征设计上,我们遵循去繁就简的原则,仅保留核心特征,使得模型更加轻量化,降低RT。对于序列中的每个商品,我们除item、seller和cate等id类信息外,仅使用上游模型的打分特征和位置信息。由于使用了上游的模型打分,我们可以充分利用精排模型的信息帮助Evaluator收敛。对于用户侧特征,我们仅保留user id、年龄和性别信息。此外,对于ID特征,我们可以直接在上游精排模型的基础上进行热启,加快模型的收敛。
3.5 小结
在多目标重排的探索过程中,我们试验了各式各样的重排策略,以上的结论是我们经过反复实验后总结出的有效路径。重排本质上是一个组合优化问题,其解空间巨大,我们目前是利用我们在数据中观测到的先验结论,将这个巨大的解空间拆解为几个更小的子空间(不同的重排生成策略)进行算法优化。在这个过程中,必然会有更多更有效的重排策略被我们遗漏,希望本文能给集团其他团队的重排探索带来启发,沉淀出更优秀的重排策略与模型。此外,在探索过程中,我们发现优化重排序列的生成策略(决定效果下限)相比优化评估策略(决定效果上限)更加直接有效,因为它本质上是利用我们的先验知识将解空间范围缩小,提高了求解的平均质量。如果序列生成策略本身是有收益的,那么即便是序列评估有一定的误差,我们也只是损失掉了从次优到最优的一部分收益,而不会从正向收益退化至负向收益。
相关文章推荐:
推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展
推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF/TDM/Airbnb Embedding/Item2vec等)、召回路径简介、多路召回融合]
推荐系统[三]:粗排算法常用模型汇总(集合选择和精准预估),技术发展历史(向量內积,Wide&Deep等模型)以及前沿技术
推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。
推荐系统[五]:重排算法详解相关概念、整体框架、常用模型;涉及用户体验[打散、多样性],算法效率[多任务融合、上下文感知]等
推荐系统[六]:混排算法简介、研究现状混排技术以及MDP-DOTA信息流第三代混排调控框架,高质量项目实战。
推荐系统[七]:推荐系统通用技术架构(Netfilx等)、API服务接口
推荐系统[八]:推荐系统常遇到问题和解决方案[物品冷启动问题、多目标平衡问题、数据实时性问题等]
实战案例:
推荐系统[八]算法实践总结V0:淘宝逛逛and阿里飞猪个性化推荐:召回算法实践总结【冷启动召回、复购召回、用户行为召回等算法实战】
推荐系统[八]算法实践总结V1:腾讯音乐全民K歌推荐系统架构及粗排设计
推荐系统[八]算法实践总结V2:排序学习框架(特征提取标签获取方式)以及京东推荐算法精排技术实战
推荐系统[八]算法实践总结V3:重排在快手短视频推荐系统中的应用and手淘信息流多兴趣多目标重排技术
推荐系统[八]算法实践总结V4:混排算法在淘宝信息流第四代混排调控框架实战,提升推荐实时性捕捉实时兴趣。
更多更新请查看专栏内容
本文正在参加 人工智能创作者扶持计划 ”