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