表1:主流推薦算法的問題與優勢
上面列舉的是一般推薦系統可能存在的問題,對于單個推薦算法,由于所利用的數據不一樣,算法自身模型不一樣,可能會面臨上述問題中的一些。不同的産品形態和業務場景,由于跟用戶的交互方式不一樣,能夠獲取到的數據也不一樣,對選擇具體的推薦算法也存在一定的限制。既然單個算法或多或少存在一些問題,自然的想法就是結合多個算法的優勢來避免單個算法存在的問題,這就是下面一節我們要講的混合推薦算法,混合推薦期望融合多個算法,博采衆長,有效緩解上述單個算法存在的居多問題。
三、混合推薦系統的實現方案
我們在第二節講解了混合推薦算法的價值,那麽多種算法怎麽混合來構建新的算法呢?根據多種算法混合的方式不同一般可以分爲如下3種混合範式,其中每種範式都有兩到三種具體的實現方案,一共有7中不同的混合方案,我們在下面分別介紹(該分類參考了參考文獻5的具體分類方法)。
1.單體的(Monolithic)混合範式
單體的混合範式整合多種推薦算法到同一個算法體系中,由這個整合的推薦算法統一提供推薦服務,具體的實現流程參考下面的圖1。
圖2:並行的混合推薦範式
並行混合範式利用多個推薦算法密切配合,利用特殊的混合機制聚合各個算法的結果,根據混合方案的不同主要有如下3中具體的實現方式。
(3) 摻雜(Mixed)混合
摻雜方法將多個推薦算法的結果混合起來,最終推薦給某個用戶,見下面公式,其中,k是第k個推薦算法。
這裏同樣要保證不同的推薦算法輸出的得分要在同一個範圍,否則加權是沒有意義的。
(5) 分支(Switching)混合
分支混合根據某個判別規則來決定在某種情況發生時,利用某個推薦算法的推薦結果。具體的公式可以用下式簡單表示。
圖3:流水線混合推薦範式
流水線混合是一個分階段的過程,多個推薦算法一個接一個,最後的一個算法産出最終的推薦結果。根據一個算法的輸出以怎樣的方式給到下一個算法使用,具體可以分爲如下2種實現方案。
(6) 級聯(Cascade)混合
在級聯方式中,一個算法的推薦結果作爲輸出給到下一個算法作爲輸入之一,下一個算法只會調整上一個算法的推薦結果的排序或者剔除掉部分結果,而不會新增推薦標的物。如果用數學語言來描述,級聯混合就滿足下面兩個條件的混合推薦,其中n是級聯的算法個數,
是第k個推薦算法的推薦結果。
注意,排在級聯混合第一個算法後面的算法的輸入除了前面一個算法的輸出外,可能還會利用其它的數據來訓練推薦算法模型,級聯的目的是優化上一個算法的排序結果或者剔除不合適的推薦,通過級聯會減少最終推薦結果的數量。
(7) 元級別(Meta-level)混合
在元級別的混合中一個推薦算法構建的模型會被流水線後面的算法使用,用于生成推薦結果,下面的公式很好地說明了這種情況。由于這種混合直接將模型作爲另一個算法的輸入,類似函數式編程中函數作爲另一個函數的輸入,所以比較複雜,在現實業務場景中一般n=2,即只做兩層的混合。
圖4:工業級推薦系統3階段pipeline架構
這個三階段的pipeline結構類似混合推薦中的流水線混合範式,下面我們分別對這三個階段的功能進行簡單介紹,同時會說明每個階段的算法是怎麽利用到混合推薦的思路的。
召回階段的目的是通過利用不同的推薦算法將用戶可能喜歡的標的物從海量標的物庫(千萬級或者上億)中篩選出一個足夠小的子集(幾百上千)。作者在《基于標簽的實時短視頻推薦系統》這篇文章第四節“個性化推薦的召回與排序策略”中對多種召回策略進行了介紹(參考下面圖5,感興趣的讀者可以閱讀這篇文章的相關章節),這其中的每一種召回策略可以看成是一個推薦算法,不同召回算法的結果是通過摻雜混合的方式(也就是前面提到的第三種混合推薦算法)進行合並的,混合後的推薦結果作爲數據輸入給後續的排序推薦算法階段進行進一步精細化處理。
圖6:用戶從剛注冊到老用戶過程中的可行推薦策略
除了上面的分支混合策略外,還可以采用摻雜加權的策略,就是將上面3中方案計算出來的推薦結果(如果有的話)混合推薦,這裏不再贅述。
五、對混合推薦系統的思考
混合推薦算法提出的目的主要是希望通過多個算法的有效配合避免單個算法存在的問題,提升推薦的整體質量,前面第三節中提到的幾種混合方式是從算法的角度來說明幾種可行的混合方案,這7種混合方案是在2002年提出來的,曆史比較久遠了,雖然現在還很有代表性,但是這幾年整個推薦系統在算法、工程實踐、應用場景上都有較大發展和變化,有很多情況可能是這7種混合方式沒有覆蓋到的,另外,這7種混合方式只是從算法的角度來進行介紹的,而從更廣義的角度來看,推薦系統的混合不光有算法的混合,還有數據源的混合、多類別標的物的混合、應用場景的混合等等,在本節我根據自己對推薦系統的未來發展的理解,試圖對混合推薦系統可能的重點發展方向進行簡單介紹,給大家提供一些新的思考問題的視角。
1.整合實時推薦中用戶短期和長期興趣
實時個性化推薦可以快速響應用戶請求,讓用戶實時獲得優質推薦服務,幫助用戶及時獲取信息對用戶來說是非常有價值的事情。
怎麽整合用戶實時興趣和長期興趣對提升用戶體驗是非常關鍵的,前面一節已經提到了一些簡單的整合用戶實時興趣的方法,這個方法還非常簡單粗暴,更好更加有效的方法還需要算法和工程上的突破。
實時個性化推薦一定是未來的重點方向,特別是隨著5G時代的到來,網速有極大的提升,誰能更快更好地服務用戶,誰就能擁有用戶。
2.利用單個複雜模型建模多源信息
傳統的基于內容的推薦、協同過濾等算法一般只利用部分相關數據來構建推薦模型,由于利用的數據有限,模型相對簡單,因此單個算法可能存在一些問題(我們在第二節中已經對各個算法可能存在的問題進行過簡單介紹),利用我們第四部分介紹的混合推薦策略可以避免部分相關問題。那是否可以利用其它的方案來解決這些基礎模型存在的問題呢?確實是可以的。現在隨著深度學習等複雜模型的流行,有很多學術研究和工業實踐利用深度學習、強化學習等技術整合多種信息來獲得更好的推薦效果,這種從模型層面整合多種信息的方法,可以更好地學習多數據源之間的內在關系,所以一定是未來的一個重要的研究和實踐方向。
目前的數據源按照數據承載的載體不同有文本、圖像、視頻、音頻等數據,從數據的來源,有用戶相關數據、標的物相關數據、用戶行爲數據、上下文數據等,利用深度學習、異構信息網絡等複雜算法來整合多源數據提供更優質的推薦服務是很有前途的一個方向。
3.多源的標的物混合
現在很多APP都是朝著提供綜合性服務的方向發展,比如美團(吃、住、行、生活等)等APP提供多種不同性質和類別的服務,未來推薦算法可能會提供綜合性的推薦服務,在同一個推薦列表中存在多種不同類別差異性極大的標的物。
另外,互聯網産品做廣告變現是非常重要的一種商業化手段,隨著新聞短視頻等信息流産品的流行,信息流廣告越來越受到互聯網公司的重視(參加下面圖7),信息流廣告中將廣告和標的物混合在一起推薦,這時廣告也可以看成是一種標的物,因而也是一種標的物混合推薦的形態,只不過在信息流廣告中,我們除了關注標的物的“消費”外,還會重點關注廣告曝光、點擊、購買等收益性指標。