twitter开源算法(1)For You推荐系统架构
1 Twitter’s Recommendation Algorithm
我们的推荐系统由许多互相关联的服务(services)和工作(jobs)组成,本节这要是聚焦home timeline的for you feed流。
the-algorithm开源地址:https://github.com/twitter/the-algorithm
本篇博客来源:https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
2 Home Mixer 的For You 推荐架构
主要由以下三步组成
1 从不同的推荐候选集获取最合适的推文——(召回)
2 使用机器学习进行排序——(排序)
3 使用启发式的过滤方法,过滤掉用户拉黑,NSFW(not suit for work)和已经看过的推文——(重排序)
构建timeline 的主要架构
3 召回源
Twitter 有很多召回来源,每次从几亿的推文中请求1500左右的推文,候选集有从用户关注(In-Network)的的部分选择,还有从用户没有关注的部分选择(out-of-Network),针对For you推荐,有50%来自于用户关注,还有50%来自于用户未关注部分。
In-NetWork Source
In-Network Sorce 是从你关注的用户中分发最相关,最新的推文。搞笑的推文排序是使用逻辑回归。
排序最主要的部分是使用Real Graph,实时图用来预测两个用户的相关性,你和推文作者的实时图得分越高,给你推荐他的推文越多。
out-of-Network Sources
Twitter 有两种方法去召回用户未关注过的用户的推文。
1 social Graph
第一种方法是,通过分析和你关注的用户的相似用户,或者形同兴趣的人。
根据业务,需要回答以下两个问题
a . 我关注的用户的最近都参与了哪些推特
b. 谁喜欢和我相似的推文,他们最近点赞了哪些推文。
我们根据这些问题的答案生成候选推文,并使用逻辑回归模型对结果推文进行排名。这种类型的图遍历对于我们的网络外是必不可少的
recommendations : 我们开发了GraphJet(git地址)(用户和推特实时交互的图处理引擎),这些启发式的搜索发布和关注推文的网络结构是非常有用的(目前,服务了15%左右的Home Timeline 推文)。embedding space 方法已经变成了最大的 out-of-network 推特召回来源。
2 Embedding Spaces
Embedding 方法旨在回答一个关于内容相似性的更普遍的问题:哪些推文和用户与我的兴趣相似?
Embedding工作原理是生成用户兴趣和推特内容的数字表示。然后,我们可以计算这个embedding 空间中任何两个用户、推特或用户-推特对之间的相似性。只要我们生成准确的embedding,我们就可以使用这种相似性作为相关性的替代。
Twitter最有用的嵌入空间之一是SimClusters。SimClusters使用自定义矩阵分解算法发现由一群有影响力的用户锚定的社区。有145k个社区,每三周更新一次。用户和推特在社区的空间中被代表,并且可以属于多个社区。社区的规模从个人朋友群的几千名用户到新闻或流行文化的数亿用户不等。
我们可以通过查看推文在每个社区中的流行程度,将推文嵌入到这些社区中。来自社区的用户越喜欢推特,推特与该社区的联系就越多。
4 排序 Ranking
For You时间表的目标是为您提供相关的推文。目前,我们有大约1500名候选人可能是相关的。评分直接预测每个候选推文的相关性,是在时间线上对推文进行排名的主要信号。在这个阶段,所有候选人都得到平等对待,而不考虑其来源。
排名是通过一个~48M参数的神经网络实现的,该网络在推特互动上不断训练,以优化积极参与(例如点赞、转发和回复)。这种排名机制考虑了数千个特征,并输出十个标签,为每条推文打分,其中每个标签代表参与的概率。我们根据这些分数对推特进行排名。
5 重排序 Heuristics, Filters, and Product Features
在排名阶段之后,我们应用启发式和过滤器来实现各种产品功能。这些功能共同作用,创建了一个平衡和多样化的提要。一些例子包括:
- Visibility Filting:根据推文的内容和您的偏好过滤推文。例如,从您屏蔽或静音的帐户中删除推文。
- Author Diversity:避免单个作者连续发太多推文。
- Content Balance:确保我们提供网络内和网络外推文的公平平衡。
- Feedback-based Fatigue:如果观众提供了负面反馈,则降低某些推文的分数。
- social Proof:排除没有二级连接的网络外推文作为质量保障。换句话说,确保你关注的人参与推特或关注推特的作者。
- Conversations:通过将回复与原始推文连接在一起,为回复提供更多上下文。
- Edited Tewwts:确定当前设备上的推文是否过时,并发送指示将其替换为编辑的版本。
6 Mixing And Serving
此时,Home Mixer已经准备好了一组推文,可以发送到您的设备。作为该过程的最后一步,系统将推文与其他非推文内容混合在一起,如广告、关注建议和登录提示,这些内容将返回到您的设备中显示。
上述管道每天运行约50亿次,平均在1.5秒内完成。单个管道执行需要220秒的CPU时间,几乎是你在应用程序上感知到的延迟的150倍。
相关文章:

twitter开源算法(1)For You推荐系统架构
1 Twitter’s Recommendation Algorithm 我们的推荐系统由许多互相关联的服务(services)和工作(jobs)组成,本节这要是聚焦home timeline的for you feed流。 the-algorithm开源地址:https://github.com/twitter/the-algorithm 本篇博客来源&…...
A General Framework for Uncertainty Estimation in Deep Learning源码阅读(二)
接上文 ResNet定义: 代码使用 def ResNet18ADF(noise_variance1e-3, min_variance1e-3):return ResNet(BasicBlock, [2,2,2,2], num_classes10, noise_variance1e-3, min_variance1e-3, initialize_msraFalse)定义模型,其中ResNet定义为: …...

