Twitter推荐算法解读
最近 Twitter 开源了其最宝贵的财产——推荐算法!
每天,人们会在 Twitter 上发布超过 5 亿条推文,Twitter 会向用户推送超过 1500 亿条推文。Twitter 的推荐算只会向用户推荐少数与其相关且有吸引力的热门推文。跟抖音等UGC平台类似,好的推荐算法是 Twitter 成功的制胜法宝。本文将带你了解 Twitter 是如何做内容推荐的。
推荐算法组成
推荐算法由很多部分组成,它是不同模型、特征和服务的集合。这些组件如何协同工作,请参考下图:
Twitter 推荐算法的主要组成部分
所有组件共同尝试回答两个重要问题:
- 您将来与其他用户互动的可能性有多大
- Twitter 上有哪些社区,其中有哪些热门推文?
这就是社区的样子……
Twitter 社区概念插图
Twitter 目前有 145,000 个社区,有些社区已经数百万人,每三周更新一次。
揭秘推荐算法
推荐算法由三个阶段构成,这三个阶段由一个管线串联起来:
- 候选推文采集
- 推文排名
- 推文过滤
1. 候选推文采集
首先,从数亿条推文中提取与用户相关的最佳 1500 条候选推文。
候选推文主要有两个来源:你关注的人和你不关注的人。推文以 50-50 的比例来自这两个来源。
推文来源使用两种图形处理技术:Real Graph 和 GraphJet,前者是一种称为 SimClusters 的嵌入技术,后者是一种自定义矩阵分解算法。
简单地说,候选推文采集系统中的组件试图回答这些问题:
- 两个用户之间参与的可能性有多大?
- 如果你不关注作者,我们如何判断某条推文是否与你相关?
- 我关注的人最近与哪些推文进行了互动?
- 谁喜欢与我相似的推文,他们最近还喜欢什么?
- 哪些推文和用户与我的兴趣相似?
2. 推文排名
这一步使用称为 Heavy Ranker 的神经网络对每个候选推文的相关性进行评分。这个神经网络大约有约 48M 参数。该系统考虑了数以千计的特征,为每条推文打分。
以下是对输入到 Twitter Heavy Ranking 模型的主要特征组的描述。
聚合特征
Twitter的聚合特征构成了Twitter的大部分特征,并且是通过特定时间窗口内维护特定范围内特征值的滚动聚合生成的。 Twitter 计算长期(50 天计算)和短期(“实时”- 3 天以内,通常为 30 分钟计算)的聚合。
聚合特征列表如下:
author_aggregate
author-topic_aggregate
list_aggregate
user_aggregate
user_author_aggregate
user_engager_aggregate
user_inferred_topic_aggregate
user_media_annotation_aggregate
user_mention_aggregate
user_request_context_aggregate
user_topic_aggregate
topic_aggregate
tweet_aggregate
非聚合特征
Twitter 还有许多独立特征用于捕获有关用户、推文、作者和推文上下文的信息。
two_hop
realgraph
authors.realgraph
recap.tweetfeature
,recap.searchfeature
等tweetsource
in_reply_to_tweet
timelines.earlybird
realtime_interaction_graph
user_tweet.recommendations
other
嵌入特征
Twhin 是在 Twitter 数据上训练的大型图嵌入。我们使用来自 Twhin 算法的三个200维嵌入。
Twhin Follow Embeddings
Twhin Engagement Embeddings
⚠注意,由于用户设置或其他限制,对于每个请求并非所有特征都可用,并且基于不同变量的“为你推荐”排名可能存在一些差异。
3. 推文过滤
基于各种因素过滤候选推文,从而建立均衡且多样化的提要,例如
- 被冻结的账户
- 重复推文
- 不同的作者
- 编辑过的推文
- NSFW 内容等
使用 Home Mixer 服务提供推文
上面三个阶段完成后,就可以将选定的推文推送给用户了。
Twitter 有一个名为 Home Mixer 的服务,专门用于构建 为你推荐(For You) 时间线。Home Mixer 主要基于 Scala 编程语言开发,将所有推荐阶段连接在一起。它还负责将推文与其他非推文内容混合在一起,例如广告、关注推荐和登录提示。
我们上面讨论的整个流水线每天运行大约 50 亿次,平均完成时间不到 1.5 秒。
总结
尽管本文没有深入到算法的技术细节,但所有的代码和资料 Twitter 都已经开源到 GitHub 上。后面我会带大家逐个模块探索实现细节。Twitter 肯将自己最宝贵最核心的算法开源出来非常伟大,正如Elon Musk说的,他确实在试图解放这只蓝鸟,并使其对用户更加透明。