Twitter推荐算法解读

简介: 最近 Twitter 开源了其最宝贵的财产——推荐算法!本文将带你了解 Twitter 是如何做内容推荐的。

Twitter推荐算法解读

最近 Twitter 开源了其最宝贵的财产——推荐算法!

Frc1d5iXoAMsD-7.png

每天,人们会在 Twitter 上发布超过 5 亿条推文,Twitter 会向用户推送超过 1500 亿条推文。Twitter 的推荐算只会向用户推荐少数与其相关且有吸引力的热门推文。跟抖音等UGC平台类似,好的推荐算法是 Twitter 成功的制胜法宝。本文将带你了解 Twitter 是如何做内容推荐的。

推荐算法组成

推荐算法由很多部分组成,它是不同模型、特征和服务的集合。这些组件如何协同工作,请参考下图:

9b82c65badc9e1b71cb6ef6a4ade3a30.png

Twitter 推荐算法的主要组成部分

所有组件共同尝试回答两个重要问题:

  • 您将来与其他用户互动的可能性有多大
  • Twitter 上有哪些社区,其中有哪些热门推文?

这就是社区的样子……

a19bf1f7f30702b1ec351510fa2b35c1.png

Twitter 社区概念插图

Twitter 目前有 145,000 个社区,有些社区已经数百万人,每三周更新一次。

揭秘推荐算法

推荐算法由三个阶段构成,这三个阶段由一个管线串联起来:

  1. 候选推文采集
  2. 推文排名
  3. 推文过滤

1. 候选推文采集

首先,从数亿条推文中提取与用户相关的最佳 1500 条候选推文。

候选推文主要有两个来源:你关注的人和你不关注的人。推文以 50-50 的比例来自这两个来源。

推文来源使用两种图形处理技术:Real GraphGraphJet,前者是一种称为 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说的,他确实在试图解放这只蓝鸟,并使其对用户更加透明。

目录
相关文章
|
机器学习/深度学习 算法 搜索推荐
Twitter 算法开源究竟会是什么样的?
本文最初发布于 Travis Fischer 的个人博客。
399 0
Twitter 算法开源究竟会是什么样的?
|
算法 前端开发 JavaScript
分布式唯一ID系列(5)——Twitter的雪法算法Snowflake适合做分布式ID吗
写到这里,分布式Id算是写到最后一篇了,在这一篇里,我会讲到目前网上最适合分布式Id的方法,什么方法呢,请您往下看: 介绍Snowflake算法 SnowFlake算法是国际大公司Twitter的采用的一种生成分布式自增id的策略,这个算法产生的分布式id是足够我们我们中小公司在日常里面的使用了。
2456 0
|
存储 算法 Java
Twitter的分布式自增ID算法snowflake (Java版)
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。
1882 0
|
算法 测试技术 数据库
详解Twitter开源分布式自增ID算法snowflake,附演算验证过程
1.snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并发巨大的业务要求ID生成效率高,吞吐大;比如某些银行类业务,需要按每日日期制定交易流水号;又比如我们希望用户的ID是随机的,无序的,纯数字的,且位数长度是小于10位的。
3016 0
|
存储 算法 关系型数据库