Twitter推特开源机器学习算法学习——For You重排名器及TwHIN嵌入特征算法

本文主要是介绍Twitter推特开源机器学习算法学习——For You重排名器及TwHIN嵌入特征算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Twitter推特开源机器学习算法学习——For You重排名器及TwHIN嵌入特征算法

  • 系统核心部分
  • 机器学习算法
    • The "For You" Heavy Ranker
      • 1、简介
      • 2、开发
      • 3、python源码
    • TwHIN embeddings
      • 1、简介
      • 2、工作流
      • 3、python源码
  • 其它资料下载

在这里插入图片描述

2023年3月31日,Twitter 部分推荐算法源码正式在 GitHub 上开放,采用 GNU Affero General Public License v3.0许可证。短短一星期,Github中该推荐算法源码已经取得了**50k+**的Star关注,可见其在算法技术圈中的火爆程度。

在这里插入图片描述
今天我们就来重点分析该推荐算法系统中最重要的机器学习算法。再此之前,我们先来简单看看该推荐系统的核心部分,官方博客参考链接:Twitter’s Recommendation Algorithm

系统核心部分

Twitter 官博重点介绍了Twitter如何每天从5亿条推文中展示部分精选内容,也就是“For You”列表下的算法相关推荐机制和排名。

Twitter 算法推荐的基础是一组核心模型和特征,从推文、用户和互动数据中提取潜在信息。推荐流水线由三个主要阶段组成,这些阶段使用这些特征:

1、从不同的推荐来源中获取最佳推文,这个过程称为获取候选推文;
2、使用机器学习模型对每个推文进行排名;
3、应用启发式和过滤器,例如过滤用已屏蔽用户的推文、NSFW 内容和已经看过的推文等。

负责构建和提供 For You 时间线的服务称为 Home Mixer。Home Mixer 基于 Product Mixer 构建,Product Mixer 是 Twitter 自定义的 Scala 框架,可以帮助构建内容流。该服务充当软件骨干,连接不同的候选源、评分函数、启发式和过滤器。

在这里插入图片描述
一句话可以总结为:Twitter先获取和你相关的各类推文,然后进行推文排名,最后将广告、关注建议和登录提示等非推文内容与排名出来的推文混合,最终展示到你设备上的For you内容,如下图所示。

在这里插入图片描述

机器学习算法

博主对Twitter开源出的推文排名的机器学习算法,比较感兴趣。我们先看下在这次项目开源过程中开源的最重要的两块ML模型:

  1. The “For You” Heavy Ranker: For You 重排名器算法
  2. TwHIN embeddings:TwHIN 嵌入算法

The “For You” Heavy Ranker

1、简介

重排名器是用于对已经通过候选检索阶段的“For You”时间轴的推文进行排名的机器学习模型。它是漏斗的最后阶段之一,主要由一组过滤启发式成功。

该模型接收描述推文和推文被推荐给的用户的特征(具体可参考FEATURES.md)。关于Features的详细解析,博主放到后面再进行研究分析。模型架构是一个并行的MaskNet算法,它输出一组0到1之间的数字,每个输出代表用户以特定方式参与推文的概率。预测的参与类型解释如下:

scored_tweets_model_weight_fav:用户喜欢这条Tweet的概率。
scored_tweets_model_weight_rettwitter:用户转发该Tweet的概率。
scored_tweets_model_weight_reply:用户回复Tweet的概率。
scored_tweets_model_weight_good_profile_click:用户打开推文作者配置文件并点赞或回复推文的概率。
scored_tweets_model_weight_video_playback50:用户至少看一半视频的概率。
scored_tweets_model_weight_reply_engaged_by_author:用户回复Tweet并且该回复被Tweet作者占用的概率。
scored_tweets_model_weight_good_click:用户点击进入该推文对话并回复或点赞推文的概率。
scored_tweets_model_weight_good_click_v2:用户点击进入这条Tweet对话并在那里停留至少2分钟的概率。
scored_tweets_model_weight_negative_feedback_v2:用户做出负面反应的概率(请求在Tweet或作者、block 或mute上“少显示”)

通过跨预测的参与概率进行加权求和,将模型的输出组合成最终模型分数。每个参与概率的权重来自配置文件,由这里的ScoredTweetsParam.scala文件服务堆栈读取。文件中的确切权重可以随时调整,但当前概率权重(2023年4月5日)如下:

scored_tweets_model_weight_fav: 0.5
scored_tweets_model_weight_retweet: 1.0
scored_tweets_model_weight_reply: 13.5
scored_tweets_model_weight_good_profile_click: 12.0
scored_tweets_model_weight_video_playback50: 0.005
scored_tweets_model_weight_reply_engaged_by_author: 75.0
scored_tweets_model_weight_good_click: 11.0
scored_tweets_model_weight_good_click_v2: 10.0
scored_tweets_model_weight_negative_feedback_v2: -74.0
scored_tweets_model_weight_report: -369.0

公式如下:

score = sum_i { (weight of engagement i) * (probability of engagement i) }

由于每个engagement 具有不同的平均概率,所以权重最初被设置为平均,即每个加权的engagement概率对分数贡献几乎相等的量。从那时起,我们定期调整权重,以优化平台指标。

一些免责声明:

由于需要确保它独立于Twitter代码库的其他部分运行,因此与生产模型可能会有一些小的差异。
由于隐私限制,我们无法发布真实的训练数据。但是,我们已经包含了一个脚本来生成随机数据,以确保您可以运行模型训练代码。

2、开发

按照repo设置说明操作后,您可以在虚拟环境中运行以下脚本,在 $HOME/tmp/recap_local_random_data 中创建随机训练数据集:

projects/home/recap/scripts/create_random_data.sh

然后,您可以使用以下脚本训练模型。检查点和日志将写入 $HOME/tmp/runs/recap_local_debug

projects/home/recap/scripts/run_local.sh

可以在 projects/home/recap/config/local_prod.yaml 中配置模型训练

3、python源码

详见官方Twitter Github。

TwHIN embeddings

1、简介

该算法包含用于预训练Twitter实体的密集向量嵌入功能的代码。在Twitter中,这些嵌入用于候选检索,并作为各种推荐系统模型中的模型特征。

我们基于Twitter中的各种图形数据获得实体嵌入,例如:“用户关注用户”“用户收藏夹推文”“用户点击广告”

虽然由于隐私限制,我们无法发布用于训练TwHIN嵌入的图形数据,但可以使用大量子采样的匿名开源图形数据: https://huggingface.co/datasets/Twitter/TwitterFollowGraph https://huggingface.co/datasets/Twitter/TwitterFaveGraph

代码要求parquet文件包含三列:lhs、rel、rhs,分别表示图中每条边的左侧节点、关系类型和右侧节点的词汇索引。

必须在projects/twhin/configs中的配置yaml文件中指定数据的位置。

2、工作流

1)构建本地开发映像

./scripts/build_images.sh

2)运行Docker环境命令

./scripts/docker_run.sh

3)迭代训练图像

./scripts/idocker.sh

4)运行测试

./scripts/docker_test.sh

3、python源码

详见官方Twitter Github。

其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

这篇关于Twitter推特开源机器学习算法学习——For You重排名器及TwHIN嵌入特征算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/258280

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