馬斯克開源Twitter推薦算法,GitHub秒破萬星,24-48小時(shí)進(jìn)化一次
馬斯克的“開源承諾”,終于如約而至。
就在剛剛,馬斯克正式宣布:
大部分(Twitter的)推薦算法將在今天開源,剩下的也會(huì)跟進(jìn)。
而且馬斯克緊接著亮出了GitHub上Twitter推薦算法源代碼的地址。
僅僅數(shù)小時(shí),便攬獲上萬個(gè)Star:
除此之外,馬斯克還表示:
推特將每24到48小時(shí)更新一次基于用戶建議的推薦算法。
至此,這個(gè)號(hào)稱每天從5億條推文做推薦的大算法的廬山真面目,終于得以露出。
Twitter的推薦算法長什么樣?
據(jù)介紹,Twitter的推薦系統(tǒng)基于一組核心模型和功能,可以從推文、用戶和互動(dòng)數(shù)據(jù)中提取潛在信息。
這些模型的作用是回答Twitter網(wǎng)絡(luò)中的重要問題,例如,“未來你與另一個(gè)用戶互動(dòng)的概率是多少?”或者,“Twitter上有哪些社區(qū)以及其中的趨勢推文是什么?”
若是能夠準(zhǔn)確回答這些問題,就可以讓Twitter提供更多相關(guān)的推薦。
Twitter的推薦系統(tǒng)由三大部分構(gòu)成:
從不同的推薦源獲取最好的推文,這個(gè)過程稱為候選源。
使用機(jī)器學(xué)習(xí)模型對每條推文進(jìn)行排名。
應(yīng)用heuristics和filters,例如過濾來自已屏蔽用戶的推文、NSFW內(nèi)容和已看到的推文。
負(fù)責(zé)構(gòu)建和提供“For You”時(shí)間軸的服務(wù)被稱為“Home Mixer”。
“Home Mixer”建立在“Product Mixer”之上,這是定制的Scala框架,有助于構(gòu)建內(nèi)容的動(dòng)態(tài)流。
這項(xiàng)服務(wù)作為軟件主干,連接不同的候選源、評分函數(shù)、heuristics和filters。
Twitter使用多個(gè)候選源來為用戶檢索最近和相關(guān)的推文。
對于每個(gè)請求,推特嘗試通過這些源從數(shù)億條推文池中提取最佳的1500條。
從您關(guān)注的人(內(nèi)部網(wǎng)絡(luò))和不關(guān)注的人(外部網(wǎng)絡(luò))中尋找候選人。
如今,“為您推薦”時(shí)間軸平均由50%的內(nèi)部網(wǎng)絡(luò)推文和50%的外部網(wǎng)絡(luò)推文組成(盡管這可能因用戶而異)。
內(nèi)部網(wǎng)絡(luò)資源(In-Network Source)
內(nèi)部網(wǎng)絡(luò)資源是最大的候選來源,旨在提供關(guān)注的用戶最相關(guān)、最新的推文。
它使用邏輯回歸模型高效地對關(guān)注的人的推文進(jìn)行排名,以其相關(guān)性為基礎(chǔ)。然后將排名最高的推文發(fā)送到下一階段。
排名內(nèi)部網(wǎng)絡(luò)推文最重要的組成部分是Real Graph。
Real Graph是一種模型,用于預(yù)測兩個(gè)用戶之間的互動(dòng)可能性。用戶和推文作者之間的Real Graph分?jǐn)?shù)越高,就會(huì)包括更多他們的推文。
內(nèi)部網(wǎng)絡(luò)來源最近成為Twitter的研究對象。最近Twitter停止使用Fanout服務(wù),這是一個(gè)12年前用來從每個(gè)用戶的推文緩存中提供內(nèi)部網(wǎng)絡(luò)推文的服務(wù)。
在用戶網(wǎng)絡(luò)之外尋找相關(guān)的推文是一個(gè)棘手的問題。
因?yàn)槿绻悴魂P(guān)注作者,怎么知道某條推文是否與你相關(guān)?
為此,Twitter采取了兩種方法來解決這個(gè)問題。
一個(gè)是社交圖(Social Graph)。
這個(gè)方法是通過分析你關(guān)注的人或有相似興趣的人的活動(dòng),來估計(jì)你會(huì)發(fā)現(xiàn)什么是相關(guān)的。
主要遍歷參與的圖,并按照以下步驟回答以下問題:
我關(guān)注的人最近在Twitter上發(fā)了什么消息?
誰和我一樣喜歡類似的推文,他們最近還喜歡什么?
團(tuán)隊(duì)根據(jù)這些問題的答案生成候選推文,并使用Logit模型對產(chǎn)生的推文進(jìn)行排名。
這種類型的圖形遍歷對于外部網(wǎng)絡(luò)推薦是必不可少的;團(tuán)隊(duì)開發(fā)了 GraphJet,一個(gè)維護(hù)用戶和推文之間實(shí)時(shí)交互圖的圖形處理引擎,來執(zhí)行這些遍歷。
雖然這種搜索Twitter參與和關(guān)注網(wǎng)絡(luò)的啟發(fā)式方法已經(jīng)被證明是有用的,但嵌入式空間方法已經(jīng)成為外部網(wǎng)絡(luò)推文的更大來源。
第二個(gè)是嵌入空間(Embedding Spaces)。
嵌入式空間方法旨在回答一個(gè)關(guān)于內(nèi)容相似性的更普遍的問題——什么推文和用戶與我的興趣相似?
Embeddings通過生成用戶興趣和推文內(nèi)容的數(shù)字表示來工作。然后可以計(jì)算這個(gè)嵌入空間中任意兩個(gè)用戶之間的相似度,推文或用戶-推文 對。
只要生成準(zhǔn)確的embedding,就可以使用這種相似性作為相關(guān)性的替代。
Twitter 最有用的嵌入空間之一是 SimClusters。
SimClusters 使用自定義矩陣分解算法發(fā)現(xiàn)由一群有影響力的用戶錨定的社區(qū)(有14.5萬個(gè)社區(qū),每三周更新一次)。
用戶和推文在社區(qū)空間中表示,并且可以屬于多個(gè)社區(qū)。社區(qū)的規(guī)模從個(gè)人朋友群的幾千名用戶到新聞或流行文化的數(shù)億用戶不等:
……
更多與之相關(guān)的詳細(xì)內(nèi)容,可戳文末鏈接~
One More Thing
Twitter的算法開源了,然后手快的網(wǎng)友吧……都已經(jīng)開始根據(jù)算法總結(jié)怎么成為大V了:
你關(guān)注的人數(shù)和關(guān)注你的人數(shù)比例很重要、訂閱TwitterBlue有一定作用……