天天看點

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

以下内容根據演講視訊以及PPT整理而成。

手淘推薦簡介

手淘推薦的快速發展源于2014年阿裡“All in 無線”戰略的提出。在無線時代,手機螢幕變小,使用者無法同時浏覽多個視窗,互動變得困難,在這樣的情況下,手淘借助個性化推薦來提升使用者在無線端的浏覽效率。經過近幾年的發展,推薦已經成為手淘上面最大的流量入口,每天服務數億使用者,成交量僅次于搜尋,成為了手淘成交量第二大入口。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

今天的推薦不僅僅包含商品,還包含了直播、店鋪、品牌、UGC,PGC等,手淘整體的推薦物種十分豐富,目前手淘的整體推薦場景有上百個。推薦與搜尋不同,搜尋中使用者可以主動表達需求,推薦很少和使用者主動互動,或者和使用者互動的是背景的算法模型,是以推薦從誕生開始就是大資料+AI的産品。

手淘推薦特點

相比于其他推薦産品,手淘推薦也有自身的如下特點:

1.購物決策周期:手淘推薦的主要價值是挖掘使用者潛在需求和幫助使用者購買決策,使用者的購物決策周期比較長,需要經曆需求發現,資訊擷取,商品對比和下單決策的過程,電商推薦系統需要根據使用者購物狀态來做出推薦決策。

2.時效性:我們一生會在淘寶購買很多東西,但是這些需求通常是低頻和隻在很短的時間視窗有效,比如手機1~2才買一次但決策周期隻有幾小時到幾天,是以需要非常強的時效性,需要快速地感覺和捕獲使用者的實時興趣和探索未知需求,是以,推薦誕生之初就與Flink、Blink實時計算關系非常緊密。

3.人群結構複雜:手淘中會存在未登入使用者、新使用者、低活使用者以及流式使用者等,是以需要制定差異化的推薦政策,并且針對性地優推薦模型。

4.多場景:手淘推薦覆寫了幾百個場景,每個場景都獨立進行優化顯然是不可能的,而且每個場景的條件不同,是以超參也必然不同,無法依靠人工逐個優化場景模型的參數,是以需要在模型之間進行遷移學習以及自動的超參學習等,通過頭部場景的遷移學習來服務好尾部場景。

5.多目标和多物種。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

推薦技術架構

如下圖所示的是手淘推薦的技術架構。2019年雙11,整個阿裡巴巴的業務全部實作上雲,是以手淘推薦的技術架構也是生長在雲上的。推薦的A-B-C包括了推薦算法和模型、原始日志和基于日志加工出來的特征和離線上計算及服務能力,比如向量檢索、機器學習平台、線上排序服務等。除了雲,今年我們通過把深度學習模型部署到了端上,實作了雲和端的協同計算。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

接下來将主要圍繞資料、基礎設施以及算法模型進行介紹。

資料-基礎資料

手淘的推薦資料主要包括幾種,即描述型資料比如使用者畫像,關系資料比如二部圖或稀疏矩陣,行為序列和圖資料等。基于使用者行為序列推薦模型在手淘商品推薦應用最為廣泛,圖模型則是近兩年發展較快的模型,因為序列通常隻适合于同構的資料,而在手淘裡面,使用者的行為有很多種,比如看視訊、搜尋關鍵詞等,通過graph embedding 等技術可以将異構圖資料對齊或做特征融合。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

資料-樣本

資料樣本主要包含兩部分元素,label和特征。label一般在手淘推薦中有幾類,比如曝光、點選、成交以及加購等。特征則比較多了,比如使用者自己的特征、使用者上下文特征、商品本身特征以及兩兩組合特征等。根據使用者的特征和行為日志做Join就形成樣本表,這些表格存儲的時候就是按照稀疏矩陣方式進行存儲,一般而言是按天或者按照時間片段形成表格,樣本生成需要占用很大一部分離線計算資源。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

離線計算-計算模式

離線計算主要有三種模式,即批處理、流處理和互動式查詢。批進行中比較典型的就是MapReduce,其特點是延遲高但并行能力強,适合資料離線處理,比如小時/天級别特征計算,樣本處理和離線報表等。流計算的特點是資料延遲低,是以非常适合進行事件處理,比如使用者實時點選,實時偏好預測,線上學習的實時樣本處理和實時報表等。互動式查詢則主要用于進行資料可視化和報表分析。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

離線計算-模型訓練

模型訓練也有三種主要的模式,即全量學習、增量學習和線上學習。全量學習這裡是指模型初始化從0開始學習,如果日志規模比較小,模型簡單并不需要頻繁更新時,可以基于全量日志定期訓練和更新模型,但當日志和模型參數規模較大時,全量學習要消耗大量計算資源和數天時間,成本效益很低,這時通常會在曆史模型參數基礎上做增量學習,用小時/天日志增量訓練模型和部署到線上,降低資源消耗和較高的模型更新頻率。如果模型時效性非常強需要用秒/分鐘級别樣本實時更新模型,這是就需要用到線上學習,在學習和增量學習主要差别是依賴的資料流不一樣,線上學習通常需要通過流式計算架構實時産出樣本。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

離線計算-訓練效率

因為機器資源總是不夠的,訓練優化是如何用更快的速度,更少的計算和更少的資料訓練出更好的模型,這裡為大家提供一些加速訓練的方式:

1.熱啟動:模型需要不斷更新和優化,比如新加特征或修改網絡結構,由于被修複部分模型參數是初始值,模型需要重新訓練,熱啟動就是在模型參數隻有部分修改時如何用少量的樣本讓模型收斂。