串行通信协议---HART协议
实际应用中,HART协议是仅次于Modbus协议的最接近统一现场总线的标准,主要是在4~20mA电流信号上面叠加数字信号,物理层采用Bell 202标准的FSK技术成功实现模拟信号和数字信号双向同时通信而互不干扰。HART协议规定了传输的物理形式、消息结构、…...
【独家】华为OD机试 - 寻找密码(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本期题目:寻找密码 题目 小王在进行游…...

FPGA有哪些优质的带源码的IP开源网站?
这是某乎上的一个问题,我觉得还不错,今天就系统性的总结一下1、fpga4funhttps://www.fpga4fun.com/你能在这个网站上找到什么?您可以找到信息页面,以及使用 FPGA 板构建的 FPGA 项目。注重点:项目。FPGA 项目使用一种称…...

基于模型预测控制(MPC)的微电网调度优化的研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Postman接口测试之Mock快速入门
一、Mock简介 1.Mock定义 Mock是一种比较特殊的测试技巧,可以在没有依赖项的情况下进行接口或单元测试。通常情况下,Mock与其他方法的区别是,用于模拟代码依赖对象,并允许设置对应的期望值。简单一点来讲,就是Mock创建…...

分享一个国内可用的免费ChatGPT网站
背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个程序员,我也忍不住做了一个基于ChatGPT的网站,免费!免登陆!!国内可直接对话ChatGPT,也…...
15. 三数之和(Java)
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 …...

Navicat Premium 16安装教程
1.鼠标右击【Navicat Premium 16(64bit)】压缩包(win11及以上系统需先选择“显示更多选项”)选择【解压到 Navicat Premium 16(64bit)】。 2.打开解压后的文件夹,鼠标右击【setup】选择【以管理员身份运行】。 3.点击【下一步】。 4.选择【我…...

蓝桥杯刷题冲刺 | 倒计时8天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.三角形的面积2.图中点的层次1.三角形的面积 题目 链接: 三角形的面积 - 蓝桥云课 …...
四.JAVA基础面试题:重要知识
四.JAVA基础面试题:重要知识 1.为什么JAVA只有值传递 2.JAVA获取运行时类的四种方式 四.JAVA基础面试题:重要知识 1.为什么JAVA只有值传递 实参:传递给形参的实际参数。 形参:接受实参的参数。值传递:方法接受实参…...

某面试官分享经验:看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上...
我们以前分享过许多经验,但大多是站在打工人的视角上,今天给大家带来一个面试官的经验:1. 看求职者第一眼,开口说第一句话,面试结果就差不多定了,准确率高达90%以上。2. 绝不考八股文,如果问技术…...

Java开发 - 消息队列之RabbitMQ初体验
目录 前言 RabbitMQ 什么是RabbitMQ RabbitMQ特点 安装启动 RabbitMQ和Kafka的消息收发区别 RabbitMQ使用案例 添加依赖 添加配置 创建RabbitMQ配置类 RabbitMQ消息的发送 RabbitMQ消息的接收 测试 结语 前言 前一篇,我们学习了Kafka的基本使用&#…...

蓝桥杯入职项目(HTML + springBoot)
文章目录需要解决npm包安装axioshttp-servedebug开发下个阶段测试运行方式注意清理磁盘缓存问题解决HTML Web项目的结构通常是基于MVC(Model-View-Controller)模式设计的。下面是一般的项目结构:index.html:项目的入口文件&#x…...
【IAR工程】STM8S208RB基于ST标准库下按键检测
【IAR工程】STM8S208RB基于ST标准库下按键检测📍相关篇《【IAR工程】STM8S208RB基于ST标准库下GPIO点灯示例》🎈《【IAR工程】STM8S208RB基于ST标准库下EXTI外部中断》🔖基于ST STM8S/A标准外设库:STSW-STM8069,版本号:2.3.1&…...
【5】深度学习之Pytorch——如何使用张量处理文本数据集(语料库数据集)
在计算机领域,不断崛起的两个领域,一个是CV一个是NLP,下面我们可以探索一下深度学习在NLP的应用和特点。 深度学习在自然语言处理(NLP)领域有广泛的应用。以下是一些主要的应用和特点: 语音识别࿱…...

《Spring系列》第5章 refresh()
前言 Spring框架中最重要的肯定是IOC容器,那么其如何进行初始化,就是通过refresh()这个方法,无论是单独使用Spring框架,还是SpringBoot,最终都会通过执行到这个方法,那么下面会介绍一下这个方法 一、IOC容…...

ThreeJS-缩放、旋转(四)
代码: <template> <div id"three_div"> </div> </template> <script> import * as THREE from "three"; import {OrbitControls } from three/examples/jsm/controls/OrbitControls export default { name: &quo…...

数据更新 | CnOpenData法拍房数据
法拍房数据 一、数据简介 法拍房,即“法院拍卖房产”,是被法院强制执行拍卖的房屋 。当债务人(业主)无力履行借款合约或无法清偿债务时,而被债权人经司法程序向法院申请强制执行,将债务人名下房屋拍卖&…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...