zz阿里媽媽深度樹檢索技術(TDM)及應用框架的探索實踐

 

 

分享嘉賓:何傑 阿里媽媽 高級算法專家git

編輯整理:孫鍇github

內容來源:DataFun AI Talk算法

出品社區:DataFun性能優化

注:歡迎轉載,轉載請註明出處網絡

 

導讀:阿里媽媽是阿里巴巴集團旗下數字營銷的大中臺,2018年廣告營收超過1500億,近乎佔據中國廣告市場收入的半壁江山。如何驅動這艘商業航母不斷前行,阿里媽媽技術團隊始終堅持技術創新驅動業務增加的戰略,而 TDM 正是在這一戰略指導下,由阿里媽媽精準定向廣告算法團隊自主研究、設計、應用從而創造巨大商業價值的創新算法典型表明。架構

今天的主要內容分爲四個部分:框架

1. 從互聯網推薦業務看檢索技術發展示狀函數

2. 深度樹檢索 ( TDM ) 的設計原理和具體實現 性能

3. 深度樹檢索技術對於線上業務場景的適配應用學習

4. 咱們對下一代檢索技術將來發展的思考

▌從互聯網推薦業務看檢索技術發展示狀

檢索技術,是互聯網推薦、搜索、廣告的通用底層技術組成。

一提到檢索技術,你們首先會想到搜索引擎,可是從另一個視角來看,搜索、推薦、廣告其實是一脈相承的,他們的檢索能夠統必定義爲:從全量的物品裏面,挑選出來用戶感興趣的物品。不一樣的是,搜索中 Query 詞顯式表達了用戶意圖,而在推薦中每每利用的是用戶隱式表達如歷史行爲、用戶屬性等,而廣告則是在搜索/推薦上進一步施加了廣告出價的影響。

咱們認爲檢索技術的發展是數據、算力、算法相輔相成,協同做用的結果,具體表現爲:

最初,數據少因此候選 Items 規模比較小,用很小的算力和簡單的算法,就能夠一步到位(如全量過一遍候選)計算出來用戶感興趣的 Items 是什麼;

然而,數據在不斷膨脹,尤爲是隨着近些年移動互聯網的發展和移動設備的普及,使得咱們的數據開始呈現爆炸式的增加,從而致使咱們的候選 Items 規模也大幅增大,一步到位或者說原來的檢索方式已經沒法支撐這種量級的數據。

怎麼辦?在如此大規模數據下,算力和算法如何適應性設計呢?咱們首先來看一下算力的發展,在十幾年前咱們的算力主要仍是以 CPU 通用計算爲主的算力體系,算力相對比較有限。大數據+有限算力,就要求咱們對算法進行適應性設計,因而 Match+Rank 分段漏斗的算法架構被引入:從超大規模候選集中,先 Match 出小規模候選集,再經過 Rank 的方式排序出最終用戶最感興趣的 Items。逐漸地,Match+Rank 的模式成爲了現在檢索體系的主流架構。

數據在發展,算力體系也在發展,尤爲是隨着近十年來 GPU 大規模應用的興起,造成了 CPU+GPU 異構計算的算力大融合。在大數據+大算力的現狀下,咱們開始思考,檢索算法架構是否是能夠再升級?相似於歷史中的「合久必分,分久必合」:咱們是否是能夠突破 Match+Rank 的分段漏斗模式,將檢索問題做爲一個端到端總體去設計和聯合優化?這就是咱們今天要探討和思考的問題,也是 TDM 的由來。

咱們怎麼來思考檢索架構升級呢?首先須要對檢索自己進行深刻分析,而做爲檢索的第一階段,咱們先從 Match 入手。Match 的核心任務是從全量的超大規模的候選集中高效的檢索相關 TopK,而後交給後鏈路好比 Rank 作進一步處理。好比在電商場景,咱們有大規模商品庫,大概是十億量級,咱們會作 Match 召回千到萬級別的 TopK,送給後鏈路作 Rank。

相似於受算力侷限下檢索 Match+Rank 兩階段的設計,Match 自己也受到算力侷限的影響,因此它的經典實現也是兩段式的,好比:

  • 搜索場景下,兩段式的表現,就是 User 到 Query-rewrite,Query-rewrite 到 Doc;

  • 推薦場景下,兩段式的表現,就是 User 到 Interest-tag(如品牌),Interest-tag 到 Item。