2.遷移學習:前面提到手淘推薦的場景非常多,而某些場景的日志非常少,是以無法實作大規模模型的訓練,這是可以基于樣本較多的大場景做遷移學習。

3.蒸餾學習:手淘用來做級聯模型學習,比如精排模型特征更多模型更加精準,通過精排和粗排特征蒸餾,提升粗排模型精度,除此之外也可以用來做模型性能優化;

4.低精度、量化和剪枝:随着模型越來越複雜,線上存儲和預測成本也在成倍增加,通過這些方式降低模型存儲空間和預測速度,另外是端上模型通常對大小有強要求;

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

離線計算-端到端閉環

因為手淘推薦日志很大,特征來源很複雜,離線和線上的細微變動都可能導緻樣本出錯或離線線上特征/模型不一緻,影響疊代效率甚至造成生産故障,我們的解決辦法是做一個端到端的開發架構,開發架構對日志,特征和樣本做抽象,減低人工開發成本和出錯的可能,并在架構嵌套debug 和資料可視化工具,提高問題排查效率。目前手淘搜尋推薦已經基本上做到了從最原始日志的收集、到特征抽取以及訓練模型的驗證、模型的釋出,再到線上部署以及實時日志的收集形成整體的閉環,提升了整體模型的疊代效率。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

雲和端

随着5G和IOT的發展資料會出現爆炸式的膨脹,将資料放在雲上集中存儲和計算,這樣做是否是一個最合理的方式呢?一些資料和計算能否放在端上來做?端上相對于雲上而言,還有幾個較大的優勢,首先延時低,其次是隐式性,各個國家對于隐私的保護要求越來越嚴厲,是以需要考慮當資料不能發送到雲端的時候如何做個性化推薦。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

雲和端協同計算

在雲和端協同計算方面,阿裡巴巴已經做了大量的嘗試,比如雲和端如何實作協同推理,這裡包括幾個部分,比如手機端上擁有更加豐富的使用者行為如使用者滑屏速度、曝光視窗時長以及互動時長等,是以第一步是端上的使用者行為模式感覺的模型。第二步就是在端上決策,比如預測使用者何時會離開APP,并在使用者離開之前改變一些政策提高使用者的浏覽深度。此外,手淘還在端上做了一個小型推薦系統,因為目前雲上推薦都是一次性給多個結果比如20多個,而手機一次僅能夠浏覽4到6個推薦結果,當浏覽完這20個結果之前,無論使用者在手機端做出什麼樣的操作,都不會向雲端發起一次新的請求,是以推薦結果是不變化的,這樣就使得個性化推薦的時效性比較差。現在的做法就是一次性将100個結果放在手機端上去,手機端不斷地進行推理并且更新推薦結果,這樣使得推薦能夠具有非常強的時效性,如果這些任務全部放在雲端來做,那麼就需要增加成千上萬台機器。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

除了推理之外,還有雲和端的協同訓練。如果想要實作個人的隐私保護,雲和端協同訓練是非常重要的,隻有這樣才能夠不将使用者的所有原始資料全部加載到雲上,大部分訓練都在手機端完成,在雲端隻是處理一些不可解釋的使用者向量,進而更好地保護使用者的隐私資料。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

召回技術-動态實時多興趣表達(MIND)

早些年大家在做推薦協同過濾可能使用Item2Vec召回、标簽召回等,比如像Item2Vec召回而言,确實比較簡單,而且時效性非常好,在很長一段時間内主導了推薦技術發展的程序,後續才誕生了矩陣分解等。但是Item2Vec召回存在很大的問題,如果商品的曝光點不多其實是很難被推薦出來的,是以推薦的基本上都是熱門的Item。其次Item2Vec召回認為每個點選都是獨立的,缺少對于使用者的全局認知,此時需要做的是就是将使用者的行為和标簽進行全局感覺并做召回。基于這樣的出發點,我們提出了基于行為序列的召回模型,但這種方式存在的問題就是使用者的興趣不會聚焦在同一個點,單個向量召回通常隻能召回一個類目或者興趣點,是以如何通過深度學習做使用者的多需求表達等都是挑戰。這樣的問題,阿裡巴巴已經解決了,并且将論文發表在CIKM 2019上面。現在,淘寶所使用的是線上多向量化并行召回。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

CTR模型

手淘推薦的CTR模型也經曆了幾個重要的變革,第一個模型是FTRL+LR,其優點是模型簡單,能夠支援千億級别特征。第二個模型是XNN,對LR離散特征做embedding,并引入多層神經網絡,由于引入新的參數,模型學習能力更強。第三個模型是Self-attention CTR,也就是基于圖和使用者行為序列實作的。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

推薦序列優化-生成式推薦

推薦一般都是基于打分的,打完分之後在做一個貪心排序和打散,這樣的做法得到的結果其實并不是最優的,因為這樣做并沒有考慮結果與結果之間的依賴性,使用貪心算法得到的結果并不是最優的。推薦本質上應該是對于集合而不是序列的優化,是以手淘推薦是用的是生成式排序模型。更多可以參考我們在KDD 2019發表的論文。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

多目标均衡優化

在推薦時,大家往往會遇到多目标均衡問題,比如商品推薦的浏覽深度,點選和成交,由于目标量綱不一緻,不存在全局唯一最優解,需要同時優化多個目标或在多個目标之間做合理取舍,對此我們提出了基于帕累托的多目标優化排序模型。更多可參考我們發表在RecSys 2019的文章。

解密淘寶推薦實戰,打造 “比你還懂你” 的個性化APP

繼續閱讀