如今,算法分發(fā)已經(jīng)逐步成為信息平臺、搜索引擎、瀏覽器、社交軟件等幾乎所有軟件的標配,但同時(shí)也開(kāi)始面臨各種不同的質(zhì)疑、挑戰與誤解。
2018年1月,今日頭條資深算法架構師曹歡歡博士,首次公開(kāi)今日頭條的算法原理,以期推動(dòng)整個(gè)行業(yè)問(wèn)診算法、建言算法。通過(guò)讓算法透明,來(lái)消除各界對算法的誤解。
據悉,今日頭條的信息推薦算法自2012年9月第一版開(kāi)發(fā)運行至今,已經(jīng)經(jīng)過(guò)四次大調整和修改。目前服務(wù)全球億萬(wàn)用戶(hù)。
以下為曹歡歡關(guān)于《今日頭條算法原理》的分享內容(已授權):
本次分享將主要介紹今日頭條推薦系統概覽以及內容分析、用戶(hù)標簽、評估分析,內容安全等原理。
推薦系統,如果用形式化的方式去描述實(shí)際上是擬合一個(gè)用戶(hù)對內容滿(mǎn)意度的函數,這個(gè)函數需要輸入三個(gè)維度的變量。
結合三方面的維度,模型會(huì )給出一個(gè)預估,即推測推薦內容在這一場(chǎng)景下對這一用戶(hù)是否合適。
這里還有一個(gè)問(wèn)題,如何引入無(wú)法直接衡量的目標?
推薦模型中,點(diǎn)擊率、閱讀時(shí)間、點(diǎn)贊、評論、轉發(fā)包括點(diǎn)贊都是可以量化的目標,能夠用模型直接擬合做預估,看線(xiàn)上提升情況可以知道做的好不好。但一個(gè)大體量的推薦系統,服務(wù)用戶(hù)眾多,不能完全由指標評估,引入數據指標以外的要素也很重要。
比如廣告和特型內容頻控。像問(wèn)答卡片就是比較特殊的內容形式,其推薦的目標不完全是讓用戶(hù)瀏覽,還要考慮吸引用戶(hù)回答為社區貢獻內容。這些內容和普通內容如何混排,怎樣控制頻控都需要考慮。
此外,平臺出于內容生態(tài)和社會(huì )責任的考量,像低俗內容的打壓,標題黨、低質(zhì)內容的打壓,重要新聞的置頂、加權、強插,低級別賬號內容降權都是算法本身無(wú)法完成,需要進(jìn)一步對內容進(jìn)行干預。
下面我將簡(jiǎn)單介紹在上述算法目標的基礎上如何對其實(shí)現。
一個(gè)優(yōu)秀的工業(yè)級推薦系統需要非常靈活的算法實(shí)驗平臺,可以支持多種算法組合,包括模型結構調整。因為很難有一套通用的模型架構適用于所有的推薦場(chǎng)景?,F在很流行將LR和DNN結合,前幾年Facebook也將LR和GBDT算法做結合。今日頭條旗下幾款產(chǎn)品都在沿用同一套強大的算法推薦系統,但根據業(yè)務(wù)場(chǎng)景不同,模型架構會(huì )有所調整。

模型之后再看一下典型的推薦特征,主要有四類(lèi)特征會(huì )對推薦起到比較重要的作用。
第一類(lèi)是相關(guān)性特征,就是評估內容的屬性和與用戶(hù)是否匹配。顯性的匹配包括關(guān)鍵詞匹配、分類(lèi)匹配、來(lái)源匹配、主題匹配等。像FM模型中也有一些隱性匹配,從用戶(hù)向量與內容向量的距離可以得出。
第二類(lèi)是環(huán)境特征,包括地理位置、時(shí)間。這些既是bias特征,也能以此構建一些匹配特征。
第三類(lèi)是熱度特征。包括全局熱度、分類(lèi)熱度,主題熱度,以及關(guān)鍵詞熱度等。內容熱度信息在大的推薦系統特別在用戶(hù)冷啟動(dòng)的時(shí)候非常有效。
第四類(lèi)是協(xié)同特征,它可以在部分程度上幫助解決所謂算法越推越窄的問(wèn)題。協(xié)同特征并非考慮用戶(hù)已有歷史。而是通過(guò)用戶(hù)行為分析不同用戶(hù)間相似性,比如點(diǎn)擊相似、興趣分類(lèi)相似、主題相似、興趣詞相似,甚至向量相似,從而擴展模型的探索能力。

