在馬斯克接掌推特5個月後,這家社羣平台終於如承諾的,於上週開源其推文推薦演算法。
推特平台上眾多顯示內容都有演算法在底層運作,包括搜尋、探索及廣告。 昨日推特只針對「為你推薦」時間軸的推薦演算法運作方式做出説明 。
每天推特從平台5億則推文篩選出特定推文,顯示在用户「為你推薦」時間軸中。這個推薦流程(pipeline)包含三個步驟:首先從名為「候選來源」(candidate sources)的貼文來源抓取內容,再以機器學習模型將抓到的推文排序。第三步是運用啟發式(heuristics)演算法和篩選條件,將用户封鎖、防火牆規則不允許,以及已經讀過的貼文過濾掉。
負責組成並將推文提供給用户的服務稱為Home Mixer,它是以推特自製Scala框架Product Mixer為基礎開發,Hom Mixer是推送貼文的骨幹,串連不同推文來源、評分、演算法及篩選器。
推文的候選來源包括來自用户追蹤的用户(In-Network)及未追蹤的用户(Out-of-Network),在「為你推薦」中平均各佔50%的內容。在In-Network中,推文根據名為Real Graph的邏輯回歸模型做出相關性排序。這個模型能預測用户和他追蹤的人的互動並給予評分,分數愈高者愈容易被加入推薦。 推特2月停用 散發(Fanout)服務,原因在它的故障導致馬斯克推文觸及率下降,該公司也正在改寫上一次改版是好幾年前的邏輯回歸排序模型。
至於在Out-of-Network,則是從用户未追蹤的人的貼文中選擇用户可能感興趣的,送入「為你推薦中」。這包含2種方法。第一是社交圖譜(Social Graph),它分析用户追蹤的人或有相同興趣的人讀取的貼文。為此他們開發了GraphJet圖表處理引擎,可建立用户和推文的即時互動圖表,執行這類遍歷(traversal)行為,導入推文。不過這部份只佔了用户首頁時間軸15%的推文,更大部分是來自嵌入空間(embedding space)方法所引進。
嵌入(embeddings)是一種機器學習模型訓練方法,它將使用者的興趣和推文內容以向量長度表示,一方面降低維度,同時捕獲關鍵特性,藉此推特可以計算二位用户、二則推文或用户與推文的相似度,判定相關性。推特最有用的表徵學習模型是SimClusters,它利用矩陣分解(matrix factorization)演算法出分解出以人或組織為中心的社羣。推特上有1.45億個社羣,這些社羣小至數千人,大則數億人(例如知名運動員、明星或媒體),每個用户都屬於1個以上的社羣。推特將推文嵌入這些社羣,一個社羣中愈多人按讚的推文,表示愈相關,也能根據用户所屬社羣推向用户。
一旦推特完成從In-Network和Out-of-Network選取推文後,就進入排序階段。這個過程是由一個已訓練過、參數多達4,800萬的神經網路,根據數千個特徵輸出10個標籤,並給予每則推文評分,加以排序。
最後,推特利用啟發式演算法及篩選器實作多個產品功能,這些功能最後產出了給用户的推薦貼文。推特會過濾掉用户封鎖或消音的帳號貼文、避免單一用户連續多則貼文。若用户曾給某則推文負面評價,評分會降低。Out-of-Network的推文若不包含第2級關聯人士者也會被剔除。推特也會提供原推文及回覆串、以及經過編輯的新版推文。
至此,推文推薦已經完成,推特再加入其他內容,包括廣告、推薦追蹤的帳號,以及教學提示等一同送給用户。推特指出,這個流程每天執行將近50億次,平均不到1.5秒就完成。單一次執行需要220秒CPU時間,是推特App延遲性的將近150倍。
推特為求公開透明,將推薦演算法程式碼公開於 GitHub 供 用户存取 。推特還會開發其他透明化新功能,包括供創作者瞭解觸及率和互動的推特分析平台、公開運用於推文及帳號的安全標籤、以及説明推文何以出現在用户時間軸。
開源演算法是馬斯克去年4月首度提議 以440億美元收購推特時的承諾。他主張為維續推特作為公開數位論壇角色,避免政治及公關勢力介入影響推文排序,計畫開源推特演算法以促進信任、打擊垃圾內容機器人(spambot)、假帳號,並且驗證所有用户。 推特已在去年改版 Twitter Blue作為用户驗證及開闢營收來源。
最後,推特公告正在擴展推薦系統功能,包括新的即時功能、嵌入、及用户表徵(user representation)方法,為此公開徵才( careers@twitter.com )。