作者:讀芯術(shù)
來(lái)源:讀芯術(shù)
TikTok正像風(fēng)暴一樣席卷全球。據(jù)Sensor Tower的數(shù)據(jù)顯示,這一短視頻App在蘋果應(yīng)用商店和谷歌Play商店上的全球下載量已經(jīng)超過(guò)了20億。它背后究竟有什么魔力讓人如此著迷?答案是機(jī)器學(xué)習(xí)推薦引擎。
坦白說(shuō),誰(shuí)不喜歡貓貓狗狗的搞笑視頻呢?尤其是隔離在家時(shí),刷短視頻是打發(fā)時(shí)間的最佳選擇。但這只是TikTok取得成功的一部分原因。不到兩年的時(shí)間,TikTok從小規(guī)模傳播的App成為了2020年月活8億、病毒式擴(kuò)散的App。
2020年1月,TikTok成為美國(guó)下載量最高的應(yīng)用程序。
TikTok全球下載量
人們平均每天花52分鐘刷TikTok,而Snapchat,Instagram和Facebook的用戶使用時(shí)長(zhǎng)分別是每天26分鐘、29分鐘和37分鐘。
圖源:Oberlo
除了增長(zhǎng)黑客策略,這個(gè)60秒短視頻App充滿了玩梗、搞笑、舞蹈和才藝。它有業(yè)內(nèi)最優(yōu)秀的推薦引擎之一,用戶無(wú)需搜索,也不用糾結(jié)看哪個(gè)博主,輕點(diǎn)手指就會(huì)有個(gè)性化推薦的視頻。
這種快速、簡(jiǎn)單、無(wú)窮無(wú)盡的快樂(lè)使人很難停止刷TikTok,有人稱它為終極時(shí)間殺手,占據(jù)所有的空閑時(shí)間,以某種方式創(chuàng)造了一個(gè)現(xiàn)實(shí)扭曲力場(chǎng)——“TikTok 5分鐘等于現(xiàn)實(shí)生活1小時(shí)”。
本文將討論TikTok如何運(yùn)用機(jī)器學(xué)習(xí)技術(shù),通過(guò)互動(dòng)分析用戶的興趣和喜好,并為不同的用戶展示個(gè)性化的視頻內(nèi)容。
推薦引擎對(duì)數(shù)據(jù)科學(xué)界來(lái)說(shuō)并不陌生。有人認(rèn)為它是上一代的AI系統(tǒng),確實(shí),它不像圖片識(shí)別和語(yǔ)言生成技術(shù)那樣有著炫酷的影響力。但盡管如此,推薦引擎依然是主流AI系統(tǒng)之一,應(yīng)用廣泛,幾乎所有線上服務(wù)及平臺(tái)都使用推薦引擎系統(tǒng),比如YouTube的視頻推薦、亞馬遜發(fā)送的促銷郵件、瀏覽kindle書(shū)店時(shí)出現(xiàn)的“你可能也喜歡的書(shū)”推薦。
戈麥茲·烏里韋發(fā)布的研究報(bào)告以及Netflix產(chǎn)品總監(jiān)尼爾·亨特都稱,個(gè)性化和推薦的結(jié)合每年給Netflix省下的錢超過(guò)10億美元,80%的用戶都從引擎的推薦列表中選擇視頻。
那么是什么讓TikTok與眾不同的呢?一起來(lái)看看吧!
推薦引擎介紹
有太多關(guān)于推薦引擎的有用文章和網(wǎng)課,本文不再一一贅述,下面兩個(gè)資源有助于對(duì)推薦引擎建立基本了解:
·從零開(kāi)始創(chuàng)建推薦引擎的綜合指南(閱讀時(shí)間約35分鐘,復(fù)制python代碼需40-60分鐘):https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/
·吳恩達(dá)的推薦引擎(視頻時(shí)長(zhǎng)一小時(shí)):https://www.youtube.com/playlist?list=PL-6SiIrhTAi6x4Oq28s7yy94ubLzVXabj
除了基礎(chǔ)部分,產(chǎn)業(yè)化的推薦引擎需要強(qiáng)大的后端和架構(gòu)設(shè)計(jì)才能實(shí)現(xiàn)一體化。下面是一個(gè)基本示例:
推薦引擎
一個(gè)實(shí)時(shí)推薦系統(tǒng)應(yīng)該有堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ)(用于收集和存儲(chǔ)數(shù)據(jù))來(lái)支持多個(gè)頂部抽象層(包括算法層、服務(wù)層和應(yīng)用層),通過(guò)這些抽象層解決不同的商業(yè)問(wèn)題。
TikTok推薦引擎的設(shè)計(jì)原型
圖源:unsplash
“以用戶為中心的設(shè)計(jì)”是這一原型的核心。簡(jiǎn)單來(lái)說(shuō),從冷啟動(dòng)期的后臺(tái)調(diào)整到為活躍用戶提供明確推薦,TikTok只會(huì)推薦用戶喜歡的內(nèi)容。
如果用戶點(diǎn)擊了舞蹈視頻,一開(kāi)始看到的內(nèi)容就定制為這一娛樂(lè)類型,隨后的機(jī)制是跟蹤用戶行為,進(jìn)行進(jìn)一步分析,最終提供該用戶獨(dú)有的精準(zhǔn)推薦。
高級(jí)工作流如下所示:
3個(gè)主要組成部分
在TikTok的原型中,有三個(gè)主要的構(gòu)成要素:標(biāo)記內(nèi)容、建立用戶畫(huà)像和用戶場(chǎng)景以及訓(xùn)練并提供推薦算法。
數(shù)據(jù)和特征
首先是數(shù)據(jù)。推薦模型的正式描述是:利用用戶原創(chuàng)內(nèi)容滿足用戶的功能。要提供這一功能需要輸入三個(gè)方面的數(shù)據(jù)。
內(nèi)容數(shù)據(jù)——TikTok是一個(gè)有大量用戶原創(chuàng)內(nèi)容的平臺(tái)。每種內(nèi)容都有其特質(zhì),系統(tǒng)應(yīng)該能夠識(shí)別和區(qū)分內(nèi)容,才能提供可靠的推薦。
場(chǎng)景數(shù)據(jù)——這一數(shù)據(jù)記錄的是使用場(chǎng)景,以及不同場(chǎng)景下用戶的喜好轉(zhuǎn)變。比如,某用戶在上班、旅行、通勤時(shí)分別喜歡看什么類型的視頻。
用戶數(shù)據(jù)——既包括興趣標(biāo)簽、職業(yè)、年齡、性別、人口統(tǒng)計(jì)數(shù)據(jù)等,也包括以機(jī)器學(xué)習(xí)為基礎(chǔ)的用戶聚類分析得到的潛在特征。
一旦收集到了相關(guān)數(shù)據(jù),模型就會(huì)從中導(dǎo)出四種嚴(yán)謹(jǐn)設(shè)計(jì)的特征,輸入推薦引擎中。
關(guān)聯(lián)特征:代表內(nèi)容屬性和用戶標(biāo)簽之間的關(guān)聯(lián),包括關(guān)鍵詞配對(duì)、分類標(biāo)簽、來(lái)源匹配、主題標(biāo)簽以及潛在特征(比如用戶與內(nèi)容發(fā)布者的距離)。
流行特征:以用戶交互為基礎(chǔ),代表國(guó)際潮流、熱門話題、搜索熱詞、流行主題等等。
用戶場(chǎng)景特征:由場(chǎng)景數(shù)據(jù)而來(lái),包括地理位置、時(shí)間段、事件標(biāo)簽等。
協(xié)同特征:以協(xié)同過(guò)濾技術(shù)為基礎(chǔ),平衡了狹義推薦(根據(jù)喜好推薦)和協(xié)同推薦(綜合用戶喜好推薦)。具體而言,該算法不只考慮某個(gè)用戶的瀏覽歷史,還分析類似用戶群體共同的行為(點(diǎn)擊、興趣、關(guān)鍵詞、主題等)。
模型會(huì)學(xué)習(xí)以上的特征,以此預(yù)測(cè)某個(gè)內(nèi)容是否適合某用戶在某種場(chǎng)景觀看。
無(wú)法度量的對(duì)象
在推薦模型中,點(diǎn)擊率、瀏覽時(shí)間、點(diǎn)贊數(shù)、評(píng)論和轉(zhuǎn)發(fā)都是可量化對(duì)象。程序員可以讓模型或算法適應(yīng)這些對(duì)象,然后做出最終預(yù)測(cè)。
然而,其他無(wú)法度量的對(duì)象是無(wú)法用量化指標(biāo)來(lái)衡量的。比如,為了維持健康的社區(qū)環(huán)境和生態(tài)系統(tǒng),TikTok以控制暴力、詐騙、色情、浮夸內(nèi)容為目標(biāo),將權(quán)重賦予符合事實(shí)、高質(zhì)量的內(nèi)容,比如新聞。
為了實(shí)現(xiàn)這一目的,需要在量化模型對(duì)象之外,建立更大的控制框架(內(nèi)容審核系統(tǒng))。
算法
推薦對(duì)象可以轉(zhuǎn)化為經(jīng)典的機(jī)器學(xué)習(xí)問(wèn)題,然后協(xié)同過(guò)濾模型、邏輯回歸模型、因子分解模型、幾何數(shù)據(jù)庫(kù)和深度學(xué)習(xí)等算法就能解決這一問(wèn)題。
行業(yè)級(jí)的推薦系統(tǒng)需要靈活可擴(kuò)展的機(jī)器學(xué)習(xí)平臺(tái),這樣才能建立實(shí)驗(yàn)流程,從而快速訓(xùn)練各種模型,然后把它們組合起來(lái),實(shí)時(shí)提供服務(wù)(比如把LR模型和DNN模型組合,CVM模型與CNN模型組合)。
除了主要的推薦算法,TikTok還需要訓(xùn)練內(nèi)容分類算法和用戶畫(huà)像算法。以下是內(nèi)容分析的層級(jí)分類結(jié)構(gòu)。
層級(jí)分類樹(shù)
從主干往下看,主類別的下方是子類別。與其他分類模型相比,使用層級(jí)分類機(jī)制能更好地解決數(shù)據(jù)傾斜的問(wèn)題。
訓(xùn)練機(jī)制
TikTok使用實(shí)時(shí)在線訓(xùn)練模式,這一方法占用的計(jì)算資源更少,能夠更快地給出反饋。這對(duì)于流媒體和信息流產(chǎn)品來(lái)說(shuō)是非常重要的。
用戶的行為會(huì)馬上被捕捉,然后反饋給模型,反映在下一個(gè)視頻中(用戶點(diǎn)擊新視頻時(shí),下一個(gè)視頻會(huì)快速根據(jù)最近的行為做出調(diào)整)。TikTok更有可能使用Storm集群來(lái)處理實(shí)時(shí)樣本數(shù)據(jù),包括點(diǎn)擊、表演、收藏、點(diǎn)贊、評(píng)論和分享。
他們也會(huì)建立高性能的系統(tǒng),比如模型參數(shù)和特征服務(wù)器(特征庫(kù)和模型庫(kù))。特征庫(kù)可以保存并提供上千萬(wàn)的原始特征和編輯過(guò)的vector,模型庫(kù)則會(huì)維護(hù)并提供模型以及調(diào)整過(guò)的參數(shù)。
在線訓(xùn)練機(jī)制
完整訓(xùn)練過(guò)程是:
線上服務(wù)器捕捉實(shí)時(shí)數(shù)據(jù),然后儲(chǔ)存到Kafka
Storm集群分析Kafka數(shù)據(jù)并生成特征
特征庫(kù)收集新特征和推薦便簽,建立新的訓(xùn)練集
在線訓(xùn)練流程重新訓(xùn)練模型參數(shù),并將同樣的參數(shù)輸入模型庫(kù)
更新客戶端的推薦列表,捕捉新的反饋(即用戶行為)并再次循環(huán)
TikTok的推薦工作流
TikTok從未向公眾或技術(shù)界公開(kāi)核心算法。但是,基于該公司公布的零碎信息以及極客們通過(guò)逆向工程技術(shù)找到的種種蹤跡,我們可以得出以下結(jié)論。
(聲明——這僅僅是作者的理解和推斷,可能跟TikTok的做法有出入)
推薦工作流
步驟0:用戶原創(chuàng)內(nèi)容(UGC)的雙重審查系統(tǒng)
在TikTok上,每天用戶上傳的視頻有上百萬(wàn)。惡意內(nèi)容更容易在單機(jī)審查系統(tǒng)中找到漏洞,在這種條件下只靠人工審查是不現(xiàn)實(shí)的,因此,雙重審查系統(tǒng)就成為TikTok篩查視頻內(nèi)容的主要算法。
機(jī)器審查:總的來(lái)說(shuō),(以計(jì)算機(jī)視覺(jué)為基礎(chǔ)的)雙重審查模型能夠識(shí)別視頻圖片和關(guān)鍵詞。它主要有兩個(gè)基本功能:
檢查視頻片段是否違反法律法規(guī),是否存在抄襲。如果疑似違反規(guī)定,模型就會(huì)攔截視頻內(nèi)容,打上紅標(biāo)或者黃標(biāo),然后轉(zhuǎn)交人工審查。
通過(guò)從視頻中截取圖像或者關(guān)鍵幀,TikTok的雙重審查算法會(huì)將截圖與海量歸檔內(nèi)容庫(kù)比對(duì)。重復(fù)內(nèi)容會(huì)被選出,其流量受限,在推薦引擎上的權(quán)重降低。
人工審查:主要關(guān)注3個(gè)方面,視頻標(biāo)題,封面縮略圖和視頻中的關(guān)鍵幀。對(duì)于雙重審查模型標(biāo)記為可疑的內(nèi)容,技術(shù)人員會(huì)進(jìn)行人工審查。如果發(fā)現(xiàn)某視頻違規(guī),該視頻會(huì)被刪除,賬戶活動(dòng)暫停。
步驟1:冷啟動(dòng)
TikTok推薦機(jī)制的核心是信息流漏斗。視頻通過(guò)雙重審查之后,會(huì)被放入冷啟動(dòng)流量池中。比如,用戶的新視頻通過(guò)了審核流程之后,TikTok一開(kāi)始會(huì)分配200-300個(gè)活躍用戶的流量,視頻能得到上千次的瀏覽。在這一機(jī)制中,新人可以與(粉絲上萬(wàn)的)網(wǎng)紅競(jìng)爭(zhēng),因?yàn)樗麄儞碛型瑯拥钠瘘c(diǎn)。
步驟2:以指標(biāo)為基礎(chǔ)賦予權(quán)重
通過(guò)最初的流量池,視頻能得到幾千播放量,這些數(shù)據(jù)會(huì)被收集和分析。在分析中考慮的指標(biāo)包括點(diǎn)贊數(shù)、播放量、整個(gè)視頻看完的人數(shù)、評(píng)論數(shù)、關(guān)注數(shù)、轉(zhuǎn)發(fā)數(shù)、分享數(shù)等等。
然后,推薦引擎就基于這些最初的指標(biāo),給視頻賦予權(quán)重,給賬戶打分(無(wú)論是否是高質(zhì)量創(chuàng)作者)。如果引擎決定提高內(nèi)容的權(quán)重,權(quán)重最高的10%還會(huì)有額外10000-100000流量的曝光。
步驟3:用戶畫(huà)像放大器
第2步中從流量池得到的反饋會(huì)被進(jìn)一步分析,用于用戶畫(huà)像放大器的決策。在這一步中,表現(xiàn)出色的內(nèi)容會(huì)得到強(qiáng)化,增加對(duì)特定用戶群體的投放(比如,體育迷,時(shí)尚愛(ài)好者)。
這與“猜你喜歡”功能類似。推薦引擎會(huì)建立用戶畫(huà)像庫(kù),這樣它就能找到內(nèi)容和用戶群體之間的最佳匹配了。
步驟4:精品潮流池
只有不到1%的內(nèi)容最終會(huì)進(jìn)入潮流池。這個(gè)池子中的視頻得到的曝光量比其他視頻高出一個(gè)量級(jí)。因?yàn)榱餍袃?nèi)容會(huì)無(wú)差別地推薦給所有用戶。
其他步驟:延遲引爆
有一些TikTok博主會(huì)注意到,他們的內(nèi)容突然得到了巨大的引流,但此前數(shù)周發(fā)布的內(nèi)容都表現(xiàn)平平。
這主要有兩個(gè)原因:
首先,TikTok有一個(gè)算法(“挖寶人”),該算法會(huì)回顧歷史內(nèi)容,尋找適合曝光的高質(zhì)量?jī)?nèi)容。如果某用戶的視頻被這個(gè)算法選中,意味著該用戶的賬戶上有足夠多的垂直視頻,可以得到一個(gè)新標(biāo)簽。該標(biāo)簽使視頻內(nèi)容更多出現(xiàn)在“挖寶人”算法中。
第二個(gè)原因是“潮流效應(yīng)”。這意味著,如果某個(gè)視頻有幾百萬(wàn)的觀看量,TikTok會(huì)引流到該用戶的主頁(yè),因此以前發(fā)布的內(nèi)容播放量就會(huì)上升。對(duì)于垂直創(chuàng)作者(比如搞笑貓咪視頻創(chuàng)作者)來(lái)說(shuō),這是常有的事。一個(gè)流行視頻會(huì)引爆所有其他高質(zhì)量的視頻(人們想看更多可愛(ài)又奇怪的貓咪視頻)。
局限性:流量高峰
如果一個(gè)視頻能夠通過(guò)信息流漏斗(雙重審查,權(quán)重更新和放大器),創(chuàng)作者的賬戶就能夠得到額外的曝光、互動(dòng)和粉絲。但研究表明,這樣的高曝光時(shí)間窗很短。通常,時(shí)間窗大約為一周。窗口期過(guò)后,該視頻及賬戶的熱度會(huì)下降,甚至隨后發(fā)布的視頻也很難火起來(lái)。
這是因?yàn)門ikTok追求多樣化,它會(huì)消除算法中無(wú)意識(shí)的偏見(jiàn)。通過(guò)這樣的設(shè)計(jì),推薦引擎不會(huì)傾向某一特定類別的內(nèi)容,確保新內(nèi)容有公平的機(jī)會(huì)進(jìn)入潮流池。
TikTok的魔力就在于此,明白自己為什么一刷短視頻就停不下來(lái)了嗎?
編譯組:蔡思齊、李世琛
相關(guān)鏈接:
https://towardsdatascience.com/why-tiktok-made-its-user-so-obsessive-the-ai-algorithm-that-got-you-hooked-7895bb1ab423
---------End---------