Categories
程式開發

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘


深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 1

雲妹導讀:在《會展雲技術解讀》專題中,我們已經推出了安全篇“與設計篇“,分別介紹瞭如何應對雲上會展最嚴保障要求與線上展覽中基於服務設計的方法,本篇文章云妹將繼續為大家帶來會展雲中非常重要的一環——智能推薦系統。

在如今的互聯網產品中智能推薦可謂無處不在,它可以根據用戶每個人的性別、年齡、愛好等維度塑造靜態用戶畫像,和用戶每一次點擊、點贊、評論、收藏等行為數據形成的動態用戶畫像相結合,來結合挖掘用戶深層次興趣需求維度。

我們常見的有新聞推薦和電商場景的商品推薦,展會場景推薦系統與之不同的是,它需要滿足參展商、採購商和個人用戶各方需求,尤其是像前不久舉辦的永不落幕的雲上服貿會,首次採用線上+線下結合的模式,將服貿會影響輻射週期從集中的一周拉長至一整年,參展商、採購商以及正在尋找商機有需求的個人用戶都可以隨時隨地瀏覽雲上服貿會尋找有價值的商機。

服貿會註冊展商近萬家,涉及展品數量龐大,涉及200多個子行業。如何讓線上用戶從大量的展商信息中快速找到自己想要的商機?如何保持有效商機的持續獲取?這些問題是提升觀展體驗和逛展效率的關鍵行動。在這個過程中,京東智聯雲機器學習團隊承擔了雲上服貿會智能推薦功能的開發。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 2

從上圖可以看到,整個服貿會智能推薦系統包括四個模塊的功能,同時服務官網2D店鋪和手機APP端,可以做到用戶級別的個性化推薦。針對服貿會的展商、展台、展品、項目四項重要信息,智能推薦系統有對應的展商推薦、展台推薦、展品推薦和項目發布推薦四個模塊。

其中,展商、展台和展品推薦三個模塊的功能引入了採購商和個人的用戶畫像、興趣標籤和行為等維度數據進行精準匹配。比較難實現的是項目發布的推薦,因為除了要考慮用戶畫像和興趣標籤等維度數據外,考慮到項目的及時性和強目的性,還需要高權重的引入內容維度的數據做推薦。

本次智能推薦功能落地過程中除了對於如何更精準的實現項目發布的推薦外,還有3大難題:

整個雲上服貿,智能推薦呈現的內容承載近80%的用戶“第一眼”,所以如何在第一時間給用戶帶來最佳的精準推薦是一個比較棘手的問題。加上本次是第一屆雲上服貿會,沒有歷史信息可以使用。怎麼做才能最大價值用戶的第一時間流量是整個項目期間持續思考的問題;雖然整個雲上服貿會註冊參展商不如電商平台的量級大,但是在9月5日-9月9日線下展會期間是同樣需要面對高並發和性能的挑戰,好的架構系統設計是扛得住檢驗的堅實防線;解決了“第一眼”的推薦,如何做好第二眼、第三眼……的推薦,除了做好用戶畫像,在參展內容刻畫的不斷探索。

同時,我們也在不斷思考:對於“永不落寞的服貿會”如何持續做好後續的推薦?不同於互聯網產品新聞推薦和電商場景的商品推薦,展會場景的推薦如何做出滿足各方(參展商、採購商和個人用戶)需求的推薦之路?

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 3

目前市場上面向C端的用戶產品如頭條、淘寶和各家音樂APP等為了做好推薦過程的冷啟動可謂各顯神通——通過多途徑盡可能地獲取數據,比如首次註冊的“關聯微博/微信/QQ”賬戶;比如詢問用戶的偏好和感興趣內容;比如基礎的用戶信息收集(性別、年齡、地域和所屬行業等)。無論通過被動的信息獲取還是主動的用戶意向選擇,都旨在補全對用戶的認知,加上對分發內容精細化粒度的標籤特徵提取,可以實現冷啟動的個性化推薦。

而冷啟動推薦的另一個較高的門檻是:對用戶場景和行為動機的深層理解,足夠的知識庫沉澱。

但云上服貿會的智能推薦場景,以上兩條路似乎都不怎麼好走。由於是首次參與展會類場景的推薦,即使看似推薦的產品和京東的商品相似,有展台和展品的劃分,但是用戶的群體畫像和逛展意圖有天壤之別。好在京東智聯雲長期以來一直賦能於ToB的業務,沉澱了對B端企業採購場景的認知。

尤其在2020年年初的疫情期間,為了給企業和政府提供高效的防疫裝備採買,京東智聯雲推出了“應急資源信息發布平台”。提供採購和發布供需信息的通道的同時,還為平台用戶提供了基於供需訴求、地理位置、產品匹配度與數量、生產力和運輸效率等多維度的精準推薦。這些沉澱的供需場景知識剛好可以應用於本次雲上服貿會的推薦。另一方面,我們對於用戶畫像和分發內容畫像的理解和補全也做了很多功課,最終確保本次雲上服貿會智能推薦的功能到成功亮相。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 4

