大數據

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

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

一、召回模塊在推薦系統中的位置

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

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

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

三、什麼是協同過濾

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

四、向量召回架構說明

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

五、參考資料

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

Leave a Reply

Your email address will not be published. Required fields are marked *