Twitter 推薦算法開源,馬斯克被“特殊照顧”
整理 | 夢依丹 責編 | XXXXX
出品 | CSDN(ID:CSDNnews)
在馬斯克反復承諾表示要開源 Twitter 推薦算法之后,3 月 31 日,Twitter 部分推薦算法源碼正式在 GitHub 上開放,采用 GNU Affero General Public License v3.0 許可證。
Twitter 開放推薦算法源碼
https://github.com/twitter/the-algorithm
Twitter 在 GitHub 上發布了兩個代碼庫,包括用于控制用戶在 For You 時間線上看到推文的機制。Twitter 將此舉描述為“更透明的第一步”,同時還可以“防止風險”,既可以保護 Twitter 本身,也可以保護平臺上的人。
此次開源不包括驅動 Twitter 廣告推薦的代碼或用于訓練 Twitter 推薦算法的數據。Twitter 表示:“[我們排除了]任何可能危及用戶安全和隱私或破壞我們打擊兒童性侵犯和操縱等惡意行為的能力的代碼。”
馬斯克在 Twitter Spaces 上提到:
“算法的初始版本會比較尷尬,人們會發現許多錯誤,但我們會很快修復。即使你不同意某些內容,但至少你會知道它為什么在那里,而且你不會被秘密操縱...這里的類比是我們所追求的 Linux 作為開源操作系統的偉大范例...在理論上,人們可以發現許多 Linux 的漏洞。事實上,發生的是社區識別和修復這些漏洞。”
后續 Twitter 將開源所有顯示展示推文相關的代碼。
在 Twitter 源碼公布后,新浪微博新技術研發負責人張俊林在朋友圈中提到:
Twitter 開源了推薦系統源代碼,發現排序模型用的是我們兩年前發布的 MaskNet 模型,Twitter 的研發人員也在開源當天給我們發了一封郵件,他們和其他排序模型做過效果對比,發現 MaskNet 是效果最好的,所以最終 Twitter 排序采用了這個模型。我們自己內部評估,這個模型也是我們自己過去幾年摸索的幾個模型里(FiBiNet、GateNet、MaskNet、ContextNet)綜合效果最好的一個。要說搜廣推模型,卷得最狠的應該還是國內互聯網公司,不過,隨著 GPT 4 的降臨,很可能這個賽道未來用什么模型已經不那么重要了。
如何從 5 億條推文中精選內容給用戶?
一條推文從發布到展示,期間都經歷了哪些奇妙的旅程呢?Twitter 官博重點介紹了“For You”列表下的算法相關推薦機制和排名,每天從 5億條推文中展示部分精選內容的背后,正式揭曉。
Twitter 算法推薦的基礎是一組核心模型和特征,從推文、用戶和互動數據中提取潛在信息。推薦流水線由三個主要階段組成,這些階段使用這些特征:
1、從不同的推薦來源中獲取最佳推文,這個過程稱為獲取候選推文;
2、使用機器學習模型對每個推文進行排名;
3、應用啟發式和過濾器,例如過濾用已屏蔽用戶的推文、NSFW 內容和已經看過的推文等。
負責構建和提供 For You 時間線的服務稱為 Home Mixer。Home Mixer 基于 Product Mixer 構建,Product Mixer 是 Twitter 自定義的 Scala 框架,可以幫助構建內容流。該服務充當軟件骨干,連接不同的候選源、評分函數、啟發式和過濾器。
下面的圖表說明了構建時間線所使用的主要組件:
作為該系統的核心部分,大致按照單個時間線請求期間被調用的順序,從檢索候選推文開始。
候選推文來源
Twitter 有幾個候選推文作為來源,它們為用戶檢索最近和相關的推文。對于每個請求,推薦算法會嘗試通過這些來源從數億條推文中提取最佳的 1500 條。會從用戶關注的(內部網絡)和不關注的人中(外部網絡)找到候選者。目前, For You 時間線平均由 50% 的內部網絡推文和 50% 的外部網絡推文組成,也存在因用戶而異的情況。
內部網絡資源
內部網絡資源是最大的候選推文來源,旨在提供你關注的用戶最相關、最新的推文。它使用邏輯回歸模型高效地對你關注對象的推文進行排名。然后將排名靠前的推文發送到下一個階段。
這里最重要的組件是真實圖(Real Graph)模型,用于預測兩個用戶之間的互動可能性。用戶和推文作者之間的真實圖得分越高,For You 下面即會展示更多兩者之間的推文。
內部網絡資源目前已停用 Fanout Service,這是一個 12 年前的服務,用于為每個用戶提供緩存的內部網絡推文。目前 Twitter 還在重新設計邏輯回歸排名模型,該模型最近幾年已經更新和訓練過!
外部網絡資源
相較于內部網絡資源,在用戶關注之外找到相關的推文是一個更加棘手的問題, Twitter 采取了兩種方法來解決這個問題。
1、社交圖譜,首先通過分析你所關注用戶或興趣相似的用戶互動來推出你可能會感興趣的內容;其次會通過一些問題來遍歷互動和關注的圖形來對結果進行邏輯回歸模型排名,如 Twitter 開發的 GrapJet 圖形處理引擎,可以維護用戶和推文之間的實時互動圖形。
2、嵌入空間,旨在回答關于內容相似性的更一般的問題:哪些推文和用戶與我的興趣相似?Twitter 最有用的嵌入空間之一是 SimClusters。SimClusters 使用自定義矩陣分解算法發現由一群有影響力的用戶錨定的社區。有 145k 個社區,每三周更新一次。
排名
內容源確定好,那如何來確定內容的時間線呢?排名是通過一個約 48M 個參數的神經網絡實現的,該神經網絡持續根據推文互動進行訓練,以優化積極的參與度(例如,點贊、轉發和回復)。這種排名機制考慮了數千個特征,并輸出十個標簽,以給每個推文打分,其中每個標簽表示參與的概率。Twitter 根據這些分數對推文進行排名。
啟發式、過濾器和產品特性
在排名階段之后,Twitter 會應用啟發式和過濾器來實現各種產品特性。這些特性共同工作,創建一個平衡和多樣化的信息流。其中包括:
可見性過濾:根據內容和用戶偏好過濾推文。例如,刪除用戶屏蔽或靜音的帳戶的推文;
作者多樣性:避免連續太多來自單個作者的推文;
內容平衡:確保提供公平的網絡內資源和網絡外推文平衡;
基于反饋的打分機制:如果查看者在某些推文周圍提供了負面反饋,則降低該推文的分數;
社交證明:該機制通過排除沒有與推文具有二度連接的網絡外推文來實現這一點。這意味著,為了被推薦給用戶,推文必須與用戶的關注者或關注者的關注者有一定的連接;
對話:通過將回復與原始推文串在一起,為回復提供更多上下文;
編輯的推文:確定設備上當前的推文是否過時,并發送指令以用編輯版本替換它們。
混合和推送
作為推文展示到用戶面前的最后一步,系統將推文與其他非推文內容(如廣告、關注建議和入門提示)混合在一起,返回用戶的設備上顯示。
上述管道每天運行約 50 億次,并平均在 1.5 秒內完成。單個管道執行需要 220 秒的 CPU 時間,幾乎用戶在應用程序上感知到的延遲的 150 倍。
被特殊照顧的馬斯克
Twitter 算法開源引起了用戶的強烈興趣,用戶很快發現 Twitter CEO 馬斯克(Elon Musk)得到了特別對待。上個月馬斯克的推文曾一度展示給幾乎所有 Twitter 用戶。相關算法代碼特別提到了 author_is_elon、author_is_power_user、author_is_democrat、author_is_republican...
( "author_is_elon", candidate .getOrElse(AuthorIdFeature, None).contains(candidate.getOrElse(DDGStatsElonFeature, 0L))), ( "author_is_power_user", candidate .getOrElse(AuthorIdFeature, None) .exists(candidate.getOrElse(DDGStatsVitsFeature, Set.empty[Long]).contains)), ( "author_is_democrat", candidate .getOrElse(AuthorIdFeature, None) .exists(candidate.getOrElse(DDGStatsDemocratsFeature, Set.empty[Long]).contains)), ( "author_is_republican", candidate .getOrElse(AuthorIdFeature, None) .exists(candidate.getOrElse(DDGStatsRepublicansFeature, Set.empty[Long]).contains)), )
這段代碼地址:https://github.com/twitter/the-algorithm/blob/7f90d0ca342b928b479b512ec51ac2c3821f5922/home-mixer/server/src/main/scala/com/twitter/home_mixer/functional_component/decorator/HomeTweetTypePredicates.scala#L224-L246
隨后,一位 Twitter 工程師表示,這些標簽僅用于指標。但馬斯克表示,他不知道這些標簽之前沒有出現過,并表示它們不應該存在。
隨便看看:
相關推薦:
網友評論:
推薦使用友言、多說、暢言(需備案后使用)等社會化評論插件