Twitter的推荐系统开源了,Twitter的推荐系统是什么样的呢?Twitter推荐系统的架构说明

2023/9/30 16:27:43

Twitter的推荐系统开源了,Twitter的推荐系统是什么样的呢?Twitter推荐系统的架构说明

  • 01. Twitter的推荐系统是什么样的?
  • 02. Candidate Sources
    • 2.1 In-Network Source
    • 2.2 Out-of-Network Sources
  • 03. Ranking
  • 04. Heuristics, Filters, and Product Features
  • 05. Mixing and Serving
  • 06. 大规模专有网络图
  • 07. 排名信息
  • 08. 小结

来源:https://www.theverge.com/2023/3/31/23664849/twitter-releases-algorithm-musk-open-source

01. Twitter的推荐系统是什么样的?

在这里插入图片描述

Twitter的推荐系统由三大部分构成:

  • Candidate Sources:从不同的推荐源获取最好的推文。
  • Rank:使用机器学习模型对每条推文进行排名。
  • 后处理逻辑:应用heuristicsfilters,例如过滤来自已屏蔽用户的推文、NSFW内容和已看到的推文。

负责构建和提供推荐时间轴的服务被称为“Home Mixer”。

Home Mixer”建立在“Product Mixer”之上,这是定制的Scala框架,有助于构建内容的动态流。

这项服务作为推荐系统主干,连接不同的候选源、评分函数、heuristics和filters。

在这里插入图片描述

02. Candidate Sources

Twitter使用多个候选源来为用户检索最近的推文或者相关的推文。

对于每个请求,推特尝试通过这些源从数亿条推文池中提取最佳的1500条。

从您关注的人(内部网络)和不关注的人(外部网络)中寻找候选人。

如今,“为您推荐”Home Mixer平均由50%的内部网络推文和50%的外部网络推文组成(尽管这可能因用户而异)。

2.1 In-Network Source

内部网络资源是最大的候选来源,旨在提供关注的用户最相关、最新的推文。

它使用逻辑回归模型,高效地对关注的人的推文进行排名,以其相关性为基础。然后将排名最高的推文发送到下一阶段。

排名内部网络推文最重要的组成部分是Real Graph

Real Graph是一种模型,用于预测两个用户之间的互动可能性。用户和推文作者之间的Real Graph分数越高,就会包括更多他们的推文。

内部网络来源最近成为Twitter的研究对象。最近Twitter停止使用Fanout服务,这是一个12年前用来从每个用户的推文缓存中提供内部网络推文的服务。

2.2 Out-of-Network Sources

在用户网络之外寻找相关的推文是一个棘手的问题。

因为如果你不关注作者,怎么知道某条推文是否与你相关?

为此,Twitter采取了两种方法来解决这个问题。

一个是社交图(Social Graph)。

这个方法是通过分析你关注的人或有相似兴趣的人的活动,来估计你会发现什么是相关的。

主要遍历参与的图,并按照以下步骤回答以下问题:

  • 我关注的人最近在Twitter上发了什么消息?
  • 谁和我一样喜欢类似的推文,他们最近还喜欢什么?

团队根据这些问题的答案生成候选推文,并使用Logit模型对产生的推文进行排名。

这种类型的图形遍历对于外部网络推荐是必不可少的;团队开发了 GraphJet,一个维护用户和推文之间实时交互图的图形处理引擎,来执行这些遍历。

虽然这种搜索Twitter参与和关注网络的启发式方法已经被证明是有用的,但嵌入式空间方法已经成为外部网络推文的更大来源。

第二个是嵌入空间(Embedding Spaces)。

嵌入式空间方法旨在回答一个关于内容相似性的更普遍的问题——什么推文和用户与我的兴趣相似?

Embeddings通过生成用户兴趣和推文内容的数字表示来工作。然后可以计算这个嵌入空间中任意两个用户之间的相似度,推文或 用户-推文 对。

只要生成准确的embedding,就可以使用这种相似性作为相关性的替代。

Twitter 最有用的嵌入空间之一是 SimClusters。

SimClusters 使用自定义矩阵分解算法发现由一群有影响力的用户锚定的社区(有14.5万个社区,每三周更新一次)。

用户和推文在社区空间中表示,并且可以属于多个社区。社区的规模从个人朋友群的几千名用户到新闻或流行文化的数亿用户不等:

在这里插入图片描述

03. Ranking

大约1500相关候选。评分直接预测每个候选推文的相关性,在这个阶段,所有候选推文权重一致,而不考虑其来源。

排序是通过一个48M参数的神经网络实现的,该网络在推特互动数据上不断训练,以优化积极参与等行为的权重(例如点赞、转发和回复)。

考虑了数千个特征,并输出十个标签,为每条推文打分,其中每个标签代表参与的概率,根据这些分数对推特进行排序。

04. Heuristics, Filters, and Product Features

