首頁>資訊 >
天天新動態(tài):推特開源了,馬斯克說到做到 2023-04-01 12:47:00  來源:36氪

如何振興推特,馬斯克選擇「流量最大」的打法。

馬斯克曾把特斯拉的專利開源,現(xiàn)在推特的算法也被他開源了。

首富伊隆?馬斯克去年收購?fù)铺厍熬驮硎荆铺氐拇a應(yīng)該在 GitHub 上公開,以便公眾對其進(jìn)行檢查,這樣才算得上健全。在這不久后,馬斯克宣布收購?fù)铺?,推特?GitHub 主頁上很快新增了一個「the-algorithm」倉庫,不過這個倉庫很快就 404 了。


(資料圖片)

前幾天他又表示,推特會在 3 月 31 日開源推薦代碼。這一次,他終于兌現(xiàn)了。

馬斯克在推特上表示,目前發(fā)布的是「大部分推薦算法」,其余的將在未來發(fā)布。

短短幾個小時,該項目就收獲了 13.5K Github Star:

開源地址:https://github.com/twitter/the-algorithm

在 Twitter Spaces 會議上,馬斯克解釋道:「最初發(fā)布的算法會非常尷尬,人們會發(fā)現(xiàn)很多錯誤,但我們會很快修復(fù)它們…… 即使你不同意某件事,至少你會知道它為什么在那里,并且你沒有被秘密操縱...... 我們的參照物是 Linux ,一個很好的開源操作系統(tǒng)樣本…… 理論上,人們可以發(fā)現(xiàn) Linux 的許多漏洞,但實際上社區(qū)會識別并修復(fù)這些漏洞?!?/p>

既然開源,那就表示接受修改建議。馬斯克又表示了,每過 24 小時到 48 小時,推特會根據(jù)用戶建議對推薦算法進(jìn)行一次更新。

不僅接受人們的監(jiān)督,還可以提升技術(shù)實力,看起來是一舉多得的好事。

有趣的是,外媒 Gizmodo 的一篇報道指出, 推特向用戶推送的 VIP 列表似乎沒有公開。本周 Platformer 報道稱,推特有一份值得關(guān)注的用戶輪換名單,包括 YouTuber Mr. Beast 和 Daily Wire 創(chuàng)始人 Ben Shapiro,它通過看似隨意地增加這些「高級用戶」的可見性來監(jiān)控推薦算法的變化。

還有更多證據(jù)表明,推特的算法可能會根據(jù)來源不同地對待推文。研究人員 Jane Manchun Wong 指出,推特的算法專門標(biāo)記了「推文作者是否是 Elon Musk」,還有其他標(biāo)簽表明作者是否是「高級用戶」等。

對此,推特在今天下午的 Spaces 會議上也有回應(yīng),一位推特工程師表示,這些標(biāo)簽僅用于衡量指標(biāo)。而馬斯克說自己在今天之前不知道這些標(biāo)簽,并表示「它們不應(yīng)該在那里」。

推特是如何選擇推文的?

在推特同期發(fā)布的技術(shù)博客上,工程師們對推薦系統(tǒng)算法進(jìn)行了一番解釋。

推特推薦系統(tǒng)的基礎(chǔ)是一套核心模型和功能,從推文、用戶和相關(guān)數(shù)據(jù)中提取潛在的信息。這些模型旨在回答關(guān)于 Twitter 網(wǎng)絡(luò)的重要問題,例如,「你未來與另一個用戶互動的概率是多少?」或者,「Twitter 上有哪些社區(qū),其中有哪些流行的推文?」準(zhǔn)確地回答這些問題使 Twitter 能夠提供更相關(guān)的推薦。

推薦流程由三個主要階段組成:

1. 從不同的推薦源中獲取最佳推文,這個過程被稱為候選搜尋(candidate sourcing)。

2. 使用機(jī)器學(xué)習(xí)模型對每條推文進(jìn)行排名。

3. 應(yīng)用啟發(fā)式方法和過濾器,例如過濾掉你已經(jīng)屏蔽的用戶的推文、NSFW 內(nèi)容,以及你已經(jīng)看過的推文。

負(fù)責(zé)構(gòu)建和服務(wù) For You 時間線的服務(wù)被稱為 Home Mixer。Home Mixer 建立在 Product Mixer 上,這是推特定制的 Scala 框架,可以方便地構(gòu)建內(nèi)容提要。這項服務(wù)作為軟件主干,連接不同的候選推文來源、評分功能、啟發(fā)式方法和過濾器。

