首页>云计算 > 正文
Twitter开源了推荐算法,源代码藏了什么瓜?
来源: 虎嗅网 发布于:2023-04-03 09:17:31

本文来自微信公众号:CTO范凯(ID:fankai_log),作者:robbin,头图来自:视觉中国

4月1日愚人节,马斯克宣布Twitter的源代码开源了,并且会根据用户反馈及时调整推荐算法。

看到这个消息,我第一时间打开Github,去搜索了一下,果然Twitter开源了,不是愚人节的笑话。在Twitter账号下面有两个开源项目:


【资料图】

1. the-algorithm 这个项目源代码是用Scala写的,是Twitter的推荐算法源代码。

Twitter最早使用Ruby on rails写的,后来访问量太大,用Scala重写了大部分代码。从这个项目来看,果然如此:整个项目5000多个源文件,大部分是Scala代码,从代码风格来看,还是很标准的,代码质量看起来还不错。

2. the-algorithm-ml 这个项目源代码是用Python写的,是Twitter推荐算法的机器学习部分。

这个机器学习的项目不大,100多个源文件。

我们打开 the-algorithm 项目的git提交记录,会发现一个非常有意思的 commit, log是这样写的:

Remove stats collection code measuring how often Tweets from specific user groups are served

也就是删除了测量特定用户组的统计信息收集代码。很好奇,这个特定用户组指的是谁?看看commit记录就清楚了:

咦,有四类特殊的用户:

1. Elon Musk,好吧,这是针对老板进行hard code啊。

2. power_user,很好理解,估计是对Twitter来说很重要的大V用户,要打特殊标记。

3. democrat,民主党人,为什么要标记用户的党派信息?

4. republican,共和党人,越来越有意思了!

仔细翻翻相关的代码,有段注释信息有所解释:

/**

* These author ID lists are used purely for metrics collection. We track how often we are* serving Tweets from these authors and how often their tweets are being impressed by users.

* This helps us validate in our A/B experimentation platform that we do not ship changes* that negatively impacts one group over others.

*/

.add(DDGStatsDemocratsFeature, ddgStatsAuthors.longSeq(Democrats).toSet)

.add(DDGStatsRepublicansFeature, ddgStatsAuthors.longSeq(Republicans).toSet)

.add(DDGStatsVitsFeature, ddgStatsAuthors.longSeq(Vits).toSet)

.add(DDGStatsElonFeature, ddgStatsAuthors.longValue(Elon))

意思是说:

这些作者 ID 列表纯粹用于指标收集。我们跟踪我们提供来自这些作者的推文的频率,以及他们的推文给用户留下深刻印象的频率。这有助于我们在我们的 A/B 实验平台中验证我们不会发布对一组产生负面影响的更改。

似乎是说选择特定的用户来跟着推荐算法的调整不会产生负面影响。那么这些用户是怎样定义的呢?

object HomeMixerResourcesModule extends TwitterModule {  

private val AuthorsFile = "/config/authors.yml"  

@Provides  

@Singleton  

@Named(DDGStatsAuthors)  

def providesDDGStatsAuthors(): YamlMap = YamlMap.load(AuthorsFile)

}

这段代码倒是很清楚的,这四类用户:马斯克,大V,民主党人,共和党人的用户列表,是写在一个外部配置文件 /config/authors.yml 里面的。

标记这四类用户进行特殊的跟踪和统计。实在是很值得玩味:

1. 标记 Elon Musk 单个人,从哪个统计学角度去看,都和度量推荐算法无关,这是赤裸裸的面向老板编程,哈哈。

2. 标记 大V 用户,特别是 power user,这对于一个面向全球的社交媒体平台,恐怕本身就意味着信息的不平等吧?

3. 当然,最令我意外的是标记民主党人和共和党人的用户列表。如果说坊间传言Twitter的推荐算法是有政治倾向性的话,这毫无疑问就是实锤了。从任何角度看,都不应该单独区分用户的政治立场去度量推荐算法的有效性。

当然,这些代码已经从Twitter最新版本开源文件中删除了,但还是可以从代码提交历史中看到。说Twiter不干涉政治的想法,真的可以休矣!

其实我很赞赏马斯克决定开源Twitter推荐算法的决定。推荐算法有没有夹带私货,不是你老王卖瓜自卖自夸出来的。要真的想建设信息平台的平台,就得开源出来,接受程序员的监督。从这一点来说,Twitter迈出了很好的第一步。

本文来自微信公众号:CTO范凯(ID:fankai_log),作者:robbin

关键词:

猜你喜欢