模型的訓練上,頭條系大部分推薦產(chǎn)品采用實(shí)時(shí)訓練。實(shí)時(shí)訓練省資源并且反饋快,這對信息流產(chǎn)品非常重要。用戶(hù)需要行為信息可以被模型快速捕捉并反饋至下一刷的推薦效果。我們線(xiàn)上目前基于storm集群實(shí)時(shí)處理樣本數據,包括點(diǎn)擊、展現、收藏、分享等動(dòng)作類(lèi)型。模型參數服務(wù)器是內部開(kāi)發(fā)的一套高性能的系統,因為頭條數據規模增長(cháng)太快,類(lèi)似的開(kāi)源系統穩定性和性能無(wú)法滿(mǎn)足,而我們自研的系統底層做了很多針對性的優(yōu)化,提供了完善運維工具,更適配現有的業(yè)務(wù)場(chǎng)景。
目前,頭條的推薦算法模型在世界范圍內也是比較大的,包含幾百億原始特征和數十億向量特征。整體的訓練過(guò)程是線(xiàn)上服務(wù)器記錄實(shí)時(shí)特征,導入到Kafka文件隊列中,然后進(jìn)一步導入Storm集群消費Kafka數據,客戶(hù)端回傳推薦的label構造訓練樣本,隨后根據最新樣本進(jìn)行在線(xiàn)訓練更新模型參數,最終線(xiàn)上模型得到更新。這個(gè)過(guò)程中主要的延遲在用戶(hù)的動(dòng)作反饋延時(shí),因為文章推薦后用戶(hù)不一定馬上看,不考慮這部分時(shí)間,整個(gè)系統是幾乎實(shí)時(shí)的。

但因為頭條目前的內容量非常大,加上小視頻內容有千萬(wàn)級別,推薦系統不可能所有內容全部由模型預估。所以需要設計一些召回策略,每次推薦時(shí)從海量?jì)热葜泻Y選出千級別的內容庫。召回策略最重要的要求是性能要極致,一般超時(shí)不能超過(guò)50毫秒。

召回策略種類(lèi)有很多,我們主要用的是倒排的思路。離線(xiàn)維護一個(gè)倒排,這個(gè)倒排的key可以是分類(lèi),topic,實(shí)體,來(lái)源等,排序考慮熱度、新鮮度、動(dòng)作等。線(xiàn)上召回可以迅速從倒排中根據用戶(hù)興趣標簽對內容做截斷,高效的從很大的內容庫中篩選比較靠譜的一小部分內容。

內容分析包括文本分析,圖片分析和視頻分析。頭條一開(kāi)始主要做資訊,今天我們主要講一下文本分析。文本分析在推薦系統中一個(gè)很重要的作用是用戶(hù)興趣建模。沒(méi)有內容及文本標簽,無(wú)法得到用戶(hù)興趣標簽。舉個(gè)例子,只有知道文章標簽是互聯(lián)網(wǎng),用戶(hù)看了互聯(lián)網(wǎng)標簽的文章,才能知道用戶(hù)有互聯(lián)網(wǎng)標簽,其他關(guān)鍵詞也一樣。


上圖是今日頭條的一個(gè)實(shí)際文本case??梢钥吹?,這篇文章有分類(lèi)、關(guān)鍵詞、topic、實(shí)體詞等文本特征。當然不是沒(méi)有文本特征,推薦系統就不能工作,推薦系統最早期應用在A(yíng)mazon,甚至沃爾瑪時(shí)代就有,包括Netfilx做視頻推薦也沒(méi)有文本特征直接協(xié)同過(guò)濾推薦。但對資訊類(lèi)產(chǎn)品而言,大部分是消費當天內容,沒(méi)有文本特征新內容冷啟動(dòng)非常困難,協(xié)同類(lèi)特征無(wú)法解決文章冷啟動(dòng)問(wèn)題。


同樣,還有時(shí)空特征,分析內容的發(fā)生地點(diǎn)以及時(shí)效性。比如武漢限行的事情推給北京用戶(hù)可能就沒(méi)有意義。最后還要考慮質(zhì)量相關(guān)特征,判斷內容是否低俗,色情,是否是軟文,雞湯?

上圖是頭條語(yǔ)義標簽的特征和使用場(chǎng)景。他們之間層級不同,要求不同。



今日頭條推薦系統的線(xiàn)上分類(lèi)采用典型的層次化文本分類(lèi)算法。最上面Root,下面第一層的分類(lèi)是像科技、體育、財經(jīng)、娛樂(lè ),體育這樣的大類(lèi),再下面細分足球、籃球、乒乓球、網(wǎng)球、田徑、游泳...,足球再細分國際足球、中國足球,中國足球又細分中甲、中超、國家隊...,相比單獨的分類(lèi)器,利用層次化文本分類(lèi)算法能更好地解決數據傾斜的問(wèn)題。有一些例外是,如果要提高召回,可以看到我們連接了一些飛線(xiàn)。這套架構通用,但根據不同的問(wèn)題難度,每個(gè)元分類(lèi)器可以異構,像有些分類(lèi)SVM效果很好,有些要結合CNN,有些要結合RNN再處理一下。