這裏存在的問題是兩段式相互隔離,好比咱們對 User 到 Query-rewrite 進行優化造成各類匹配算法,而後對 Query-rewrite 到 Doc 優化造成倒排索引。這種兩段式缺乏聯合優化,而且受限於線上性能影響,兩段式的各個階段的標籤數量是有截斷的,效果(如全量發現能力)上就存在侷限。

Match 兩段式的經典實現如圖中 Item-CF 所示,這裏不作過多論述。如前述說的,它的優點是模型比較簡單,實現成本較低,劣勢是兩段式沒法聯合優化,各階段的標籤截斷致使效果受限。由此,咱們天然會想到一個問題:兩段式有缺陷,那咱們是否能夠改成一段式?

答案是確定的,那麼一段式要怎麼作?

在推薦和相關領域,簡單的一段式全庫檢索的經典表明,其實借鑑了圖像檢索的算法,即:內積模型的向量檢索。它經過各類方式學到了 Item 的 Embedding,而後經過 PQ 方式構建分庫索引,檢索時實時計算 User Embedding,作最近鄰 TopK Item 檢索。內積模型向量檢索在 Facebook 17年開源了 FAISS 庫後,獲得了普遍的應用。這種一段式全庫檢索,在發現能力上具備必定優點,但缺點是模型比較簡單,能力有限。這裏以 PCTR 預估爲例,內積模式的 DQM、Attention 的 DIN、Attention+GRU 的 DIEN 作比較來看,內積模式的 AUC 是最低的,間接證實了內積模型是存在能力侷限的。

另外,這種模式下索引構建和模型優化的目標存在不一致。積量化索引的優化目標是最小化近似偏差,而向量檢索(召回問題)的優化目標是最大化 TopK 召回率。因此因爲二者優化的目標不一致,這會致使最終效果並非最優的。

咱們總結一下 Match 中檢索技術的發展歷程,不難發現,檢索技術是模型能力和索引效能的融合:

  • 基於商品的協同過濾(Item-CF),模型能力:啓發式統計規則,沒有學習成分;索引效能:分離兩段式;問題:非學習模型,非面向全庫索引;

  • 內積模型向量檢索,模型能力:內積模型;索引效能:全庫一段式;問題:內積模型相對簡單(問題:爲何是內積而不能是其餘更復雜的模型如 DNN?留給讀者思考);索引和目標之間沒有聯合優化。

那麼面對這樣的現狀,下一代模型,咱們要如何發展?答案是:更先進的模型、更先進(高效)的索引。

深度樹檢索 ( TDM ) 的設計原理和具體實現 

應用先進模型,咱們天然想到了深度學習模型,但它的引入會帶來額外的問題:

① 深度學習的單點計算消耗 T 較大,在性能有界的狀況下,咱們的計算次數 N 不能過大;

② 要實現面向全庫的檢索,N 越大越好(最大時即爲候選集 size),在性能有界的狀況下,與上述 ① 產生了矛盾;

如何解決這一矛盾?仍是「檢索技術=模型能力+索引效能」,也即模型的升級須要索引結構的升級來適配,因而咱們的核心任務變爲:創建一個高效的索引結構來承載先進的模型能力。高效索引有不少,散列表、圖等都有一些弊端,最終咱們選擇了樹這一層次結構(如圖所示)。

以十億商品爲例咱們能夠構建一棵30層的樹,檢索 Top1 咱們只須要計算30次。

基於以上這些考量,咱們提出了 Tree-based Deep Match(TDM)這個算法,具體咱們須要進一步解決如下四個問題:

① 如何基於樹實現高效檢索?

② 如何作興趣建模保證樹檢索有效性?

③ 如何學習興趣模型?

④ 如何構建和優化樹索引結構?

接下來,咱們會以淘寶的商品推薦爲例,作一個關於 TDM 設計和實現的詳細介紹,來幫助你們理解。

如何作高效檢索?不失通常性,假定咱們的樹是一棵徹底二叉樹,所有葉子節點表明所有商品,中間節點表明某種意義上的粗粒度聚合(例如「iPhone」是商品,做爲葉子,「手機」是該商品的類別,做爲父節點;可是這裏須要說明,在一般的 TDM 樹中,咱們並不要求中間節點必定存在具體物理意義)。

