本文来自微信公众号: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