下面這張圖說明了用于構(gòu)建時間線的主要組件:

接下來探討一下這個系統(tǒng)的關(guān)鍵部分,大致按照在一次時間線請求中的調(diào)用順序,從檢索候選推文源開始。

候選推文源

Twitter 有幾個候選推文源,他們用這些候選源來為用戶檢索最近的相關(guān)推文。對于每個請求,他們試圖通過這些來源從數(shù)以億計的推文池中提取最好的 1500 條推文。他們從你關(guān)注的人(網(wǎng)絡(luò)內(nèi))和你不關(guān)注的人(網(wǎng)絡(luò)外)中找到候選推文。今天,F(xiàn)or You 時間線平均由 50% 的網(wǎng)絡(luò)內(nèi)(In-Network)推文和 50% 的網(wǎng)絡(luò)外(Out-of-Network)推文組成,盡管這可能因用戶而異。

網(wǎng)絡(luò)內(nèi)推文源

網(wǎng)絡(luò)內(nèi)推文源是最大的候選推文來源,旨在提供你所關(guān)注的用戶的最相關(guān)、最近的推文。它使用一個邏輯回歸模型,根據(jù)相關(guān)性對你所關(guān)注的人的推文進(jìn)行有效排名。然后,排名靠前的推文被送到下一個階段。

對網(wǎng)絡(luò)內(nèi)推文進(jìn)行排名的最重要的組件是 Real Graph。Real Graph 是一個預(yù)測兩個用戶之間接觸的可能性的模型。你和推文作者之間的 Real Graph 得分越高,推薦內(nèi)容中就會包含更多他們的推文。

網(wǎng)絡(luò)內(nèi)推文源一直是推特最近工作的主題。他們最近停止了 Fanout 服務(wù)的使用,這是一項有 12 年歷史的服務(wù),以前用來從每個用戶的推文緩存中提供網(wǎng)絡(luò)內(nèi)推文。他們也正在重新設(shè)計邏輯回歸排名模型,該模型最后一次更新和訓(xùn)練是在幾年前!

網(wǎng)絡(luò)外推文源

在用戶網(wǎng)絡(luò)之外尋找相關(guān)的推文是一個比較棘手的問題:如果你不關(guān)注作者,推特怎么能知道某條推文是否與你有關(guān)?為了解決這個問題,推特采取了兩種方法:

1、社交圖譜(Social Graph)

第一個方法是通過分析你所關(guān)注的人或有類似興趣的人的參與情況,來估計與你相關(guān)的內(nèi)容。

推特遍歷上述分析內(nèi)容的圖,以回答以下問題:

我關(guān)注的人最近參與了哪些推文?

誰喜歡與我相似的推文,他們最近還喜歡什么?

推特會根據(jù)這些問題的答案生成候選推文,并使用邏輯回歸模型對生成的推文進(jìn)行排名。這種類型的圖遍歷對于網(wǎng)絡(luò)外推薦至關(guān)重要。團(tuán)隊開發(fā)了 GraphJet 圖處理引擎,以維護(hù)用戶和推文之間的實時交互圖,以執(zhí)行這些遍歷。雖然這種用于搜索推特參與度和關(guān)注網(wǎng)絡(luò)的啟發(fā)式方法已被證明是有用的(這些目前服務(wù)于大約 15% 的主頁時間線推文),但嵌入空間方法已成為網(wǎng)絡(luò)外推文的更大來源。

2、嵌入空間

嵌入空間方法旨在回答一個關(guān)于內(nèi)容相似度的普遍問題:「哪些推文和用戶與我的興趣相似?」

嵌入的工作原理是生成用戶興趣和推文內(nèi)容的數(shù)字表征,然后推特就可以計算該嵌入空間中任意兩個用戶、推文或用戶 - 推文對之間的相似度。如果生成了準(zhǔn)確的嵌入,推特可以使用這種相似性作為相關(guān)性的替代。

推特最有用的嵌入空間之一是 SimClusters。SimClusters 使用自定義的矩陣因子化算法,發(fā)現(xiàn)由有影響力的用戶集群錨定的社區(qū)。這里有 14.5 萬個社區(qū),每三周更新一次。用戶和推特在社區(qū)的空間中被表示出來,并且可以屬于多個社區(qū)。社區(qū)的規(guī)模從個人朋友圈的幾千個用戶到新聞或流行文化的幾億個用戶不等。這些是一些最大的社區(qū):