樹上如何作高效檢索呢?咱們採用了 BeamSearch 這種方式,自頂向下,作快速剪枝。

BeamSearch 檢索方式如圖中右側流程所示:假設要尋找最優 Top2 個 Item,第一層有兩個子節點,打分排序選出 Top2(只有2個,全取);擴展出第二層四個子節點,打分排序選出 Top2;擴展出第三層四個子節點,打分排序選出 Top2,達到葉子層,最終返回 Top2 個 Items,查找複雜度爲 O(2*K*log2N),K 爲返回個數,N 爲葉子個數。

衍生問題:爲何該檢索策略檢索出來的 Top2,必定會是用戶感興趣的 Top2呢?即 BeamSearch 的有效性要如何保證?

有效的檢索背後蘊藏了有效的興趣建模,也即,要如何建模,使得 BeamSearch 檢索有效。

爲此咱們提出了興趣最大堆樹的概念:用戶對 n 節點興趣的偏好,是用戶對 n 節點的孩子節點們的興趣偏好,取 max 後,在 n 所在的節點層作歸一化。如圖中右側樹所示,SN4 的興趣偏好:

PSN4=normalization(LayerSN, max(PItem7, PItem8)) 

在這樣的假設下,有個很好的性質:最大堆樹下,當前層最優 TopK 節點的父親,必定屬於上一層的最優 TopK。

以右圖舉例:若是 Item8 和 Item6 是葉子層最優 Top2,那麼根據咱們以前的描述,SN4 和 SN3 是 SN 層的最優 Top2。

所以,最大堆樹的定義是 BeamSearch 有效的充分條件。因此咱們能夠從根節點遞歸向下,逐層挑選 TopK,而後擴展至葉子層。

咱們如何學習最大堆樹的模型?BeamSearch 檢索本質上要求具有對每一層進行 TopK 排序的能力。咱們的作法是:構建符合這樣性質的樣本,讓樣本牽引模型學習,去逼近最大堆。

  • 具體思路:

葉子層的節點興趣比較容易構建,由於用戶對葉子層的節點是有行爲產生的,有行爲/沒有行爲對應感興趣/不感興趣,以此來構建序標籤;中間節點,用最大堆遞歸上述的方式去推導每一層的序標籤;當咱們有了每一層的序標籤,就能夠用深度學習去擬合序標籤的樣本

在實際操做中,咱們沒有用序樣本去構建序模型,而是把序估計還原成點估計,此處能夠理解爲把排序模型轉換成分類模型。

有了分類樣本以後,就可讓模型去擬合,牽引模型學習逼近最大堆性質。

  • 採樣方案:

咱們認爲綠色表明正樣本,紅色表明負樣本,若是用戶對 Item6 節點有訪問,那咱們認爲用戶對 Item6 節點是一個正興趣,咱們在當前的葉子層作隨機的負採樣,那麼上一層怎麼作呢?正樣本上溯路徑的祖先仍然爲正樣本,而後每一層再作負採樣,因此這樣就固定出來每一層的正負樣本,這樣整個樹的樣本都已經固定完畢。

有了正負樣本,咱們就能夠用任意複雜模型去擬合 label。能夠看到這樣模式的優勢:

咱們剛剛一直在提要用先進模型或者深度模型,這裏發現最大堆樹的訓練模式和檢索階段的效率保證了能夠基於在線檢索的性能約束(上界)來決定能夠用多複雜的模型達到最高的檢索效果。

上圖爲具體的模型結構,能夠看到:

  • 先進模型網絡結構:採用以 Attention 爲核心的多層深度神經網絡,實現對多峯興趣的強大判別,F1(Precision 和 Recall 的調和平均數)提高了16%。

  • 時空兼顧特徵表徵:以序列化建模用戶特徵的時序表達,對時序特徵進行樹上溯(Hierarchical Representation)實現用戶特徵的層上空間歸約,F1 又提高了18%。

樹結構在 TDM 算法中所扮演的關鍵角色:樹不只決定了檢索的索引結構,更是決定了用於模型學習的樣本分佈,因此樹結構的「好壞」直接決定了最大堆樹模型學習的效果上界。