上圖是一個(gè)實(shí)體詞識別算法的case?;诜衷~結果和詞性標注選取候選,期間可能需要根據知識庫做一些拼接,有些實(shí)體是幾個(gè)詞的組合,要確定哪幾個(gè)詞結合在一起能映射實(shí)體的描述。如果結果映射多個(gè)實(shí)體還要通過(guò)詞向量、topic分布甚至詞頻本身等去歧,最后計算一個(gè)相關(guān)性模型。
內容分析和用戶(hù)標簽是推薦系統的兩大基石。內容分析涉及到機器學(xué)習的內容多一些,相比而言,用戶(hù)標簽工程挑戰更大。

今日頭條常用的用戶(hù)標簽包括用戶(hù)感興趣的類(lèi)別和主題、關(guān)鍵詞、來(lái)源、基于興趣的用戶(hù)聚類(lèi)以及各種垂直興趣特征(車(chē)型,體育球隊,股票等)。還有性別、年齡、地點(diǎn)等信息。性別信息通過(guò)用戶(hù)第三方社交賬號登錄得到。年齡信息通常由模型預測,通過(guò)機型、閱讀時(shí)間分布等預估。常駐地點(diǎn)來(lái)自用戶(hù)授權訪(fǎng)問(wèn)位置信息,在位置信息的基礎上通過(guò)傳統聚類(lèi)的方法拿到常駐點(diǎn)。常駐點(diǎn)結合其他信息,可以推測用戶(hù)的工作地點(diǎn)、出差地點(diǎn)、旅游地點(diǎn)。這些用戶(hù)標簽非常有助于推薦。


用戶(hù)標簽挖掘總體比較簡(jiǎn)單,主要還是剛剛提到的工程挑戰。頭條用戶(hù)標簽第一版是批量計算框架,流程比較簡(jiǎn)單,每天抽取昨天的日活用戶(hù)過(guò)去兩個(gè)月的動(dòng)作數據,在Hadoop集群上批量計算結果。



上面介紹了推薦系統的整體架構,那么如何評估推薦效果好不好?
有一句我認為非常有智慧的話(huà),“一個(gè)事情沒(méi)法評估就沒(méi)法優(yōu)化”。對推薦系統也是一樣。

事實(shí)上,很多因素都會(huì )影響推薦效果。比如侯選集合變化,召回模塊的改進(jìn)或增加,推薦特征的增加,模型架構的改進(jìn)在,算法參數的優(yōu)化等等,不一一舉例。評估的意義就在于,很多優(yōu)化最終可能是負向效果,并不是優(yōu)化上線(xiàn)后效果就會(huì )改進(jìn)。

全面的評估推薦系統,需要完備的評估體系、強大的實(shí)驗平臺以及易用的經(jīng)驗分析工具。所謂完備的體系就是并非單一指標衡量,不能只看點(diǎn)擊率或者停留時(shí)長(cháng)等,需要綜合評估。過(guò)去幾年我們一直在嘗試,能不能綜合盡可能多的指標合成唯一的評估指標,但仍在探索中。目前,我們上線(xiàn)還是要由各業(yè)務(wù)比較資深的同學(xué)組成評審委員會(huì )深入討論后決定。
很多公司算法做的不好,并非是工程師能力不夠,而是需要一個(gè)強大的實(shí)驗平臺,還有便捷的實(shí)驗分析工具,可以智能分析數據指標的置信度。

一個(gè)良好的評估體系建立需要遵循幾個(gè)原則,首先是兼顧短期指標與長(cháng)期指標。我在之前公司負責電商方向的時(shí)候觀(guān)察到,很多策略調整短期內用戶(hù)覺(jué)得新鮮,但是長(cháng)期看其實(shí)沒(méi)有任何助益。
其次,要兼顧用戶(hù)指標和生態(tài)指標。今日頭條作為內容分創(chuàng )作平臺,既要為內容創(chuàng )作者提供價(jià)值,讓他更有尊嚴的創(chuàng )作,也有義務(wù)滿(mǎn)足用戶(hù),這兩者要平衡。還有廣告主利益也要考慮,這是多方博弈和平衡的過(guò)程。
另外,要注意協(xié)同效應的影響。實(shí)驗中嚴格的流量隔離很難做到,要注意外部效應。

