马斯克兑现承诺,推特开源算法引发关注

14次阅读

共计 3382 个字符,预计需要花费 9 分钟才能阅读完成。

马斯克再次践行诺言,将推特的推荐算法开源,这一举动引发了广泛关注。

马斯克一直以来都秉持着开放的理念,此前他曾将特斯拉的专利开源,如今推特的算法也步其后尘。去年在收购推特之前,他就表示推特的代码应在 GitHub 上公开,以便公众检查,确保其健全性。收购完成后,推特的 GitHub 主页上新增了「the-algorithm」仓库,但很快就 404 了。而这次,马斯克终于在 3 月 31 日兑现了开源推荐代码的承诺。

在推特上,马斯克称目前发布的是「大部分推荐算法」,其余部分将在未来发布。短短几个小时,该项目就获得了 13.5K Github Star。开源地址为:https://github.com/twitter/the-algorithm。

在 Twitter Spaces 会议上,马斯克解释了开源的原因。他表示,最初发布的算法可能会存在一些问题,人们会发现很多错误,但推特会迅速修复。通过开源,人们能清楚知道算法的运作方式,不再觉得被秘密操纵。他以 Linux 为例,说明即使开源系统可能存在漏洞,但社区会识别并修复。此外,推特还会根据用户建议,每 24 到 48 小时对推荐算法进行一次更新。

然而,推特的算法并非毫无争议。外媒 Gizmodo 报道称,推特向用户推送的 VIP 列表似乎未公开。本周 Platformer 也报道,推特有一份值得关注的用户轮换名单,包括 YouTuber Mr. Beast 和 Daily Wire 创始人 Ben Shapiro 等,推特通过增加这些「高级用户」的可见性来监控推荐算法的变化。研究人员 Jane Manchun Wong 指出,推特的算法会特别标记「推文作者是否是 Elon Musk」以及作者是否为「高级用户」等。

针对这些质疑,推特在今天下午的 Spaces 会议上回应称,这些标签仅用于衡量指标。马斯克也表示自己在今天之前并不知晓这些标签,并认为「它们不应该在那里」。那么,推特究竟是如何选择推文的呢?

推特推荐系统算法解析

在推特同期发布的技术博客上,工程师们详细解释了推荐系统算法。推特推荐系统的基础是一套核心模型和功能,它从推文、用户和相关数据中提取潜在信息,旨在回答关于 Twitter 网络的重要问题,比如「你未来与另一个用户互动的概率是多少?」或者「Twitter 上有哪些社区,其中有哪些流行的推文?」准确回答这些问题,能让推特提供更相关的推荐。

推荐流程主要由三个阶段构成:

首先是从不同的推荐源中获取最佳推文,这一过程被称为候选搜寻(candidate sourcing)。

其次是使用机器学习模型对每条推文进行排名。

最后是应用启发式方法和过滤器,例如过滤掉已屏蔽用户的推文、NSFW 内容以及已看过的推文。

负责构建和服务 For You 时间线的服务被称为 Home Mixer。Home Mixer 建立在 Product Mixer 上,这是推特定制的 Scala 框架,方便构建内容提要。这项服务作为软件主干,连接不同的候选推文来源、评分功能、启发式方法和过滤器。

关键部分详解

下面深入探讨这个系统的关键部分,大致按照在一次时间线请求中的调用顺序,从检索候选推文源开始。

候选推文源

Twitter 有几个候选推文源,用于为用户检索最近的相关推文。对于每个请求,他们尝试通过这些来源从数以亿计的推文池中提取最好的 1500 条推文。他们从用户关注的人(网络内)和不关注的人(网络外)中寻找候选推文。如今,For You 时间线平均由 50% 的网络内(In-Network)推文和 50% 的网络外(Out-of-Network)推文组成,不过这可能因用户而异。

网络内推文源

网络内推文源是最大的候选推文来源,致力于提供用户所关注的人最相关、最近的推文。它运用一个逻辑回归模型,依据相关性对用户所关注的人的推文进行有效排名,然后将排名靠前的推文送至下一个阶段。

对网络内推文进行排名的最重要组件是 Real Graph。Real Graph 是一个预测两个用户之间接触可能性的模型。用户与推文作者之间的 Real Graph 得分越高,推荐内容中包含他们的推文就越多。

网络内推文源一直是推特近期工作的重点。他们最近停止了 Fanout 服务的使用,这是一项有 12 年历史的服务,以前用于从每个用户的推文缓存中提供网络内推文。他们也正在重新设计逻辑回归排名模型,该模型最后一次更新和训练是在几年前!

