手撕Twitter推荐算法

本文深入剖析Twitter的推荐系统,涵盖召回、粗排、精排及混排策略。介绍包括图数据挖掘、社交图预训练、Light Ranker与Heavy Ranker模型。Twitter使用自研的Earlybird搜索引擎、GraphJet图引擎和TwHIN预训练表征,结合社区发现和多目标建模,打造高效推荐服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Twitter近期开源了其推荐系统源码[1,2,3],截止现在已经接近36k star。但网上公开的文章都是blog[1]直译,很拗口,因此特地开个系列系统分享下。系列涵盖:

Twitter整体推荐系统架构:涵盖图数据挖掘、召回、精排、规则多样性重排、混排等。参考材料见[1,2]。

Twitter精排模型(Heavy Ranker):包含模型结构、特征工程、多目标建模、多目标融合等,看了下居然是出自新浪微博DLP-KDD 2021的工作,很强。参考材料见[3]。

Twitter图模型预训练表征(TwHIN embeddings):基于社交异构图对用户、推文做预训练,Twiiter自研TwHIN KDD 2022的工作。参考材料见[3]。

本篇文章主要先分享Twitter整体的推荐系统架构。

引言

Twitter场景下推荐系统问题定义:

输入:Twitter network,由推文、用户、交互行为等构成的超大规模异构图。

输出:预测你和推文或其他用户交互的概率,进行推文或用户的推荐。

整体问题和常见的推荐系统差别不大。特色的地方在于Twitter比较关注social graph的挖掘,包括图特征、图预训练、图召回模型等。

整体架构如下图,包括数据、特征工程和推荐系统服务。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

最终Feed流还会以时间线的形式由早先到最近呈现给用户推文

数据:涵盖了社交图、用户的交互行为、用户画像数据等。数据这块是Twitter 的核心资产,由用户、推文和互动构成的超大规模异构社交图。

特征工程:Twitter主要关注社交图的预训练、聚类、社区发现等,这也是Twitter的特色所在。图预训练得到的向量可以用于向量召回、精排特征等。此外,还包括一小部分安全相关的工作。

推荐系统核心服务:Home Mixer,Twitter定制的Scala框架。可以认为是算法工程。类比国内大厂用的Java、Go、C++等。由三大部分构成:

召回:Candidate Sources,从不同的推荐源获取最好的推文,类似推荐系统的召回阶段。Candidate Retrival。核心召回路是图召回。

"Candidate Sources" 提供了候选项,而 "Candidate Retrieval" 则是从这些候选项中选出最符合需求的候选项的过程。因此,选择适当的 "Candidate Sources" 对于 "Candidate Retrieval" 的效果至关重要,因为这可以影响候选项的质量和准确性。

"Candidate Retrieval" 的意思是候选项检索。这个术语通常用于搜索和推荐系统,指的是从大量数据中检索出符合特定要求的候选项,以供进一步评估和选择。例如,在推荐系统中,候选项检索可以指从用户的浏览历史、兴趣和偏好中选出候选内容,以供推荐。

粗精排:使用机器学习模型对推文进行打分排序,Twitter分为Light Ranker和Heavy Ranker。分别类比推荐系统的粗排和精排阶段。

重排/混排:应用启发式规则,例如过滤自已屏蔽用户的推文、NSFW内容和已看到的推文;保证作者多样性等;以及负责广告、推文和作者混排等。

下面会围绕召回、粗排、精排、混排展开介绍。特征部分不单独设章节,会在召回和粗排中用到的地方介绍。

召回

Twitter有很多召回数据源,为用户召回最新、最感兴趣的相关推文。

输入:推文候选池大小,hundreds of millions 亿万级别。

输出:两类召回通道:你关注的用户圈(in-network)、你未关注的用户圈(out-of-network),整体上,二者比例是55开,即召回一半你关注用户的推文、一半你未关注的用户的推文。当然,不同用户召回的配比会不一样。

In-Network召回

主召回路,也是最大的候选推文来源,目标是从你关注的作者推文中,检索出最新、你最可能感兴趣的推文给你,能贡献 50% 的推文来源。使用自研搜索引擎Earlybird[6],检索你关注的人的推文,本质是个倒排索引。只不过索引里检索到的推文要过一个Light ranker海选粗排模型进行该召回路的截断,放在下文的粗排章节中介绍。

Out-of-Network 召回

在用户关注圈子之外寻找相关的推文推荐给用户。Twitter采取了两类召回方法:

UserTweetEntityGraph (UTEG):协同过滤。通过分析你关注的人或有相似兴趣的人的行为,来预测你感兴趣的相关推文,比如,二跳关系U2U2I,为了实现高效动态图构造和游走,内部自研了GraphJet[5]图引擎,发表在VLDB 2016上。GraphJet能够高效、动态地维护一个实时交互图(real-time interaction graph),结点为用户和推文,边为实时交互行为,并实现高效地图游走。该方法大概能涵盖 15% 的推文来源。该方法得到的召回结果也要过一个Light Ranker进行海选粗排。

"二跳关系U2U2I"是指一种用户-用户-项目(User-User-Item)的关系,用于描述推荐系统中的协同过滤过程。在这个过程中,根据你关注的人或有相似兴趣的人的行为,预测你可能感兴趣的相关推文。二跳关系是指从一个用户(User)通过关注的用户(User)找到相关的推文(Item)。这种关系可以帮助推荐系统发现更加相关和有趣的内容。

例如,假设你是用户A,你关注了用户B,而用户B关注了用户C。用户C发布了一条推文,而根据用户B和C的关系,可以预测这条推文可能对你(用户A)感兴趣。这就是一个典型的用户-用户-项目(U2U2I)的二跳关系。

Embedding Spaces:嵌入表征学习。建模更加通用的问题:你对哪些推文以及哪些作者感兴趣。表征学习目标是训练得到用户表征向量和推文表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值