在排序阶段之后,应用启发式和过滤器来实现各种产品功能。这些功能共同作用,实现推荐内容的平衡和多样化。

  • Visibility Filtering: Filter out Tweets based on their content and your preferences. For instance, remove Tweets from accounts you block or mute.

  • Author Diversity: Avoid too many consecutive Tweets from a single author.

  • Content Balance: Ensure we are delivering a fair balance of In-Network and Out-of-Network Tweets.

  • Feedback-based Fatigue: Lower the score of certain Tweets if the viewer has provided negative feedback around it.

  • Social Proof: Exclude Out-of-Network Tweets without a second degree connection to the Tweet as a quality safeguard. In other words, ensure someone you follow engaged with the Tweet or follows the Tweet’s author.

  • Conversations: Provide more context to a Reply by threading it together with the original Tweet.

  • Edited Tweets: Determine if the Tweets currently on a device are stale, and send instructions to replace them with the edited versions.

05. Mixing and Serving

在这里插入图片描述

此时,Home Mixer已经准备好了一组推文,可以发送到用户设备上。作为该过程的最后一步,系统将推文与其他非推文内容混合在一起,如广告、关注建议和登录提示等,这些内容将返回到用户设备中显示。

上述Pipeline每天运行约50亿次,平均在1.5秒内完成。单个Pipeline执行需要220秒的CPU时间。

在这里插入图片描述

06. 大规模专有网络图

像 Twitter 这样的社交网络就是超大图的实例,节点是用户和推文的模型,边则是回复、转发和喜欢等互动的模型。

在这里插入图片描述
Twitter 的核心商业价值有很大一部分来自于这个庞大的由用户、推文和互动构成的基础数据集。 用户登录、查看推文、点击推文、查看用户资料、发布推文、回复推文等,在 Twitter 上的每一次互动都会被记录到内部数据库。

从 Twitter 的公共 API 获得的数据只是 Twitter 内部跟踪数据中的一小部分。这一点很重要,因为 Twitter 的内部推荐算法可以获得所有这些丰富的互动数据,而任何开源工作都可能仅能使用一个有限的数据集。

07. 排名信息

2017 年,Twitter 的研究人员曾在一篇名为《在 Twitter 时间线上使用大规模深度学习》的文章中提到,为了预测某条推文是否会吸引用户,Twitter 的模型考虑了以下几个要点:

  • 推文本身:它的新近度,存在的媒体卡(图像或视频),总互动数(如转发和喜欢的数量)。

  • 推文作者:用户过去与这个作者的互动,用户与他们联系的强度,用户关系的起源。

  • 用户:用户在过去觉得有吸引力的推文,用户使用推特的频率和程度。研究人员表示,“我们考虑的特征及其各种互动的清单在不断增加,为我们的模型提供了更多存在细微差别的行为模式。”

这些 2017 年的排名信息描述可能有点过时,但这些核心信息在今天仍然与 Twitter 高度相关。因为这份清单很可能已经推广到几十甚至几百个重点机器学习模型,它们支撑着 Twitter 的算法。

在这里插入图片描述

一个深度学习模型的可视化,用于确定一个用户在未来关注另一个用户的可能性。这个模型代表了 Twitter 内部各种推荐系统的一小部分。

08. 小结

Travis Fischer 认为,将 Twitter 推荐算法开源难免会遇到一些重大的工程挑战。

比如,Twitter 的网络图非常庞大,包含数以亿计的节点和数十亿的边。Twitter 的实时性带来了另一个独特的挑战:用户希望 Twitter 尽可能地接近实时,这意味着底层网络图是高度动态的,延迟成为一个真实的用户体验问题。此外,还有可靠性、安全与隐私方面的挑战。

但无论如何,马斯克还是兑现了他的开源承诺,Twitter 推荐算法开源也标志着,这类平台的透明度正在迈出关键一步。


http://www.jnnr.cn/a/369109.html

相关文章

[综]Review of bike-sharing system studies using bibliometrics method