网络外推文源

在用户网络之外寻找相关推文是个颇具挑战的问题:如果用户不关注作者,推特如何知晓某条推文是否与用户相关呢?为解决此问题,推特采取了两种方法:

一是社交图谱(Social Graph)。通过分析用户所关注的人或有类似兴趣的人的参与情况,来估计与用户相关的内容。推特遍历上述分析内容的图,以回答诸如「我关注的人最近参与了哪些推文?」「谁喜欢与我相似的推文,他们最近还喜欢什么?」等问题。推特会依据这些问题的答案生成候选推文,并使用逻辑回归模型对生成的推文进行排名。这种类型的图遍历对网络外推荐至关重要。团队开发了 GraphJet 图处理引擎,以维护用户和推文之间的实时交互图,从而执行这些遍历。虽然这种用于搜索推特参与度和关注网络的启发式方法已被证明是有用的(目前服务于大约 15% 的主页时间线推文),但嵌入空间方法已成为网络外推文的更大来源。

二是嵌入空间。嵌入空间方法旨在回答一个关于内容相似度的普遍问题:「哪些推文和用户与我的兴趣相似?」嵌入的工作原理是生成用户兴趣和推文内容的数字表征,然后推特就能计算该嵌入空间中任意两个用户、推文或用户 – 推文对之间的相似度。如果生成了准确的嵌入,推特就可以将这种相似性作为相关性的替代。

推特最有用的嵌入空间之一是 SimClusters。SimClusters 使用自定义的矩阵因子化算法,发现由有影响力的用户集群锚定的社区。这里有 14.5 万个社区,每三周更新一次。用户和推特在社区的空间中被表示出来,并且可以属于多个社区。社区的规模从个人朋友圈的几千个用户到新闻或流行文化的几亿个用户不等。

排序

「For you」时间线的目标是为用户提供相关的推文。在这个阶段,大约有 1500 个可能相关的候选项。分数会直接预测每个候选推文的相关性,是在用户时间线上对推文进行排序的主要信号。在这个阶段,所有候选项都被平等对待,而不考虑其来自哪个候选来源。

排序是通过一个约 4800 万参数的神经网络实现的,该网络在推特互动数据上不断训练,以优化积极的参与(例如,赞、转发和回复)。这个排序机制考虑到了成千上万的特征,并输出十个标签来给每条推文打分,其中每个标签代表了参与的概率。然后,推特根据这些分数对推文进行排名。

启发式、滤波器和产品功能

在排序阶段之后,推特应用启发式和滤波器来实现各种产品功能。这些功能协同工作以创建平衡且多样化的提要。一些例子如下:

可见性过滤:根据内容和用户偏好过滤掉推文。例如,删除被屏蔽或静音帐户的推文。

作者多样性:避免来自同一作者的太多连续推文。

内容平衡:确保推特提供网络内和网络外推文的公平和平衡。

基于反馈的疲劳分析:如果用户提供了负面反馈,则降低某些推文的分数。

社会证明:排除与推文没有二级关联的网络外推文作为质量保障。换句话说,确保用户关注的人参与了这条推文或关注了推文的作者。

对话:通过将回复与原始推文串连在一起,为回复提供更多上下文。

已编辑的推文:确定设备上当前的推文是否过时,并发送指令以将其替换为已编辑的版本。

混合与服务

至此,Home Mixer 已准备好发送到用户设备的一组推文。作为流程的最后一步,系统将推文与其他非推文内容(如广告、关注推荐和 Onboarding prompt)混合在一起,这些内容将返回到用户设备上进行显示。

上述流程每天运行大约 50 亿次,平均完成时间不到 1.5 秒。单个流程执行需要 220 秒的 CPU 时间,几乎是在应用程序上看到的延迟的 150 倍。

推特正在开发更多新功能,以提高用户透明度。下一步计划包括:为创作者提供更好的推特分析平台,提供更多关于影响力和参与度的信息;提高应用到用户推文或帐户的任何安全标签的透明度;更好地了解推文出现在时间线上的原因。

最后,在代码公开的几个小时内,已经有人在推特代码中发现了一些「奇怪」的地方。比如马斯克在推特算法中有自己的特征类,或许在神经网络中也有特殊嵌入向量,还有专属变量。毕竟他是公司老板。不知在网友的挖掘之下,还能发现推特代码里哪些有趣之处?

正文完
 0