不失通常性假定咱們的樹仍爲徹底二叉樹,葉子節點爲 n 個,那樹的本質其實就是如何將 n 個商品一一投射到 n 個葉子上去,也即樹的形式化定義是找個一個 π 映射實現 n 對 n 的二部完美映射。那怎麼樣的樹是好的樹呢?也即何種 π 映射是最優的呢?從左下圖能夠看出來,右側的樹結構更優,由於它隱含了性別分類,可使得 TDM 模型學習得更好(上限更高)。

爲了達到模型和樹的聯合最優化,咱們創建了統一的全局經驗損失函數(如右上公式),並經過交替迭代的方式進行模型參數 θ 和映射函數 π 的聯合優化。其中 π 的優化是一個帶權二部圖的最大匹配問題,複雜度比較高(O(n^3)),爲此咱們創建了右下的貪心近似算法(Algorithm2)來優化 π。最終的效果是這種聯合優化讓 F1 提高近10%。

PS:這裏有現場同窗提問

Q:前幾頁的最大堆樹學習裏有正負採樣,爲何「統一的全局經驗損失函數」裏面沒有負樣本項了?

A:爲了實現統一 Loss,咱們這裏對 TDM 模型進行了建模變換,從以前的二分類轉換到了多分類,即將層上用戶興趣建模成用戶對當前層上的所有樹節點作多分類問題。上述統一 Loss 即爲多分類建模下的標準交叉熵 Loss,其中的 p 爲歸一化機率。在實際實現方式上,咱們採用了負採樣 + NCE 的方法來近似多分類 Softmax。因此上述統一 Loss 裏面確實沒有了負樣本項,「負樣本」是以 NCE 方法中的負採樣方式表現了。

 

TDM 在 AmazonBooks 和 TaobaoUserBehavior 兩個公開數據集上進行了測試。相對於基線的 ItemCF 和 Youtube 內積模型,TDM 的提高很是顯著。咱們也對 TDM 各類優化作了單項拆分分析,Attention、HierarchicalRep. 和聯合學習的效果如以前所說,其中三者的聯合效果達到了1+1+1>3。

回到最初的圖中,咱們再次發現:檢索技術是模型能力和索引效能的融合。

從這個角度,你們思考一下,TDM 爲何能夠解決這個融合呢?咱們實現了對更先進模型,即深度學習模型的融合;其次,咱們實現了更先進索引,採用了樹結構來作索引,有別於經常使用的倒排索引,而且咱們的樹結構是一個與模型適配且聯合學習的樹。

總結一下 TDM 提出、設計和實現的脈絡:

  • 目標:解決從超大規模全量商品庫中高效檢索 TopK 商品的問題

  • 思考:但願由先進模型帶來性能/效果的提高;爲賦能先進模型,須要高效索引;由此產生最大堆樹的理論建模

  • 探索:基於最大堆樹,咱們連接了 BeamSearch 檢索下深度學習模型和高效樹索引聯合學習的方式,造成了基於學習樹的全庫索引的檢索框架。

深度樹檢索技術對於線上業務場景的適配應用

原生 TDM 是興趣最優的檢索方案,可是在實際業務中,有些業務目標不必定是興趣最優。例如在廣告業務中,咱們要考慮 ECPM 最優。那麼,咱們要如何改造 TDM,使得其能夠知足不一樣的業務目標?

這裏面有以下挑戰:

  • 算法要從理論上進行升級適配,使得最大堆樹的建模適配業務指標;檢索也須要改造,在總體鏈路的設計上要考慮多目標融合,使得檢索體系能夠支持多個業務目標

  • 此外,克服性能瓶頸,實現檢索功能的真正在線應用,也須要一段路要走。

「興趣最大堆」改形成「任意指標最大堆」的過程當中,也存在一些問題,好比:「興趣」是二值問題,即感興趣/不感興趣,能夠抽象成分類問題;而在廣告中,「ECPM」是一個連續問題,即 ECPM 是一個連續的數字,更適合抽象成迴歸問題。基於這個現狀,咱們須要思考,如何構建這樣的 TDM 模型。

