机器之心专栏
机器之心编辑部
10 月 20 日,信息检索和数据挖掘领域的顶尖大会之一 CIKM 2022 公布论文奖项,快手社区科学团队获得了应用研究方向「最佳论文奖」。
获奖论文《Real-time Short Video Recommendation on Mobile Devices》针对短视频推荐场景,传统服务端布署的推荐系统在决策时机和实时特点借助方面的不足问题,通过在联通客户端布署推荐系统来实时响应用户反馈,提高推荐结果的精准度,从而提高用户体验。论文提出的方案 100% 流量布署到了快手短视频推荐生产环境,影响了日均超过 3.4 亿用户的体验,是端上智能在大规模推荐场景落地的创新实践。
论文链接:
以下为作者团队对论文工作的详尽剖析:
近年来,越来越多的用户通过短视频应用来学习和娱乐,并通过丰富的隐式和显式反馈来抒发对视频内容的满意度,比如双击、收藏、分享等(如图 1 所示)。
图 1. 快手应用界面:沉浸式观看,丰富的显式 / 隐式反馈
为了给用户推荐其感兴趣的内容,推荐系统必需通过用户的显式或则隐式反馈来感知用户的实时兴趣。由于短视频时长较短,内容主题也多种多样,用户在短时间内会观看好多不同主题的内容,实时兴趣会发生快速变化,这给推荐系统带来了很大的挑战。传统推荐系统完全布署在服务端,由于整体复杂性高,链路历时比较长(1 秒左右),同时为了给客户端留出足够的时间来预加载和渲染视频,防止播放时导致卡顿,因此一般采取分页恳求的方法,每次返回多个视频给客户端,依次展示给用户,用户看完前,客户端再发起下一次恳求。这种构架会带来两个问题:
1.决策机会角度:服务端只有在接收到客户端的恳求时才有机会调整后续推荐内容,而未能对用户的实时反馈马上作出响应。即使用户对某类内容表现出了显著的偏好或讨厌,客户端也没有办法对候选中的类似内容做提早或则打压操作。
2.特征时效性角度:用户的反馈必需回传到服务端能够被借助,整个链路延后一般历时几十秒甚至几分钟,对特点的时效性有很大的影响。同时,有一些客户端独有的特点,比如当前时刻下,设备的网速、每个候选视频的预加载时长等,在服务端是难以获取的,但这种诱因也会对用户体验导致影响。
随着联通设备算力和储存资源的快速提高,以及移动端深度学习框架的发展,现在早已可以在联通设备上进行深度学习模型推理甚至训练,因此我们通过在联通设备上布署一个重排系统来解决上述问题(图 2)。通过端上重排模型来实现用户反馈讯号和客户端独有特点的实时借助,从而得到当前上下文下更确切的预市值。在此基础上,通过自适应确定搜索步数的 beam search 来生成整体疗效更好的排序,从而提高用户体验,并带来明显的线上疗效提高。
系统框架
图 2. 端上重排系统
如图 2 所示,整个系统分成 3 个部份:
1.服务端的推荐系统。这部份就是传统的推荐系统,通常包括召回、排序、重排等环节,最终输出几十个左右的候选视频。一些服务端能获取到的特点也会被抽取下来,随着候选视频一起发送到客户端。
2.模型训练系统。这个模块负责训练拼接训练样本,并训练端上重排模型。训练过程中会定期导入 checkpoint,并转换成 TFLite 格式下发到客户端。
3.客户端推荐系统。这是整个系统的核心模块,负责客户端的特点搜集,以及按照用户行为触发候选视频重排。
端上重排模型
整体设计思路
在现有的公开资料中,端上重排模型通常被设计成端云结合的结构,比如 EdgeRec。即模型在布署时会分拆成两部份,参数量最多的 embedding 部分布署在服务端,上层 DNN 部分布署在客户端。我们设计了一个超轻量级的小模型,可以整体布署在客户端。之所以采取此类设计,有如下三个缘由:
1.服务端的精排模型是一个十分复杂的超大规模千亿参数模型,在精排模型的预市值中早已蕴涵了输入特点中的精华信息,客户端的重排模型可以直接将其作为输入,减少重复估算,也省去了搭建一套类似 pipeline 的训练和预测资源开支。同时,拆分布署的构架会降低维护的复杂性,比如客户端的模型更新遭到好多限制,可能同时存在特别多的模型版本,需要保证服务端参数和客户端参数的一致性,这些也会带来更多的资源开支。
2.客户端能获取的实时特点都是比较小规模,并且有明晰含意的,比如用户的反馈、网速讯号等,这些特点也不须要太复杂的网路结构来学习。
3.精排模型用到了用户的常年行为序列,能学到用户的常年兴趣,和客户端着重于用户实时兴趣感知的模型刚好互补。
我们离线做过对比实验,相对于我们设计的超轻量级模型,增加更多特点和更复杂结构的模型并没有带来显著的离线指标提高。
输入特点
模型输入特点分成 3 类:
1.精排模型预估分。前面提及过,精排模型用到的特点和模型结构都很复杂,因此其预估分有很丰富的信息量,这也决定了精排的预估分是十分重要的输入特点。同时精排模型用到了视频 id、用户 id 等记忆性特点,以及特别长的用户历史行为序列,因此很擅长捕捉用户的常年兴趣,和客户端注重用户实时反馈的重排模型刚好互补。
2.视频静态属性。为了减轻参数量,我们主要选择视频的类别、时长等维度比较低的属性,整体 id 特征的取值数目不超过 10000。
3.客户端特点。用户在观看视频的过程中,客户端会搜集用户反馈、观看时长等信息,并组织成按观看时间排序的序列格式,同时也会搜集当前的网速、视频预加载时长等客户端独有的特点,作为端上重排模型输入。
特征工程
为了提高实时特点的疗效,还降低了以下交叉特点:
1.候选视频精排 pXTR 和观看历史视频 pXTR 的差值。不同用户天然存在的 bias 会导致用户间的 pXTR 并不直接可比,比如有些用户 pXTR 会整体偏低或过低,由于端上重排模型中没有用到 uid 等特点,直接用 pXTR 的原始分值作为特点会干扰模型学习。通过 pXTR 之差可以清除这些 bias,并且以近来看过的视频 pXTR 为锚点,可以感知用户的实时兴趣偏好。
2.视频爆光时间之差。通常来说离当前时间越近的视频影响越大。
3.视频爆光位置之差。用户观看视频的速率一般变化较大,此时爆光位置之差比爆光时间之差会更稳定。两者结合上去可以建模视频在时间和空间上的互相影响。
以上特点会进一步和已观看视频的类别以及对应的用户反馈进一步交叉,来捕捉用户的细粒度偏好。
模型结构
图 3. 端上重排模型
整体模型结构如图 3 所示,除了直接引入候选视频特点和其他特点(如客户端特点)之外,模型主要通过 target attention 来建模已观看的视频序列和候选视频之间的关系,以及已排序候选序列和候选视频之间的关系。上层通过 MMoE 模块来建模 3 个目标,分别是 has_next(下滑)、effective_view(有效播放)和 like(双击)。
实时的 context-aware 重排
相对于贪心的单点排序,我们更希望能考虑候选视频之间的互相影响,得到整体疗效最好的序列。这里序列整体的疗效以 ListReward 来评估,其定义如下:
其中
表示用户会听到第 i 个视频的机率,用来作为折扣因子,引入后续视频的 reward。α,β是不同目标的权重,P 是候选集合的某个排列。
生成式重排的优点在于,每一步都能借助到前序已排序候选的所有信息,基于更完整的 context,来更新待排序候选的各项预估值,使得预估结果更准确,缺点在于估算量比较大,因此采用基于 beam search 的生成式重排来逐渐生成推荐结果。在短视频场景中,用户每次只会听到 n 个视频,因此每次排序只须要确定 top-n 的次序即可(沉浸式上下降场景 n=1)。在离线实验中,我们还观察到,beam search 每一步得到的 k 个序列,它们的 ListReward 的差异随着搜索步数降低会单调递减。利用这个特点,我们定义了 beam search 的稳定性,并提出自适应搜索步数的 beam search(图 4),可以将 beam search 的时间复杂度从 O(km^2) 进一步减少到 O(klm),其中 k 是 beam size,m 是候选视频数目,l 是实际的搜索步数,n≤lm。
图 4. beam search 稳定性及 adaptive beam search 示例
实验
离线对比
我们在业务数据集上对比了服务端精排模型预估分、简单的 DNN 模型、EdgeRec,结果如下:
表 1. 离线模型疗效对比
将 SimpleDNN 和论文提出的模型做对比,可以见到直接加入服务端精排模型预估分作为特点疗效并不好,甚至比精排分本身的 AUC 更低,说明这些缺乏记忆性特点的小模型在不做相应特点处理的情况下,很难借助好精排分这类强个性化的特点。
同时也通过消融实验验证了不同部份的作用:
表 2. 消融实验疗效对比
CSF:客户端特有的特点,如网速、视频预加载时长等,这类特点对用户是否会继续观看视频有很大影响。
FE:特征工程。特征工程对疗效的影响十分显著。
RTS:用户实时反馈序列。双击比有效播放和下降操作更稀疏,用户实时反馈的影响也更小一些。
在线 A/B 实验
在线实验在快手 App 的线上环境进行,用到的模型大小在 6MB 以内,完全布署在客户端。
表 3. 在线 A/B 实验疗效
实验结果表明,基于单点贪心排序的端上重排相对于没有端上重排的基线,各个指标都有显著提高。context-aware 的生成式重排在此基础上又带来了进一步的指标提高。
表 4. 端上重排模型的资源开支
实验期间也监控了基于 adaptive beam search 生成式端上重排带来的资源开支,表 4 是实验组中所有设备的资源开支均值,相对于没有端上重排模型的实验组,CPU 和显存的开支有轻微升幅。通过对视频播放卡顿率等指标的监控表明,端上重排模型对用户体验不会导致影响。
图 5. 线上疗效随爆光位置的周期性变化
在实验过程中,还观察到了线上疗效随爆光位置呈现周期性变化(图 5),我们剖析主要有两个诱因引起了这个现象:
1.候选集合大小会周期性变化。当服务端的候选集合刚下发到客户端时,候选空间最大,随着视频渐渐爆光,候选数目渐渐变小,潜在的利润空间也渐渐收缩,直到客户端接收到下一次候选集合。
2.服务端排序疗效的周期性变化。服务端每次接收到客户端的恳求时,可以借助近来的用户行为,推荐更好的内容,此时排序疗效是最好的,随着用户在客户端持续观看视频,变化的上下文促使服务端的排序渐渐显得不够确切,这也存在周期性的变化。
Case Study
图 6. 反映用户实时反馈重要性的反例
图 6 中展示了一个线上的真实事例。用户在当前页中对两个亲子视频有显著的正反馈(双击 + 收藏),但服务端未能实时获取到这种讯号,此时候选中的另一个亲子视频,服务端预测的双击率只有 0.049。而端上模型在引入用户实时反馈特点以后,关注到了用户在同类别视频上的反馈(attention 权重最高),对候选视频的双击率预估值急剧提高到 0.592,并将其排在靠前的位置(受打散规则限制,没有紧接着之前的亲子视频爆光),最终用户也双击并收藏了这个视频。这个事例证明用户实时反馈对感知其当前的兴趣至关重要。
总结
端上重排系统大大提高推荐系统的实时性,带给用户更极至的推荐体验。论文在短视频场景通过一个超轻量级的端上重排模型实现了用户反馈的实时感知,提升了离线和在线的疗效。另外介绍了端上布署推荐模型的好多实现细节和实践经验,希望还能促进端上智能在工业界和学术界的发展。后续会继续探求端上推荐系统的实时特点借助,端云联合优化等相关方向。
THE END