深度學習推薦系統 筆記06 推薦系統線上服務相關

2021-10-21 14:55:47 字數 3584 閱讀 2157

需要跟資料庫打交道,把候選物品和離線處理好的特徵載入到伺服器

召回層、排序層、業務邏輯(結果多樣性、流行度)

ab 測試

負載均衡:nginx或專門的硬體級負載均衡裝置

快取(1) 預先快取好幾類新使用者的推薦列表

(2) 利用新使用者有限的資訊,比如ip,註冊資訊等做乙個簡單的聚類,為每個人群聚類產生合適的推薦列表提前快取

(3) 快取有ttl過期時間

推薦服務降級機制

(1) 拋棄原本的複雜邏輯,採用最保險、最簡單、最不消耗資源的降級服務來渡過特殊時期

(2) 要有成熟的監控系統

儲存模組設計原則:分級儲存,把越頻繁訪問的資料放到越快的資料庫甚至快取中,把海量的全量資料放到廉價但是查詢速度較慢的資料庫中。

2. #### 儲存示例:

redis使用經驗:

(1)redis keys命令不能用在生產環境中,如果數量過大效率十分低,導致redis長時間堵塞在keys上。生產環境我們一般選擇提前載入一些warm up物品id的方式載入物品embedding

(2)redis value 可以用protobuf格式儲存, 儲存上節省空間. 解析起來相比string, cpu的效率也應該會更高

(3)把item embedding提前載入到記憶體裡

(4)關於user embedding,指定乙個記憶體區域的大小,用fifo的方案來快取,這樣記憶體用完了,就自動把早進來的使用者pop出去

(5)如果有條件可以判斷活躍使用者,可以盡量選擇活躍使用者進行快取

快速又準確地篩選掉不相關物品,從而節約排序時所消耗的計算資源。

召回率單策略召回

(2)優點:簡單直觀,計算速度非常快

(3)缺點:侷限性很大

多路召回

(1)概念:採用不同的策略、特徵或簡單模型,分別召回一部分候選集,然後把候選集混合在一起供後續排序模型使用的策略

(2)優點:平衡計算速度與召回率

(3)缺點:在確定每一路的召回物品數量時,往往需要大量的人工參與和調整,具體的數值需要經過大量線上 ab 測試來決定。同時,策略之間的資訊和資料是割裂的,所以我們很難綜合考慮不同策略對乙個物品的影響

基於embedding的召回

(1)概念:利用物品和使用者 embedding 相似性來構建召回層

(2)優點:

橫向比較三種技術

電商領域商品維度非常大,eges訓練過慢,怎麼辦?

eges 指的是阿里提出的一種 graph embedidng 方法,全稱是 enhanced graph embedding with side information,補充資訊增強圖 embedding。它是一種融合了經典的 deep walk graph embedding 結果和其他特徵的 embedding 方法,具體步驟如下:

(1)把商品embedding進行預訓練,再跟其他side information特徵一起輸入eges。

(2)hash方法

(3)商品的聚類後輸入,比如非常類似的商品,可以用乙個商品id替代,當作乙個商品來處理。這個方法airbnb embedding的**講的非常好。

使用者embedding怎麼計算的?

最簡單的user embedding生成方法。之前我們說過embedding之間是可以進行運算的。所以用使用者喜歡的物品的embedding平均去代表這個使用者是非常直觀且實用

多路召回中,topk除了根據經驗值確定,業界通用的是怎麼確定k得大小呢?

在系統延遲允許的情況下,其實k取的越大越好。一般來說,如果最後的推薦結果需要n條,k取5-10n是比較合適的。

如果基於興趣標籤做召回,同乙個物品有多個標籤,使用者也計算出了多個興趣標籤,如何做使用者的多興趣標籤與物品的最優匹配呢?若物品標籤有多層,怎麼利用上一層的標籤呢?

(1)簡單做法:把興趣標籤轉成multihot向量,然後計算使用者和物品的相似度。

