Categories: 博客

直播推荐系统的实时性

在网上看到这张图,好像是抖音推荐系统的一般实现,系统性的描述了个性推荐系统的数据流程和系统架构。

这个图把相关知识总结得比较到位,引用如下:

所有推荐系统要发挥作用,都离不开数据驱动。数据来自两个部分,实时数据和离线数据。实时数据一般走flink这样的流计算产品进行处理,离线数据大多走hadoop或spark的离线计算能力进行处理。

相对于抖音的海量短视频推荐,我们在直播里的推荐,更强调实时数据部分。

我们的特征工程,大体分为四块:用户离线特征、用户实时特征、主播离线特征、主播实时特征。

其中离线特征包括用户画像、主播画像,以及用户历史行为的各种embedding。离线特征具备比较好的记忆能力,不管用在召回阶段还是排序阶段,对系统的准确性提升有帮助。

在直播业务场景里,相对于离线特征,推荐系统更加依靠各类实时特征。跟短视频不同,直播的内容是实时变化的,主播的风格也是变化的,不存在内容标签这样的说法。与此对比的是,根据音频、视频、文本(弹幕)训练的多模态模型,更好的实时计算出主播的内容特征。

实时特征一般指用户和主播的实时行为数据。比如用户的观看、订阅、弹幕、打赏行为,主播的内容行为,主播间的统计数据如观众数、订阅数、弹幕数、打赏数,这些都是实时数据,它们是一直变化的。

在实践中,这些实时的数据对推荐系统的效果影响更大。直播间用户的行为变化很快,主播的特征变化也很快,那么基于实时数据的推荐行为,会带来更好的准确性与实时性。

比如,历史上该用户可能是个游戏粉,主要关注游戏直播。但不排除他某天也关注秀场,去看唱歌跳舞。那么基于实时数据的推荐系统,就能敏感的发现这个行为,并尽可能快的给他推荐可能感兴趣的秀场直播间。

再比如,某个主播画风突变,从话唠模式转变到才艺表演,并跳了一段热舞。推荐系统也要注意到这种变化,并负责引流。

除了实时特征外,还对模型的实时训练有要求。我们一个模型上线,经过a/b测试正式发布到生产环境后,它不是一成不变的,而是随时可能被新版本的模型自动迭代。因为后台有实时训练,一直不间断的使用新数据来训练当前模型。

这个训练是分钟级别的,持续迭代中。新训练出来的模型,如果auc大于过去十次的平均auc,则模型完成本次训练,上线进行推理。如果auc不达标,则继续使用实时数据进行迭代。

在推荐系统架构上,推荐内容也是经过召回、排序、再排序三个阶段。

直播的召回逻辑相对来说更复杂,我们的海外直播推荐,使用了18路召回算法。在召回之后,是精排,这里多种模型都试过,包括逻辑回归、随机森林、DNN、WDL、双塔等。在数据量足够的前提下,基于深度学习的精排模型的效果会更好一点。

再排序主要是预留给业务的一些运营策略的干预能力。

总体上,结合实时数据和离线数据,并且在实时特征和实时训练的加成下,直播的推荐系统能够做到比较敏捷的反应,给用户推荐出相对正确、新颖的内容。

Print this entry

Article info



发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注