仍然以廣告爲例:因爲葉子層是每個具體的 Item,那麼這些 Item 的 ECPM 是能夠計算的(因爲 ECPM=PCTR*BID*1000,咱們能夠經過其餘的模型計算 Item 的 PCTR,BID 經過查找/統計的方式能夠獲得),因此咱們有葉子層的全部 Item 的 ECPM 值。因此咱們能夠經過 max 上溯的方式,將其引入到咱們的最大堆樹中來,也即:

PParent1= max(PItem1, PItem2)

上一層的節點值爲該節點的孩子節點的最大值,此處不須要歸一化。並以此方式遞歸上溯生成整棵樹,並在檢索的時候遞歸往下完成 TopK 檢索。

因爲一個模型並不能適配全部的場景,知足全部目標(例如:廣告業務考慮廣告收入的最大化;電商業務考慮電商成交最大化等),所以,咱們對檢索模型作了另一個改造,也即:分模型聯合檢索框架,上層是公共部分,對通用的功能作抽象,下層是業務部分,根據業務現狀作設計,兩部分實現並行調用。

雖然 TDM 理論上能夠支持任意深度模型,但實際應用中,咱們仍然須要考慮在線檢索 Bound 的約束。在一開始上線之初,TDM 的 RT 增量達到了 60ms,對於阿里媽媽的在線廣告鏈路徹底不可用。但經過後續的包括通訊、計算、鏈路等優化,最終 TDM 實現了上線後 RT 增長接近於 0ms 的良好性能。

現階段 TDM 主要接入了阿里媽媽定向廣告的 Match 階段,包括 Shop/Node/Item 已經全量上線,覆蓋了阿里媽媽定向廣告主要場景的大部分流量,CTR 和 RPM 的效果提高都達到了兩位數。

最後,從學習樹全庫索引的檢索,咱們進一步把 TDM 擴展到了通用的業務應用框架。左邊縱向爲基於學習樹全庫索引的超大規模檢索是如何設計的,右邊縱向爲如何應用 TDM 到線上業務,包括改形成業務最大堆樹,而後面向業務的高性能優化和多層多模型的設計,最後真正應用於實際。

咱們對下一代檢索技術將來發展的思考

對於將來,咱們但願將創新推向一個新的高度,固然這隻靠咱們一個團隊是很難作到的。結合當前 TDM 在阿里媽媽的應用,咱們但願能在下一個階段,能夠將 TDM 與現有技術作更深層的融合,好比在圖檢索、搜索業務等領域上面作一些優化和探索。

咱們也一直堅持開放、開源的態度。TDM 的離線訓練、在線預測的代碼已經在 github 開源:

  • 離線訓練: 

https://github.com/alibaba/x-deeplearning/wiki/深度樹匹配模型(TDM) 

  • 在線Serving:

https://github.com/alibaba/x-deeplearning/wiki/TDMServing 

咱們也正在集團內部推進 TDM 一站式服務化平臺的建設,第一階段實現 DIMO(Data In, Model Out),第二階段實現 DISO(Data In, Service Out),以期將來能夠實現:算法工程師提供場景內行爲數據,咱們能夠自動化構建 TDM 模型;算法工程師將 TDM 模型提交至雲端,在線服務就能夠自動加載運行,實現 TopK 檢索。

TDM 也還在繼續創新過程當中,包括:

  • 技術方面:實現千人千樹、圖空間加強、檢索最優化;

  • 業務方面:可解釋性,基於樹結構的廣告白盒透出等;

  • 生態建設:學術上正在承辦 CIKM2019 比賽,工業上會持續開放、開源,增強雲端建設能力。

「合久必分,分久必合」,受限於數據發展的爆炸式增加,和計算性能的限制,兩段式 Match+Rank 統治了檢索架構的主流,但在大數據+大算力的大環境下,咱們須要對算法作出改變,爲此 TDM 突破了原有的架構約束,作出了部分創新工做,實現了端到端聯合優化的一體化檢索框架。

當前的 TDM 無論是技術創新仍是業務應用還處在發展初期,咱們相信隨着技術和業務的持續創新,TDM 將來有望發展成爲一個面向搜索、推薦、廣告業務領域的通用的底層框架。咱們也很是歡迎各位能夠一塊兒來探討、應用和改造 TDM 技術,實現更優的檢索效果,取得更大的業務成果!今天的分享就到這裏,謝謝你們。

相關文章
相關標籤/搜索