全文近5000字,閱讀時長需要多久我也不知道,有可能要反覆閱讀。
對推薦系統的誤解
有些人認為算法推薦讓用戶的興趣窄化,這是一個常見的誤解,包括我個人之前也是如此認為。這背後的邏輯是,算法推薦很懂你,根據你的興趣推薦,只推薦用戶感興趣的東西,這個用戶看的內容始終在一個有限的範圍內。長久以後,用幾年推薦系統,你的見識、知識、見解得不到提高。
然後事實是,這是一個短期利益和長期目標如何相互平衡的議題。聰明的企業都不希望自己的用戶興趣窄化,就像沒有一個零售賣場的經理希望顧客每一次來到商場都只關注同一類別的商品。商場經理都希望顧客關注儘可能多的產品品類,所以在建設推薦系統的時候也希望從長期來看用戶可以儘可能的拓展自己的興趣。
推薦系統所需要的特徵信息
推薦系統都需要依靠三個方面的特徵:內容特徵、用戶特徵、環境特徵,系統需要結合這三方面的信息做決策。
用戶特徵,是指用戶的標籤,包括用戶註冊時提交的基本信息,比如性別、年齡,還有用戶在平臺上的動作,比如用戶歷史點擊的作品列表、作品的關鍵詞分布、文章的作者分布等信息。
內容特徵,如果它是個商品,要有分類、標籤,包括歷史購買評論,這些都很重要。對於內容來講,就是它的文本、主題、關鍵詞等信息。
環境特徵,就是環境信息,對於用戶來講,他的興趣很多時候會變化,有的會周期性變化。比如一個資訊APP用戶,上班期間和上班路上、下班休息的時候,興趣是有變化的。
這些特徵信息推薦系統是要考慮到的。但是在不同領域、不同的推薦系統考慮的側重點有所區別。總體來講,所有的推薦系統都必須基於這三方面的信息來決策。
推薦系統的設計目標
長期目標:保持用戶的長期黏性。運營一個業務,希望用戶用了應用之後,能一直用下去,成為我們的忠實用戶。長期目標對於算法、模型來講是非常難學的。越是長期目標,機器學習難度越大。
中期目標:提升中期(周/月)的用戶黏性。這也很難,但是業內也有一些探索,比如強化學習的學習範式,而不用監督學習。但是也比較難,目前還不是特別成熟。
短期目標:保證用戶短時間內對內容的反饋。給用戶推了一個作品,用戶有沒有沒有播放、點讚、分享。這些短期目標模型是非常容易學習,容易建立起用戶行為。
推薦內容的多樣性越好,用戶的長期留存概率越大。
推薦系統的機制原理
給內容貼標籤,給人物貼標,按照標籤智能個性化推送。
內容標籤是層次型的,有多少大類,每個大類中有多少小類。例如第一分類是體育運動,第二分類是球類、田徑類、電子競技類,第三分類是足球、籃球、桌球等,最後可能細化到的顆粒是NBA、CBA,LOL、吃雞等。
平臺會根據用戶在使用App的習慣進行分析行為路徑,再進行貼標籤,再繼續優化標籤。這個採集的方法就是個人資料的填寫,關鍵詞搜索的記錄,瀏覽的比較多的類目視頻,點讚視頻數據,評論數據,通訊錄的圈子關係等。
以抖音的推薦系統為例,整個環節簡化拆解為幾個步驟:
流量分桶:先把你的作品檢測標籤,如果作品被機器貼上標籤那麼就會分桶到對應標籤的流量窪地。如果標籤模糊無法貼標籤,那麼就會零散推薦,無法進行精準推送。
用戶反饋數據包含哪些?
推薦系統的技術架構
模型的訓練上,頭條系大部分推薦產品採用實時訓練。實時訓練省資源並且反饋快,這對信息流產品非常重要。用戶需要行為信息可以被模型快速捕捉並反饋至下一刷的推薦效果。線上目前基於storm集群實時處理樣本數據,包括點擊、展現、收藏、分享等動作類型。
模型參數伺服器是內部開發的一套高性能的系統,目前頭條的推薦算法模型在世界範圍內也是比較大的,包含幾百億原始特徵和數十億向量特徵。
整體的訓練過程是線上伺服器記錄實時特徵,導入到Kafka中,然後進一步導入Storm集群消費Kafka數據,客戶端回傳推薦的標籤構造訓練樣本,隨後根據最新樣本進行在線訓練更新模型參數,最終線上模型得到更新。
推薦系統不可能所有內容全部由模型預估。所以需要設計一些召回策略,每次推薦時從海量內容中篩選出千級別的內容庫。召回策略最重要的要求是性能要極致,一般超時不能超過50毫秒。召回策略種類有很多,主要用的是倒排的思路。離線維護一個倒排,這個倒排的key可以是分類,topic,實體,來源等。
排序考慮熱度、新鮮度、動作等。線上召回可以迅速從倒排中根據用戶興趣標籤對內容做截斷,高效的從很大的內容庫中篩選比較靠譜的一小部分內容。
內容分析包括文本分析,圖片分析和視頻分析。其中文本分析是頭條做資訊的時候一開始就做的。頭條系的推薦系統主要抽取的文本特徵包括以下幾類。首先是語義標籤類特徵,顯式為文章打上語義標籤。這部分標籤是由人定義的特徵,每個標籤有明確的意義,標籤體系是預定義的。此外還有隱式語義特徵,主要是topic特徵和關鍵詞特徵,其中topic特徵是對於詞概率分布的描述,無明確意義;而關鍵詞特徵會基於一些統一特徵描述,無明確集合。
這裡要注意的是並非沒有文本特徵,推薦系統就不能工作,直接協同過濾推薦也是可以。但對資訊類、信息流類產品而言,大部分是消費當天內容,沒有文本特徵新內容冷啟動非常困難,協同類特徵無法解決文章、短視頻的冷啟動問題。
內容分析和用戶標籤是推薦系統的兩大基石。內容分析涉及到機器學習的內容多一些,相比而言,用戶標籤工程挑戰更大。
頭條系常用的用戶標籤包括用戶感興趣的類別和主題、關鍵詞、來源、基於興趣的用戶聚類以及各種垂直興趣特徵(車型,體育球隊,股票等)。還有性別、年齡、地點等信息。
性別信息通過用戶第三方社交帳號登錄得到。年齡信息通常由模型預測,通過機型、閱讀時間分布等預估。
常駐地點來自用戶授權訪問位置信息,在位置信息的基礎上通過傳統聚類的方法拿到常駐點。常駐點結合其他信息,可以推測用戶的工作地點、出差地點、旅遊地點。這些用戶標籤非常有助於推薦。
用戶標籤最簡單的做法是基於用戶瀏覽過的內容標籤,這裡涉及到一些數據處理策略,主要包括:
一、過濾噪聲。通過停留時間短的點擊,過濾標題黨。
二、熱點懲罰。對用戶在一些熱門作品上的動作做降權處理。理論上,傳播範圍較大的內容,置信度會下降。
三、時間衰減。用戶興趣會發生偏移,因此策略更偏向新的用戶行為。因此,隨著用戶動作的增加,老的特徵權重會隨時間衰減,新動作貢獻的特徵權重會更大。
四、懲罰展現。如果一篇推薦給用戶的文章沒有被點擊,相關特徵(類別,關鍵詞,來源)權重會被懲罰。當然同時,也要考慮全局背景,是不是相關內容推送比較多,以及相關的關閉和dislike信號等。
2014年底頭條上線了用戶標籤Storm集群流式計算系統,從以前的Hadoop批量標籤計算改成流式之後,只要有用戶動作更新就更新標籤,CPU代價比較小,據說大大降低了計算資源開銷。並且特徵更新速度非常快,基本可以做到準實時。這套系統號稱從上線一直使用至今。
當然也並非所有用戶標籤都需要流式系統。像用戶的性別、年齡、常駐地點這些信息,不需要實時重複計算,就仍然保留每日更新。
推薦系統使用的算法技術
一個優秀的工業級推薦系統需要非常靈活的算法實驗平臺,可以支持多種算法組合,包括模型結構調整。因為很難有一套通用的模型架構適用於所有的推薦場景。
現在很流行將LR和DNN結合,前幾年Facebook也將LR和GBDT算法做結合。目前看起來頭條系旗下幾款產品都在沿用同一套算法推薦系統,但根據業務場景不同,模型架構會有所調整。
看一下典型的推薦特徵,主要有四類特徵會對推薦起到比較重要的作用。
第一類是相關性特徵,就是評估內容的屬性和與用戶是否匹配。顯性的匹配包括關鍵詞匹配、分類匹配、來源匹配、主題匹配等。像FM模型中也有一些隱性匹配,從用戶向量與內容向量的距離可以得出。
第二類是環境特徵,包括地理位置、時間。這些既是bias特徵,也能以此構建一些匹配特徵。
第三類是熱度特徵。包括全局熱度、分類熱度,主題熱度,以及關鍵詞熱度等。內容熱度信息在大的推薦系統特別在用戶冷啟動的時候非常有效。
第四類是協同特徵,它可以在部分程度上幫助解決所謂算法越推越窄的問題。協同過濾這是十幾年前的老一代技術,做法也非常簡單、直觀,推薦系統會考慮你跟哪個用戶比較像,你們都點了什麼,你們喜歡同一類的電影,然後把那個人看過的,但你還沒看過的內容推薦給你,通過相似用戶的手段實現了興趣的探索。
協同特徵並非考慮用戶已有歷史。而是通過用戶行為分析不同用戶間相似性,比如點擊相似、興趣分類相似、主題相似、興趣詞相似,甚至向量相似,從而擴展模型的探索能力。
現在還有很多高端技術也在探索用戶興趣,推動內容多樣性。現在主流的技術是用深度學習做推薦,在深度學習裡面有很多方法,包括網絡可以做一些特殊的設置,讓它學一些新東西。
深度學習還是比較容易做的,因為所有用戶、所有內容都是高維空間的向量,可以有意識引導模型,讓它學習一些可能感興趣的內容,雖然它的興趣標籤和你不一樣。但是在這個空間裡面,映射到很近的點,讓模型容易推出去,這裡面有很多高端的做法。
推薦系統如何探索更多用戶興趣
從策略上講,推薦系統會有消重和打散策略。
所有的內容在推薦之前,會進行各種層次的相似性分析,會識別哪兩篇文章或者視頻是非常類似的。比如可能兩篇文章,雖然遣詞造句不一樣,但是講的內容是一樣的。推薦系統能夠分析哪些文章講的是同一個事情,或者涉及到同一個人,或者涉及到某一個公司,基於他們各種各樣的特徵進行分析。
然後,推薦的時候,系統會根據不同的相似性對這些相關的文章進行不同的處理。對於相似的文章,如果給用戶推薦了文章A,跟文章A相似的其他文章就不會被推薦了,這個就是消重的策略。
那麼還有一種情況,就是同一個方向或同一類主題的文章,比如都是足球的文章,推薦系統就需要打散策略,來保證推薦的頻率不會太高,避免用戶在前端感覺內容的同質化,保證內容多樣性,這些都是有算法保證的。
除了消重和打散策略,系統還會留一部分比例流量,探索用戶的興趣。比如每幾刷就有一刷的位置就是探索用戶的興趣,推薦一些模型不確認用戶是不是感興趣,但是模型想探索一下,會有一些這樣的流量。
如何評估推薦系統
全面的評估推薦系統,需要完備的評估體系、強大的實驗平臺以及易用的經驗分析工具。所謂完備的體系就是並非單一指標衡量,不能只看點擊率或者停留時長等,需要綜合評估。
一個良好的評估體系建立需要遵循幾個原則,首先是兼顧短期指標與長期指標。其次,要兼顧用戶指標和生態指標。既要為內容創作者提供價值,讓他更有尊嚴的創作,也有義務滿足用戶,這兩者要平衡。還有廣告主利益也要考慮,這是多方博弈和平衡的過程。另外,要注意協同效應的影響。
實驗中嚴格的流量隔離很難做到,要注意外部效應。
這裡的技術資料比較少,無法做過多的評論。
寫作不易,點讚在看加關注您覺得如何?