此外,推特還可以通過查看推文在每個社區(qū)中的當(dāng)前流行度來將推文嵌入到這些社區(qū)中。喜歡推文的社區(qū)用戶越多,推文與該社區(qū)的關(guān)聯(lián)度就越高。

排序

「For you」時間線的目標(biāo)是為用戶提供相關(guān)的推文。在 pipeline 的這一點上,有大約 1500 個可能是相關(guān)的候選項。分?jǐn)?shù)會直接預(yù)測每個候選推文的相關(guān)性,是在用戶時間線上對推文進(jìn)行排序的主要信號。在這個階段,所有的候選項都被平等對待,而不考慮它來自哪個候選來源。

排序是通過一個約 4800 萬參數(shù)的神經(jīng)網(wǎng)絡(luò)實現(xiàn)的,該網(wǎng)絡(luò)在推特互動數(shù)據(jù)上不斷訓(xùn)練,以優(yōu)化積極的參與(例如,贊、轉(zhuǎn)發(fā)和回復(fù))。這個排序機(jī)制考慮到了成千上萬的特征,并輸出十個標(biāo)簽來給每條推文打分,其中每個標(biāo)簽代表了參與的概率。然后,推特根據(jù)這些分?jǐn)?shù)對推文進(jìn)行排名。

啟發(fā)式、濾波器和產(chǎn)品功能

在排序階段之后,推特應(yīng)用啟發(fā)式和濾波器來實現(xiàn)各種產(chǎn)品功能。這些功能會協(xié)同工作以創(chuàng)建平衡且多樣化的提要。一些例子包括:

可見性過濾:根據(jù)內(nèi)容和用戶偏好過濾掉推文。例如,刪除其屏蔽或靜音的帳戶的推文。

作者多樣性:避免來自同一作者的太多連續(xù)推文。

內(nèi)容平衡:確保推特提供網(wǎng)絡(luò)內(nèi)和網(wǎng)絡(luò)外推文的公平和平衡。

基于反饋的疲勞分析:如果用戶提供了負(fù)面反饋,則降低某些推文的分?jǐn)?shù)。

社會證明:排除與推文沒有二級關(guān)聯(lián)的網(wǎng)絡(luò)外推文作為質(zhì)量保障。換句話說,確保你關(guān)注的人參與了這條推文或關(guān)注了推文的作者。

對話:通過將回復(fù)與原始推文串連在一起,為回復(fù)提供更多上下文。

已編輯的推文:確定設(shè)備上當(dāng)前的推文是否過時,并發(fā)送指令以將其替換為已編輯的版本。

混合與服務(wù)

至此,Home Mixer 已準(zhǔn)備好發(fā)送到用戶設(shè)備的一組推文。作為流程的最后一步,系統(tǒng)將推文與其他非推文內(nèi)容(如廣告、關(guān)注推薦和 Onboarding prompt)混合在一起,這些內(nèi)容將返回到用戶設(shè)備上進(jìn)行顯示。

上述 pipeline 每天運(yùn)行大約 50 億次,平均完成時間不到 1.5 秒。單個 pipeline 執(zhí)行需要 220 秒的 CPU 時間,幾乎是在應(yīng)用程序上看到的延遲的 150 倍。

推特正在開發(fā)更多新功能,為用戶提供更多的透明度。下一步計劃包括:

為創(chuàng)作者提供更好的推特分析平臺,提供更多關(guān)于影響力和參與度的信息;

提高應(yīng)用到用戶推文或帳戶的任何安全標(biāo)簽的透明度;

更好地了解推文出現(xiàn)在時間線上的原因。

最后,在代碼公開的幾個小時內(nèi),已經(jīng)有人在推特代碼中找到了一些「奇怪」的地方。

比如馬斯克在推特算法中有自己的特征類:

或許馬斯克在神經(jīng)網(wǎng)絡(luò)中也有自己的特殊嵌入向量。

另外還有專屬的變量:

畢竟人家是公司老板。

不知在網(wǎng)友的挖掘之下,還能發(fā)現(xiàn)推特代碼里哪些有趣之處?

參考鏈接:https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm

關(guān)鍵詞:

相關(guān)閱讀:
熱點
圖片