(2)複雜一點:計算每個興趣標籤的tf-idf,為標籤分配權重後,再轉成multihot向量。

(3)若標籤有多層,不妨把多層標籤全部放到multihot向量中,高層標籤的權重可以適當降低。

召回與使用者向量最相似的物品 embedding 向量這一問題,其實就是在向量空間內搜尋最近鄰的過程。

聚類(1)常見方法:k-means等

(2)存在的問題:

索引(1)實現方法:向量空間索引方法 kd-tree(k-dimension tree)

(2)存在的問題:

區域性敏感雜湊和多桶

(1)基本思想:希望讓相鄰的點落入同乙個「桶」,這樣在進行最近鄰搜尋時,我們僅需要在乙個桶內,或相鄰幾個桶內的元素中進行搜尋即可

(2)定性結論:歐式空間中,將高維空間的點對映到低維空間,原本接近的點在低維空間中肯定依然接近,但原本遠離的點則有一定概率變成接近的點

(3)構建單桶:

(4)構建多桶:採用 m 個雜湊函式同時進行分桶,如果兩個點同時掉進了 m 個桶,那它們是相似點的概率將大大增加。

(5)如何處理多桶關係:

(6)多桶策略實際建議:

向量最近鄰搜尋庫 faiss,可以替代lsh

facebook 的開源向量最近鄰搜尋庫 faiss

預存推薦結果或 embedding 結果

(2)優缺點:

預訓練 embedding+輕量級線上模型

(2)案例:阿里的mimn(multi-channel user interest memory network,多通道使用者興趣記憶網路)

s(1)-s(m) 和 m(1)-m(m)是在離線生成的 embedding 向量,在 mimn 模型中,它們被稱為「多通道使用者興趣向量」,這些 embedding 向量就是連線離線模型和線上模型部分的介面。

線上部分從 redis 之類的模型資料庫中拿到這些離線生成 embedding 向量,然後跟其他特徵的 embedding 向量組合在一起,扔給乙個標準的多層神經網路進行預估。

(3)優缺點:

pmml 模型

(1)介紹:全稱是「**模型標記語言」(predictive model markup language, pmml),它是一種通用的以 xml 的形式表示不同模型結構引數的標記語言。在模型上線的過程中,pmml 經常作為中間媒介連線離線訓練平台和線上**平台。

原理:模型儲存、模型載入還原以及提供服務

embedding層k值的選擇

經驗公式:k = embedding維數開4次方,x初始的維度數,後續k的調參按照2的倍數進行調整。

《深度學習推薦系統實戰》 – 極客時間,王喆

深度學習 推薦系統 58同城招聘個性化推薦系統

1.簡介 存在典型問題 稀疏性 可能活躍兩天找到了工作就不再活躍,回來平台之後可能想換乙份工作,可能是職位公升階 2.個性化推薦 基於行為序列 askbob同樣在評估階段 3 召回模組 以上下文內容與精細畫像結合的精準召回 協同過濾召回 深度向量化為核心策略的召回模組。基於業務特殊性的協同過濾演算法...

推薦系統 3 深度學習發展

深度學習推薦模型,有早期微軟的deepcrossing,google的wide deep,阿里的mlr,到現在影響力非常大的din,dien,youtube的深度推薦模型等。經典的推薦演算法,矩陣分解,在矩陣分解模型的結構中,使用者one hot向量和物品one hot向量分局兩側,他們會先通過隱向...

推薦系統學習筆記 推薦系統現存問題

單純以使用者和專案為驅動的推薦引擎並不能滿足相關使用者的實際需要,使用者在實際購買之中往往會結合自己的實際需要以及社交網路的推薦來做選擇 傳統的推薦演算法往往帶有很嚴重的 馬太效應 推薦的商品往往是熱門的商品,導致熱門的商品更加熱門,而處在 長尾分布 上的商品仍然得不到重視。因此,將社交網路與個性化...