https://yq.aliyun.com/articles/704401?spm=a2c4e.11153940.bloghomeflow.44.2b9f291aPJ30PT算法
天貓首頁做爲用戶打開手機天貓App的第一印象,所推薦的商品極大地決定了用戶接下來的行爲,對用戶流量的承接與分發、提高用戶購物體驗和呈現天貓貨品的性價比、品質感及品牌力起到相當重要的做用,成爲提高天貓用戶體驗的關鍵環節之一。網絡
天貓首頁的場景主要包括大促會場入口和平常頻道兩大類,如圖1所示。其中左圖爲大促會場入口,包括主會場入口和行業會場入口;主會場入口經過爲用戶推薦7個商品(3個在中間動態輪播)給大促主會場進行引流,引流 UV 達數千萬以上;行業會場入口經過爲用戶推薦4個個性化會場和商品爲數萬的會場引流。右圖爲平常頻道,包括限時搶購、天貓好物、聚划算、天貓閃降和精選頻道;首頁經過個性化推薦商品爲各個特點的頻道引流,經過各個頻道來培養用戶心智,讓用戶在天貓逛起來。框架
圖1. 天貓首頁場景機器學習
過去的首頁推薦更多的是在相關性推薦的單一數據目標上進行優化,現在天貓首頁的推薦系統不只僅考慮推薦結果的相關性,還在推薦結果的發現性、多樣性等方面上作了更深度的優化,"效率和體驗並重"成爲天貓首頁新的優化目標。Graph Embedding、Transformer、深度學習、知識圖譜等新的技術已前後在天貓首頁的推薦系統成功落地,爲場景帶來了兩位數的點擊率提高和兩位數的疲勞度降低。ide
天貓首頁的個性化推薦系統能夠分爲召回、排序和機制三個模塊。其中,召回模塊主要是從全量的商品素材中檢索出用戶感興趣的 TopK 個候選商品,排序模塊專一於用戶對商品的 CTR 預估,機制模塊負責後期的流量調控、體驗優化、策略調控等和最終的商品排序。整個推薦系統採用 Graph Embedding、Transformer、深度學習、知識圖譜、用戶體驗建模等新的技術構建起來,後面章節將介紹這個推薦系統的關鍵技術點。性能
圖2. 天貓首頁推薦系統框架學習
3.1 Ranki2i優化
Item-CF 是目前應用最普遍的召回算法,其原理是根據兩個商品被同時點擊的頻率來計算兩個商品之間的類似度 simScore,獲得 i2i 表;而後經過用戶的 trigger 去查詢 i2i 表,擴展用戶感興趣的商品。Item-CF 的基本算法雖然簡單,可是要得到更好的效果,每每須要根據實際的業務場景進行調優。清除爬蟲、刷單等噪聲數據,合理選擇計算商品之間類似度的數據的時間窗口,引入時間衰減,只考慮同一個類目下商品對,歸一化、截斷、打散等策略對優化 Item-CF 的效果都有很大的幫助。設計
Ranki2i 是一種改進的 Item-CF 算法,其在 item-CF 獲得的兩個商品之間的類似度 simScore 的基礎上再乘以該 trigger item 所召回的該 target item 在過去一段時間內的 ctr (注意 ctr 的計算須要進行適當的平滑),對 i2i 的 simScore 進行修正,使得 i2i 表不只考慮了兩個商品的點擊共現性,還考慮了召回商品的點擊率。3d
咱們基於全網的點擊數據和天貓首頁場景內的日誌來計算 Ranki2i 表,並部署在檢索系統 Basic Engine 上,對每一個訪問天貓首頁的用戶,從基礎特徵服務系統 ABFS 中獲取用戶的 trigger,並以此查詢 Ranki2i 表來召回用戶感興趣的商品。
經典 Item-CF 類算法直接根據兩個商品被同時點擊的頻率來計算兩個商品之間的類似度,在尋找用戶點擊商品的類似、相關以及搭配商品上都有很大的優點,且其具備簡單、性能高等特色,已成爲目前應用使用最爲普遍的召回算法。然而因爲經典 Item-CF 類算法的召回結果的候選集限定在用戶的歷史行爲類目中,而且算法難以結合商品的 Side Information,致使其推薦結果存在發現性弱、對長尾商品的效果差等問題,容易致使推薦系統出現「越推越窄」的問題,從而制約了推薦系統的可持續發展。爲了跟精準地給用戶推薦心儀的商品,同時維護推薦系統的可持續發展,解決推薦系統的發現性推薦和長尾推薦等問題,咱們團隊提出了 S3Graph Embeeding 算法和 MIND 算法。
3.2 S3 Graph Embedding
Graph Embedding 是一種將複雜網絡投影到低維空間的機器學習技術,典型的作法是將網絡中的節點作向量化表達,使節點間的向量類似度接近原始節點間在網絡結構、近鄰關係、Meta信息等多維度上的類似性。
咱們團隊提出的 S3 Graph Embeeding 算法利用全網以十億的用戶對十億規模的商品的序列化點擊行爲構建千億規模的 Graph,結合深度隨機遊走技術對用戶行爲進行"虛擬採樣",並引入商品的 Side Information 增長泛化學習能力,將全網的商品進行 embedding,統一成同一維度的向量表示。該向量被直接用在 Item-CF 中商品類似度的計算中,相比經典 Item-CF 以共同點擊次數來衡量商品類似度的作法,該算法不須要兩個商品被同時點擊過也能計算出商品間的類似度,而且引入 Side Information 的使其能更好的處理長尾的商品和冷啓動的商品。
圖3. Graph Embedding
咱們基於 Behemoth X2Vec 平臺,利用全網的點擊數據和商品 Side Information 構建全網商品的 embedding,並以此來計算 Graph Embedding i2i 表,部署在Basic Engine 上,對每一個訪問天貓首頁的用戶,從 ABFS 中獲取用戶的 trigger,並以此查詢 Graph Embedding i2i 表來召回用戶感興趣的商品。
3.3 MIND
Multi-Interest Network with Dynamic Routing (MIND) 是咱們團隊提出的一種向量召回的方法,其經過構建多個和商品向量在統一的向量空間的用戶興趣向量來表示用戶的多個興趣,而後經過這多個興趣向量去檢索出TopK個與其近鄰的商品向量,獲得 TopK個 用戶感興趣的商品。
傳統 DeepMatch 方法爲每一個用戶生成一個興趣向量,但在實際的購物場景中,用戶的興趣是多樣的,不一樣興趣之間甚至多是不相關的,好比用戶可能同時指望購買服裝、化妝品、零食,而一個長度有限的向量很難表示用戶這樣的多個興趣。咱們的 MIND 模型經過 Dynamic Routing 的方法從用戶行爲和用戶屬性信息中動態學習出多個表示用戶興趣的向量,更好的捕捉用戶的多樣興趣,來提高召回的豐富度和準確度。
圖4. MIND模型
咱們基於實時排序服務 RTP 和召回引擎 Basic Engine(BE) 開發了一整套 MIND 在線服務體系。對每一個訪問場景的用戶,先經過部署在 RTP 中的 MIND 模型的 Multi-interest Extractor Layer 提取出用戶的多個興趣向量,而後利用這些興趣向量在 Basic Engine 中經過 aitheta 檢索引擎召回用戶感興趣的商品。
3.4 Retargeting
Retargering 是一種將用戶點擊、收藏或加購的商品再次推薦給用戶的一種推薦策略。在電商的推薦系統中,用戶的行爲包含瀏覽、點擊、收藏、加購和下單等行爲,咱們固然但願用戶每個行爲流最終都能到達轉化的環節,可是事實並不是如此。當用戶產生了下單行爲的某些上游行爲時,會有至關一部分用戶由於各類緣由沒有最終達成交易,可是用戶當時沒有產生下單行爲並不表明用戶對當前商品不感興趣,當用戶再次來到天貓時,咱們根據用戶以前產生的先驗行爲理解並識別用戶的真正意圖,將符合用戶意圖的商品再次推薦給用戶,引導用戶沿着行爲流向下游,最終達到下單這個最終的行爲。
Retargering 的召回策略更可能是在大促促成交的場景下使用,其召回量更須要嚴格控制。
3.5 Crowd-based Filtering
上述的召回策略都能跟着用戶的歷史行爲等信息召回用戶感興趣的商品,可是對於未登陸用戶或是冷啓動的用戶,這些召回策略所能召回的商品是有限的。Crowd-based Filtering 是一種替補的召回策略,是一種基於人羣屬性來推薦的方法,其經過將用戶按照性別、年齡段、收貨城市等粗粒度的屬性劃分爲若干我的羣,而後爲基於每一個人羣的行爲數據挑選出該人羣點擊率高的 TopK 個商品做爲該人羣感興趣的商品。
爲告終合不一樣召回策略的優勢,同時提升候選集的多樣性和覆蓋率,咱們將以上召回策略召回的商品融合在一塊兒。融合的過程當中根據各個召回策略召回結果的歷史表現和流量調控的需求,對各個召回算法的召回比例進行適當的調製。
4.1 排序特徵
排序特徵在排序的效果中起到了很是重要的做用,天貓首頁推薦系統排序模型的特徵能夠抽象爲五類:
4.2 排序樣本
排序樣本的選取也會影響排序模型的效果。排序的樣原本自於場景產生的曝光和點擊日誌,對場景日誌進行有效的清洗去噪,準實時計算場景活躍用戶、黑名單用戶,保留對場景有感知的部分用戶,過濾數據中混雜的刷單爬蟲等做弊行爲數據,過濾大促0點下單和紅包雨等異常時段用戶的非正常行爲日誌等對提高模型效果有必定的幫助。
4.3 排序模型
4.3.1 經典 Deep 排序模型
Google 提出的 WDL 模型奠基了目前 Deep 排序模型的基本框架。
DeepFM/PNN/DCN/DeepResNet 等模型把傳統離散 LR 中特徵工程的經驗搬到DL 中來,用人工構建的代數式先驗來幫助模型創建對某種認知模式的預設,幫助模型更好的建模。DIN 等模型引入了用戶行爲數據,經過 Attention 來捕捉了用戶興趣的多樣性以及與預測目標的局部相關性,對大規模離散用戶行爲數據的進行建模。
4.3.2 BST
相似 DeepFM/PNN/DCN/DeepResNet 等模型更多的在探索如何更好的利用 id features 和 bias features 去逼近 id features 和 bias features 所能達到的模型上限,不多探索如何有效利用 seq features;DIN 等模型在這些模型的基礎上進行 seq features 建模的探索,其用打分 item對seq features 作 attention 後對其進行weighted sum pooling,雖然能夠很好地表達打分 item 和用戶行爲序列的相關性,但不能抽象用戶行爲序列內部的相關性。
爲了解決 WDL 和 DIN 等模型存在的上述問題,受 Transformer 在 NLP 任務中有效地處理詞序列的啓發,咱們提出了 Behavior Sequence Transformer (BST) 模型,該模型用 Transformer 來建模用戶的行爲序列,學習用戶行爲序列內部的相關性及其與打分 item 之間的相關性。
圖5. BST模型
BST 模型的結構如圖5所示,模型將用戶行爲序列(包括打分 item)、用戶側特徵、商品側特徵、上下文特徵、交叉特徵做爲輸入;首先經過 Embedding 技術將其 embeds 爲低維稠密向量;爲了更好的學習用戶行爲序列內部的相關性及其與打分item之間的相關性,經過 Transformer 來學習每一個用戶行爲序列的深度表示;而後將用戶側特徵、商品側特徵、上下文特徵、交叉特徵和 Transformer 層的輸出concat 在一塊兒獲得樣本的特徵表示向量,並利用三層的 MLP 網絡來進一步學習特徵表示向量更抽象的表達和特徵之間的交叉關係;最後經過 Sigmoid 計算模型的輸出。
模型經過 Transformer 來建模用戶行爲序列,首先經過 Self-Attention 學習用戶行爲序列內部之間的相關性及其與打分 item 之間的相關性。考慮向量的物理意義,使用內積來計算attention,這樣兩個 item 越相近,內積越大,attention 增益越大。並採用 Mutil-Head Attention 的方式,有效的將序列特徵放到多個平行的空間進行計算,提高模型的容錯性與精準度。
其中,爲投影矩陣,E 是用戶行爲序列與當前打分Q進行拼接後的 Embedding 表示,,h 是 head 數。
爲了進一步加強網絡的非線性表示能力,將 Self-Attention 的輸出作一層 Point-wise Feed-Forward Networks (FFN) 。
咱們基於實時排序服務 RTP,在 GPU 集羣上部署了量化後的 BST 模型,對於每個打分 item 列表,RTP 將其拆分後並行打分,實時預測用戶對打分 item 列表中每個item的點擊率。
5.1 視覺體驗優化
5.1.1 基於知識圖譜的標準類目擴展
受種種因素制約,淘寶天貓商品類目體系過於細緻,不符合推薦場景中用戶對商品的主觀分類。咱們與知識圖譜團隊合做,創建了標準類目體系,從語義層面出發,結合場景的特色,將相近的葉子類目進行不一樣程度的聚合,分別應用在購買類目過濾和類目打散時的類目擴展。
圖6. 標準類目體系
5.1.2 基於圖像指紋的類似圖片檢測系統
淘寶商品素材浩如煙海,類似的展現圖片層出不窮。這種類似常常超越圖片所屬商品自己的屬性,經過商品自己的標題、類目等語義信息已沒法識別這種類似,爲此咱們團隊研發了類似圖片檢測系統,從圖形自己出發來檢測商品素材圖片之間的類似度。
同圖檢測系統以 CNN 做爲分類器,識別商品素材圖片所屬的葉子類目,將最後隱藏層向量做爲圖像特徵向量,並經過向量的類似度來計算商品之間的類似度。爲了加速向量類似度的計算,咱們使用 SimHash 算法將圖像特徵向量進一步轉化成高維圖像指紋,將計算兩個特徵向量距離的問題轉化成計算兩個圖像指紋漢明距離的問題, 在精度損失可接受的範圍內極大地下降了計算複雜度。
圖7. 同圖檢測系統
5.1.3 多維度打散
天貓首頁由大促會場入口和平常頻道構成,大促會場入口包括主會場入口和行業會場入口,平常頻道包括限時搶購、天貓好物、聚划算、天貓閃降和一些精選精選頻道,每個頻道的商品素材都是獨立的,存在必定的重複,若是不加限制,各個頻道之間容易出現類似的推薦結果,這在「寸土寸金」的首頁,無疑是一種浪費,也會傷害用戶體驗,不利於導購心智的培養。爲此,咱們設計了多種打散方案,從多個維度(商品/標準類目/品牌/會場/類似圖片等)對首頁各個頻道推薦的素材進行聯合打散,讓推薦的結果更具多樣性。
5.2 模板式實時曝光過濾
因爲天貓首頁在手機天貓的首屏,用戶每次打開 APP 都會得到曝光,其中就包含了不少無效的曝光,如用戶直接進入搜索頻道、進入購物車或者大促期間來搶紅包雨搶券等,這些無效曝光中用戶對該場景是無意智的。常見的將對用戶僞曝光的商品記錄下來並利用其來進行實時曝光過濾的方法對首頁這種無效曝光率很高的場景來講「太嚴格」了,會使得推薦的效果大打折扣。爲此,咱們設計了一種模板式實時曝光過濾的方法。一次推薦給用戶出多個模板,並記錄用戶上次看到的第 i 個模板,而後在本次給用戶展示第 i+1個模板。若是用戶產生新的行爲,模板的推薦內容也會隨之進行更新。
5.3 用戶及類目個性化的購買過濾
」買了還推「是過去推薦系統常常被詬病的吐槽點,要解決該問題就須要對用戶購買的類目進行合理的過濾。然而因爲每一個葉子類目的購買週期不一樣,不一樣用戶對類目的購買週期也不一樣,所以設計購買過濾時還須要關注不一樣用戶對不一樣類目過購買過濾的個性化需求。購買過濾做爲全部推薦場景都會面對的基礎問題,咱們與工程團隊合做推出了統一的全域購買過濾服務,爲每個類目定製一個購買屏蔽週期,根據用戶最近一段時間內購買的行爲爲每一個用戶維護一個實時的購買過濾類目,同時考慮到若是該用戶在購買屏蔽週期內又主動在該類目上發生了屢次點擊行爲,說明用戶對該類目仍感興趣,有購買的可能,則該類目會被"解禁"。天貓首頁接入購買過濾服務以後,"買了還推"的問題也獲得了大大的改善。
本文從算法的角度介紹了天貓首頁的推薦系統,從召回、排序、推薦機制三個方面講解了咱們如何利用 Graph Embedding、Transformer、深度學習、知識圖譜、用戶體驗建模等多項技術來構建先進的推薦系統。固然,完整的推薦系統是一個複雜系統,構建一個"懂你"的天貓首頁還離不開產品、工程、運營等同窗的合做和幫助。在個性化推薦的道路上,咱們將繼續不斷積累和打磨,深耕技術,創造更好的個性化服務,也相信個性化推薦的將來會更好。