天天看點

推薦系統召回算法及架構說明

課程位址: https://developer.aliyun.com/course/2052

一、召回子產品在推薦系統中的位置

在如何建構企業級推薦系統系列課程的第一課中,我們介紹了整個推薦系統的架構應該是什麼樣的,大體有哪些子產品,在雲上的産品的每個子產品需要用什麼樣的一個應用。在這一節課,我們會重點針對推薦系統中的召回算法做一個具體的說明,以及這個架構是怎麼搭建的。先來回顧一下召回子產品在整個推薦系統中的一個位置。召回子產品主要做的一件事就是初篩。使用者A進到平台中,從潛在的超大規模的item中篩選A可能喜歡的較小比例的item。比如說平台上有10萬個item,使用者進來之後篩選出500個他可能會喜歡的。接下來通過排序子產品根據他的喜好程度對item進行排序。

推薦系統召回算法及架構說明

二、推薦場景-召回算法介紹

今天我們就介紹一下在這個召回子產品究竟會用到哪些算法。我把目前比較流行的4個算法放到這裡。右側的是協同過濾算法,左側的可以叫做向量召回相關的算法。協同過濾算法類似于基于統計的算法,它會找出興趣相同的一些人,或者說一些可以被同時購買的商品。比如說啤酒和尿布的故事,我們發現在超市裡啤酒和尿布經常被一起購買,這是基于大量的資料統計得到的一個結果。向量召回更偏機器學習的一些深層的模型。比如說ALS是一個經典的矩陣分解方法,可以基于行為資料表,産出user embedding表和item embedding表。這是向量召回的一個基本方法。其實FM也是類似的一個邏輯,通過内積方式增強特征表現力。這裡面我要單獨介紹一下 GraphSage算法。它其實是一種圖神經網絡的召回算法,這種算法在整個的網際網路領域應用的還不是特别多。但是在一些比較大的網際網路公司,比如說淘寶的推薦場景會應用得比較多。GraphSage是基于深度學習架構建構的圖算法。可以基于使用者和商品特征及行為産出user embedding和item embedding。GraphSage算法也經常被用于電商的召回場景。

推薦系統召回算法及架構說明

三、什麼是協同過濾

協同過濾可能是比較好了解的一個算法,我這裡會用一個篇幅給大家介紹一下。比如說我們有使用者A、B、C,他們的偏好如下圖所示。你會發現A和C有一些相似的口味。A和C都喜歡Rice、Milk。除此之外,A還喜歡Lamb。就是說A和C有相似的口味,并且A還喜歡某個C沒有嘗試過的東西。我們就假設C也喜歡它,可以把它作為C的一個召回結果。這就是一個基于資料統計的标準的協同過濾的方式。這張圖可以幫大家很好地去了解協同過濾算法的原理。

推薦系統召回算法及架構說明

四、向量召回架構說明

接下來再介紹一下剛才的三種向量召回的算法。它的一個輸入的資料大體是這樣的,你有一些使用者的ID,然後有一些物品的ID,然後有一些行為的資料。如下圖所示,這是一個使用者行為的資料表,進來之後你通過向量召回算法,最終拿到的是兩個向量表。這些向量表在實際的生産中是一個K、V形式的。就是一個使用者ID對應一個向量,可以在Redis裡去暫存一下。實際的使用過程中需要把這些東西全存到Faiss的伺服器裡。Faiss是Facebook的AI團隊開源的專門針對向量檢索的一個引擎。它的一個好處就是非常快,可以提供很多的向量檢索的模式,甚至可以在一毫秒之内傳回一個幾百萬級别的向量檢索,它的性能非常好,常用到推薦召回的領域裡。具體召回的時候,比如說我們想給一個使用者推薦一個物品,我們拿着使用者的ID和它的向量進入到Faiss引擎裡去查哪些物料向量和使用者向量的歐式距離最近。比如說,把Top10個拿出來,作為這名使用者的召回結果。這是整個的方案,會用到Redis,也會用到Faiss這樣的一個引擎。這就是整個的向量召回的架構。

推薦系統召回算法及架構說明

五、參考資料

最後,介紹一下我們給大家準備的一些資料。這第一個link它對應的是PAI團隊結合自身過去幾年在推薦領域的一些探索,總結了140頁的推薦業務的動手實踐文檔。沒有機器學習背景的人基于我們這些文檔,也可以在一周之内搭建一套企業級的推薦系統,大家如果感興趣可以去用一下。另外這一個是PAI的産品位址。

推薦系統召回算法及架構說明

繼續閱讀