Review of bike-sharing system studies using bibliometrics method 文献计量学方法在自行车共享系统研究中的应用 article{2022reviewbikesharing, title {Review of bike-sharing system studies using bibliometrics method}, journal {Journal of Traffic and Transport…

Spring源码分析-Bean创建流程四

目录 目录 一、前言 二、Bean实例化构造器的选择 1、createBeanInstance方法解读 2、autowireConstructor 二、BeanPostProcess四个实现中的哪里会用到 Autowired注解构造使用注意 三、实例化几种策略 1、instantiateBean入口 2、获取实例化策略并且进行实例化操作主要有…

vue尚品汇商城项目-day04【25.面包屑处理关键字】

文章目录25.面包屑处理关键字25.1面包屑处理关键字25.2面包屑处理品牌信息25.3平台售卖属性的操作25.面包屑处理关键字 25.1面包屑处理关键字 (1)动态开发面包屑中的分类名 变成式导航路由跳转【自己跳自己】 (2)动态开发面包…

(Cont.) OpenPose OpenCV Caffe QT

Cont. conda deactivate Remember to deactivate conda before compiling conda deactivatecaffe colas.h Path: openpose/3rdparty/caffe/include/cblas.h Case 1: 如果没有 寻找一下 (大概率在python directory有)复制过来即可 exactly寻找命令&am…

C语言 —— 数组

一维数组与二维数组前言一、 一维数组1.1 一维数组定义和使用1.2 例子 :列出0-9的数字1.3 一维数组的初始化1.4 数组名二、二维数组2.1 二维数组的定义2.2 例题:一个学习小组有 5 个人,每个人有 3 门课程的考试成绩,求该小组各科的…

javaScript蓝桥杯----偷梁换柱

目录一、介绍二、目标三、代码四、知识点1. Object.defineProperty五、答案一、介绍 随着医疗水平的进步,人的平均寿命在慢慢提升。现在全球平均预期寿命是 73.2 岁,而在 1950 年则只有 47 岁。那么人类的寿命有极限吗?根据最新的研究&#…

用户体验设计中的颜色

🔥1 颜色模型是一种抽象的用于描述颜色被定义和呈现方式的数学模型。RGB模型(加色模式)最多用于显示器上,因为它是发光的颜色。CMYK模型(减色模式)适用于印刷体,不会发光而是反光的模式&#x1…

全网最详细的nodejs卸载和安装教程

因为项目需求,重装了3个版本的node.js,记录下完整过程,少走弯路少查资料。 一、卸载 1、Win菜单中找到Node.js的卸载程序,运行卸载程序。 2、点击是。 3、等待卸载完成。 4、删除C:\Users\用户名\AppData\Roaming目录下的npm和…

Linux使用:环境变量指南和CPU和GPU利用情况查看

Linux使用:环境变量指南和CPU和GPU利用情况查看Linux环境变量初始化与对应文件的生效顺序Linux的变量种类设置环境变量直接运行export命令定义变量修改系统环境变量修改用户环境变量修改环境变量配置文件环境配置文件的区别profile、 bashrc、.bash_profile、 .bash…

苦中作乐---竞赛刷题(15分-20分题库)

(一)概述 (Ⅰ)彩票是幸运的 (Ⅱ)AI 英文问答程序 ( Ⅲ ) 胎压检测 (二)题目 Ⅰ 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 …

连接 AI,NebulaGraph Python ORM 项目 Carina 简化 Web 开发

作者:Steam & Hao 本文整理自社区第 7 期会议中 13‘21″ 到 44’11″ 的 Python ORM 的分享,视频见 https://www.bilibili.com/video/BV1s8411N7Cw 在做业务开发时,NebulaGraph Python ORM 项目作者:Sword Elucidator&#x…

服务经常宕机的检查步骤以及排查问题、解决方法(持续更新)

一、检查步骤: 1. 首先查看数据库连接池有没有爆满 show max_connections; --查看连接池的大小 select count(1) from pg_stat_activity; --查看连接池已用数--查看剩余可用数 select max_conn-now_conn as resi_conn from (select setting::int8 as max_conn,(…

反向代理配置

目录 反向代理配置: 使用场景: 1、proxy_pass 作用:填的要代理的源站的IP地址或者域名。 格式: 几种location情况下的proxy_pass: 最正规写法: 关于代理的日志记录 2、proxy_set_header 作用&am…

c++多线程 1

https://www.runoob.com/cplusplus/cpp-multithreading.html 两种类型的多任务处理:基于进程和基于线程。 基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。 线程 c11以后有了 标准库 1 函数 2 类成员函数 3 lambda函…

LeetCode-72. 编辑距离

目录动态规划题目来源 72. 编辑距离 动态规划 1.确定dp数组(dp table)以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]。 2.确定递推公式 在确定递推公式…

BC12 字符圣诞树

BC12 字符圣诞树 我们先观察一下这个图,拆分来看,就是下面这张图 这么看来就是每行都有9个元素,字符或空格,只是他俩每行的所占比不同, 我们观察一下规律,发现 (我们只用观察最后一个字符前面的…

Power BI----DAX 再复习(DAX基础、基础函数)

DAX基础一、数据模型模型关系二、基础函数1.时间日期函数2.关系函数3. 转换函数4.文本函数5.聚合函数6.逻辑函数7.三角函数和数学函数8.信息函数DAX 全称 Data Analysis eXpressions,是面向 Microsoft Power BI、Microsoft SQL Server Analysis Services (SSAS)和 M…

centos7 systemd 开机自启动脚本配置方法 redis开机自启动

centos7 systemd 开机自启动脚本配置方法1、步骤如下1.1、安装依赖包1.2、编译安装redis1.3、复制redis解压后utils目录下的service文件1.3.1、修改service文件注意1.3.2、可参考的service文件1.3.3、修改配置文件注意设置1.3.4、可参考的配置文件1.4、重启服务器测试redis自启…

Java对象和类

Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念。 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如&am…

认识Maven及Maven下载和管理依赖

目录 什么是Maven? 如何下载Maven? 通过Maven管理依赖 什么是Maven? maven是Java中知名的一个远程管理工具/构建工具,它的核心功能是:管理依赖;构建/编译;打包等等。 如何下载Maven&#x…
最新文章