面對高並發下的高性能要求,我們設計了基於Caffeine和Redis的多重緩存架構,接下來將從兩個方面來介紹:

1,技術選型

為什麼使用Caffeine+Redis? Redis不用多說,大家都太熟悉了。這裡重點介紹下Caffeine,Caffeine是一個基於Java8開發的提供了近乎最佳命中率的高性能緩存庫。

這裡有人又會產生疑問,為什麼不用Guava Cache呢?這種大家更熟悉基於LRU(The Least Recently Used)算法實現的本地化緩存難道不好嗎?

雖然Guava Cache在過去應用更廣泛,性能也還不錯,但在日新月異的今天,總是會有更優秀、性能更好的緩存框架出現——就像Caffeine。另外再補充下,從Spring5(SpringBoot2)開始也使用Caffeine來取代Guava Cache。

為什麼Caffeine的性能更好?

首先從淘汰算法說起,Guava Cache使用的是LRU。 LRU實現比較簡單,日常使用時也有著不錯的命中率,它可以有效的保護熱點數據,但對於偶發或週期性的訪問,會導致偶發數據被保留,而真正的熱點數據被淘汰,大大降低緩存命中率。為此Caffeine使用了Window TinyLFU算法。

在講Window TinyLFU前,還需要再簡單介紹下LFU。 LFU算法解決了LRU對於突發或週期性訪問導致真實熱點數據淘汰的問題,但短時間對於某些數據的高頻訪問,會導致這些數據長時間駐留在內存中,進而在觸發淘汰時,新加入的熱點數據被錯誤的淘汰掉,最終導致命中率的下降。另外LFU還需要維護訪問頻次,每次訪問都需要更新,造成巨大的資源開銷。 Window TinyLFU實際上吸取了LRU和LFU的優點,又規避了各自的缺點。

具體做法是:首先Window TinyLFU維護了一個近期訪問記錄的頻次信息,作為一個過濾器,當新記錄來時,只有滿足TinyLFU要求的記錄才可以被插入緩存。為了解決資源的高消耗問題,它通過4-bit CountMinSketch實現,這個算法類似於布隆過濾器,可以用很小的空間來存放大量的訪問頻次數據。這個設計給予每個數據項積累熱度的機會,而不是立即過濾掉。這避免了持續的未命中,特別是在突然流量暴漲的的場景中,一些短暫的重複流量就不會被長期保留。為了刷新歷史數據,一個時間衰減進程被周期性或增量的執行,給所有計數器減半。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 5

而對於長期保存的數據,W-TinyLFU使用了Segmented LRU(縮寫SLRU)策略。在初始階段,一個數據項會被存儲在probationary segment中,在後續被訪問時,它會被移到protected segment中。當protected segment內存不夠時,有的數據會被淘汰回probationary segment,這也可能再次觸發probationary segment的淘汰。這套機制確保了訪問間隔小的熱點數據被保存,而重複訪問少的冷數據則被回收。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 6

除此以外,在caffeine中讀寫都是通過異步操作,將事件提交至隊列實現的,而隊列的數據結構使用的是RingBuffer(高性能無鎖隊列Disruptor用的就是RingBuffer),所有的寫操作共享同一個RingBuffer;而讀取時,這塊的設計思想是類似於Striped64,每一個讀線程對應一個RingBuffer,從而避免競爭。

下面是官方性能測試對比:

1、讀(100%)

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 7

2、讀 (75%) / 寫(25%)

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 8

3、寫(100%)

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 9

2,多級緩存設計

Redis作為常用的緩存,雖然性能非常優秀,但隨著數據量的增長,數據結構的複雜,在疊加高並發場景時,不管是網絡IO的消耗,還是Redis單節點的瓶頸,都會對整個調用鏈的性能造成不可忽視的影響。所以我們既需要Caffeine作為JVM級別的緩存,也需要Redis作為我們的二級緩存,這種多級的緩存設計才能最終滿​​足我們的需要。

在Java世界中,我們最常用的就是基於Spring Cache來實現應用緩存,但Spring Cache僅支持單一緩存來源,並無法滿足多級緩存的場景。因此我們需要通過實現CacheManager接口來定義自己的多級緩存CacheManager,同時還需要實現自己的Cache類(繼承AbstractValueAdaptingCache),在這裡面將CaffeineCache和RedisTemplate類以及相關的一些策略配置注入進去,這樣我們就可以自己實現想要的get、put方法:多級緩存的讀和寫。

在數據一致性的設計上,這塊主要依賴於Redis的發布訂閱模式,也就是將所有的更新、刪除都通過該模式通知其他節點去清理本地緩存,當然因為CAP的關係,這種設計是無法保證數據的強一致性的,所以我們也只能盡可能的去保證數據的最終一致性。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 10

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 11