強大的實(shí)驗平臺非常直接的優(yōu)點(diǎn)是,當同時(shí)在線(xiàn)的實(shí)驗比較多時(shí),可以由平臺自動(dòng)分配流量,無(wú)需人工溝通,并且實(shí)驗結束流量立即回收,提高管理效率。這能幫助公司降低分析成本,加快算法迭代效應,使整個(gè)系統的算法優(yōu)化工作能夠快速往前推進(jìn)。

這是頭條A/B Test實(shí)驗系統的基本原理。首先我們會(huì )做在離線(xiàn)狀態(tài)下做好用戶(hù)分桶,然后線(xiàn)上分配實(shí)驗流量,將桶里用戶(hù)打上標簽,分給實(shí)驗組。舉個(gè)例子,開(kāi)一個(gè)10%流量的實(shí)驗,兩個(gè)實(shí)驗組各5%,一個(gè)5%是基線(xiàn),策略和線(xiàn)上大盤(pán)一樣,另外一個(gè)是新的策略。

實(shí)驗過(guò)程中用戶(hù)動(dòng)作會(huì )被搜集,基本上是準實(shí)時(shí),每小時(shí)都可以看到。但因為小時(shí)數據有波動(dòng),通常是以天為時(shí)間節點(diǎn)來(lái)看。動(dòng)作搜集后會(huì )有日志處理、分布式統計、寫(xiě)入數據庫,非常便捷。

在這個(gè)系統下工程師只需要設置流量需求、實(shí)驗時(shí)間、定義特殊過(guò)濾條件,自定義實(shí)驗組ID。系統可以自動(dòng)生成:實(shí)驗數據對比、實(shí)驗數據置信度、實(shí)驗結論總結以及實(shí)驗優(yōu)化建議。

當然,只有實(shí)驗平臺是遠遠不夠的。線(xiàn)上實(shí)驗平臺只能通過(guò)數據指標變化推測用戶(hù)體驗的變化,但數據指標和用戶(hù)體驗存在差異,很多指標不能完全量化。很多改進(jìn)仍然要通過(guò)人工分析,重大改進(jìn)需要人工評估二次確認。

因此頭條從創(chuàng )立伊始就把內容安全放在公司最高優(yōu)先級隊列。成立之初,已經(jīng)專(zhuān)門(mén)設有審核團隊負責內容安全。當時(shí)研發(fā)所有客戶(hù)端、后端、算法的同學(xué)一共才不到40人,頭條非常重視內容審核。

現在,今日頭條的內容主要來(lái)源于兩部分,一是具有成熟內容生產(chǎn)能力的PGC平臺
一是UGC用戶(hù)內容,如問(wèn)答、用戶(hù)評論、微頭條。這兩部分內容需要通過(guò)統一的審核機制。如果是數量相對少的PGC內容,會(huì )直接進(jìn)行風(fēng)險審核,沒(méi)有問(wèn)題會(huì )大范圍推薦。UGC內容需要經(jīng)過(guò)一個(gè)風(fēng)險模型的過(guò)濾,有問(wèn)題的會(huì )進(jìn)入二次風(fēng)險審核。審核通過(guò)后,內容會(huì )被真正進(jìn)行推薦。這時(shí)如果收到一定量以上的評論或者舉報負向反饋,還會(huì )再回到復審環(huán)節,有問(wèn)題直接下架。整個(gè)機制相對而言比較健全,作為行業(yè)領(lǐng)先者,在內容安全上,今日頭條一直用最高的標準要求自己。

分享內容識別技術(shù)主要鑒黃模型,謾罵模型以及低俗模型。今日頭條的低俗模型通過(guò)深度學(xué)習算法訓練,樣本庫非常大,圖片、文本同時(shí)分析。這部分模型更注重召回率,準確率甚至可以犧牲一些。謾罵模型的樣本庫同樣超過(guò)百萬(wàn),召回率高達95%+,準確率80%+。如果用戶(hù)經(jīng)常出言不諱或者不當的評論,我們有一些懲罰機制。

泛低質(zhì)識別涉及的情況非常多,像假新聞、黑稿、題文不符、標題黨、等等,這部分內容由機器理解是非常難的,需要大量反饋信息,包括其他樣本信息比對。目前低質(zhì)模型的準確率和召回率都不是特別高,還需要結合人工復審,將閾值提高。目前最終的召回已達到95%,這部分其實(shí)還有非常多的工作可以做。頭條人工智能實(shí)驗室李航老師目前也在和密歇根大學(xué)共建科研項目,設立謠言識別平臺。
以上是頭條推薦系統的原理分享,希望未來(lái)得到更多的建議,幫助我們更好改進(jìn)工作。
聯(lián)系客服