在會展雲中,我們採用了用戶畫像、信息畫像、關鍵詞匹配等技術實現個性化推薦。其中,用戶畫像是通過用戶的註冊信息、興趣標籤、瀏覽偏好等數據進行構建。信息畫像包括了展商畫像、展台畫像、展品畫像和項目畫像四部分,前三部分各自構建又互相利用了對方的信息,如展商的收藏、瀏覽等數據會添加該企業對應展台和展品的數據,展品的行業信息需要從展商畫像中獲取,三部分數據融合建模,從而構建了更加豐富的畫像。

關鍵詞匹配技術主要應用於行業名稱和交易類型關鍵詞的匹配,通過該技術可以將不標準的信息規範化。該系統還針對冷啟動場景進行了優化,當用戶和信息數據不足時,系統可以根據僅有的用戶註冊信息和參展商的行業信息進行匹配,並考慮信息的熱度進行排序。

本次服貿會實現了對數十萬用戶提供個性化推薦服務,針對新註冊的用戶和新發布的信息也可以通過冷啟動方案快速實現智能推薦。推薦系​​統採用了通用的召回和排序架構,召回部分將採用協同過濾、矩陣分解等模型,可以快速從海量數據中粗篩出候選集;排序部分採用更複雜且準確率較高的深度學習模型,如業界常用的Wide&Deep、DeepFM等先進模型,實現對候選集每個信息的精準排序,為服貿會的用戶和參展商提供準確和穩定的服務。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 12

在模型選擇上,我們使用DIN(Deep Interest Network)模型。在正式介紹模型之前,先來介紹一下Attention機制。

Attention機制是模仿人類註意力而提出的一種解決問題的辦法,簡單地說就是從大量信息中快速篩選出高價值信息,即一種將內部經驗和外部感覺對齊從而增加部分區域的觀察精細度的機制。

例如人的視覺在處理一張圖片時,會通過快速掃描全局圖像,獲得需要重點關注的目標區域,也就是注意力焦點。然後對這一區域投入更多的注意力資源,以獲得更多所需要關注的目標的細節信息,並抑制其它無用信息。圖1中對Attention機制進行了圖示,其中亮白色區域表示更關注的區域。

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 13

Attention機制的具體計算過程見圖2。對目前大多數Attention方法進行抽象,可以將其歸納為兩個過程、三個階段:

第一個過程是根據query和key計算權重係數:

(1)第一個階段根據query和key計算兩者的相似性或者相關性;

(2)第二個階段對第一階段的原始分值進行歸一化處理。

第二個過程根據權重係數對value進行加權求和:

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 14

利用候選參展商品和用戶歷史行為之間的相關性計算出一個權重,這個權重就代表了“注意力”的強弱。 DIN設計了局部激活單元,激活單元會計算候選參展商品與用戶最近N個歷史行為商品的相關性權重,然後將其作為加權係數對N個行為商品的embedding向量做sum pooling。

用戶的興趣由加權後的embedding來體現。權重是根據候選參展商品和歷史行為共同決定的,同一候選商品對不同用戶歷史行為的影響是不同的,與候選商品相關性高的歷史行為會獲得更高的權重。可以看到,激活單元是一個多層網絡,輸入為用戶畫像embedding向量、信息畫像embedding向量以及二者的叉乘。

DIN模型大致分為以下五個部分:

Embedding Layer:原始數據是高維且稀疏的0-1矩陣,emdedding層用於將原始高維數據壓縮成低維矩陣;Pooling Layer :由於不同的用戶有不同個數的行為數據,導致embedding矩陣的向量大小不一致,而全連接層只能處理固定維度的數據,因此利用Pooling Layer得到一個固定長度的向量;Concat Layer:經過embedding layer和pooling layer後,原始稀疏特徵被轉換成多個固定長度的用戶興趣的抽象表示向量,然後利用concat layer聚合抽象表示向量,輸出該用戶興趣的唯一抽象表示向量;MLP:將concat layer輸出的抽象表示向量作為MLP的輸入,自動學習數據之間的交叉特徵;Loss :損失函數一般採用Logloss;

DIN認為用戶的興趣不是一個點,而是一個多峰的函數。一個峰就表示一個興趣,峰值的大小表示興趣強度。那麼針對不同的候選參展商品,用戶的興趣強度是不同的,也就是說隨著候選商品的變化,用戶的興趣強度不斷在變化。

總的來說,DIN通過引入attention機制,針對不同的商品構造不同的用戶抽象表示,從而實現了在數據維度一定的情況下,更精準地捕捉用戶當前的興趣。

以上,是我們為本次服貿會智能推薦板塊提供的技術支持和思考,本次服貿會作為首屆“永不落幕”服貿會,同樣,我們在技術之路的深耕和追逐的腳步一刻也不敢懈怠,不斷思考持續探索,不忘初心未來可期。

推薦閱讀:

基於服務設計的線上展覽| 會展雲技術解讀多重安全保障護航雲上會展| 會展雲技術解讀讓黑產無處遁形:京東智聯雲推出風險識別服務

歡迎點擊【京東智聯雲“】,了解京東會展雲服務

更多精彩技術實踐與獨家乾貨解析

歡迎關注【京東智聯雲開發者】公眾號

深度解讀智能推薦系統搭建之路| 會展雲技術揭秘 15