天天看點

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

大家好,我叫李晗。來自阿裡媽媽,今天非常有幸能夠在 AICon 的現場給大家分享一下我們團隊做的工作,我演講的主題是:深度樹比對,下一代推薦技術的探索和實踐。

首先介紹一下我個人。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

我是 2013 年加入阿裡從事廣告算法工作,現在在阿裡媽媽。阿裡媽媽是阿裡巴巴裡面主要負責廣告營收的業務部門,承載了阿裡 50% 以上的收入,我們工作主要的職責也是負責廣告投放的算法。

我目前在阿裡媽媽主要負責三塊工作:第一塊工作主要是整體資訊流廣告的算法政策;第二塊工作是整體展示廣告的比對召回技術體系的建設;第三塊工作是負責雲營銷業務的資料算法。

今天的演講我主要分四個方面來講述:首先我會重點介紹一下推薦問題的技術概要;之後我會從問題出發,講述一下我們提出的深度樹比對方案;接着,我會講一下從深度樹比對來看我們認為的下一代推薦技術面臨的核心挑戰;最後回歸到問題本身,來看一下深度樹比對在下一代推薦技術探索過程中的再思考。

推薦問題和技術概要

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

首先來講第一部分,推薦問題和技術概要。其實前面已經講過了,推薦這樣一個典型應用貫穿于我們的生活中,無論是新聞、音樂、商品還是視訊,各種各樣的推薦應用層出不窮。大家其實平時日常上網,經常能夠使用到這些推薦産品。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

那麼這些推薦業務背後的核心技術是什麼樣的?簡單以淘寶的商品為例,做一個簡單的技術拆解。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

它核心就是根據使用者的請求從海量的商品庫挑選合适商品最終展示給使用者,考慮到系統和算力的限制,大體分為兩個環節:第一個我們叫做 召回環節,又叫比對環節。從海量的商品庫裡面得到一個侯選的商品集合,然後再把這個侯選的商品集合通過更精細的預估模型最終在第二個排序環節展示給使用者。

我今天講的主要内容會圍繞着比對召回階段來講述我們的方法。

對于推薦召回階段,因為它面臨着從全量商品庫裡面,高效召回商品的問題,由于存在系統的性能,這裡我們就需要在這樣一個召回的問題裡面重點去解決兩個關鍵問題:  

第一,怎麼高效檢索,即算的快。高效檢索意味着需要設計合理的檢索結構和檢索政策,能夠在一個系統可容納的時間内來保證可以召回足夠量的商品,或者足夠量的侯選集。  

第二,整個召回的過程雖然算得快,但是不能算得太偏了,還是要把使用者真正感興趣的這些商品能夠召回回來,就是所謂的算的準。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

是以說,圍繞高效檢索和相關整個推薦技術面臨的問題,至少在召回技術層面的話經曆了兩代技術的發展。

第一代的技術發展是我們大家都很熟悉的,以啟發式規則為代表的推薦技術,這裡面的典型代表是什麼呢?協同濾波,基于商品的協同過濾,它的流程拆分如下:

首先會根據各種各樣的行為資料或者文本相似性來計算商品之間的相關關系。然後線上用的時候,擷取使用者的曆史行為,把使用者曆史行為中的商品作為觸發商品,根據相關關系找到和使用者曆史行為相似的商品,作為侯選集來進行整個召回和推薦。這種方法通過在使用者曆史行為裡面找相似的商品,保證了基礎的相關性。與此同時,因為隻找相似的商品,是以系統屏蔽了大規模的計算,使整個召回的過程能夠高效地完成。

但是這類方法其實存在一個很關鍵的問題:在召回的時候,并不能真正的面向全量商品庫來做檢索,系統隻能在使用者曆史行為過的商品裡面找到侯選的相似商品來做召回,使得整個推薦結果的多樣性和發現性比較差。人們經常會诟病說:為什麼點了還推,買了還推,看了還推?

結合這種方法的局限性,研究人員也在嘗試用更先進的方法來解決這個問題,問題的核心是什麼?就是怎麼來做真正的全庫檢索。推薦技術人員借鑒一些圖像檢索問題的方案,提出了 基于内積模型的向量檢索方案,經典代表就是基于内積的 Youtube 的視訊向量推薦方案。

它的具體的方案是什麼呢?

通過離線學習 item 的 embedding 向量,然後通過積量化的方式建構索引,線上上應用的時候,實時計算 user embedding,在索引中查找最近鄰的 K 個 item 作為推薦候選。這裡使用者 embedding,和 item embedding 可以通過使用者對商品的興趣模組化得到。這類方法的核心思想是将使用者和商品用向量表示,用向量内積大小度量興趣,借助向量索引實作大規模全量檢索。

這代技術也是目前推薦召回核心發展的一代技術,我相信有不少公司應該都在上面做了很多的研究,但是現在,我們發現這一代方法存在一些局限性,因為它最終的模式是将使用者描述成一個向量,再把商品做一個向量,用它們的内積表達使用者對商品的興趣。做過預估模型的同學都知道,特征組合對模型效果是相當關鍵的,但在這種方法下,其實不太友善去做使用者和商品之間的特征組合關系,使整個模型能力受限。

我們認為這是現在這一代技術的核心問題,它對模型結構做了很大的限制,必須要求是使用者向量和商品向量的 embedding 在頂層做内積的模型結構。在深度學習領域其實模型結構層出不窮,百花齊放,但是這樣一個特定的結構實際上對模型能力造成了很大的限制。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

是以對于這樣的問題,我們進行了持續的思考:下一代推薦技術應該怎麼去發展?

如果說内積檢索相對于啟發式規則,它打開的是整個全庫檢索的天花闆,要進一步提高推薦效果,我們就需要打開模型能力的天花闆。是以我們在想:能否設計一套全新的推薦算法架構,它允許容納任意先進的模型而非限定内積形式,并且能夠對全量候選集進行更好的推薦。我們今天所講的方案 深度樹比對,就是從這個視角出發做的技術探索。

深度樹比對:下一代推薦技術的探索

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

先來思考一下怎麼做到全庫檢索和先進模型。

我們知道整個召回階段,系統性能是最大的制約,因為一方面要計算使用者對商品的興趣,需要考慮單點的計算消耗 T,同時要考慮對海量商品庫來做檢索的過程,這裡還有個計算次數 N 的問題。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

如果我們引入了先進模型,就使得在單點上的消耗不可避免的增大;如果說要把這個先進模型用到全庫周遊去計算,對于淘寶這樣一個億級的商品庫,要計算一億次,這個 N 又非常大,使得整體的性能不可行。這就造成我們很難将一些排序預估環節的先進模型用到召回階段,這樣的問題好像不是特别容易解決。那怎麼來更深入的去剖析這個問題給出一個解法呢?

我們做了這樣一個推演來重新認識這個問題,如果先進模型要在比對召回階段應用,核心的單點計算消耗是降不下來的,要使得整個系統可行的話,必須要降低 N,也就是計算次數。那麼面向全量的檢索,需不需要對全庫做周遊計算呢?這個答案其實是不一定的,如果說我們能夠設計一個高效的檢索結構,使得系統可以對整個商品庫裡面隻做有限次的計算,就近似等價于對全量做了周遊計算,那就可以使先進模型能夠在這運用。是以說我們整體的方案圍繞的是怎麼建構一套高效的索引結構,來承載先進的模型能力。

有了這樣一個想法之後,我們下一步來看看應該采用什麼樣的方法。

面對複雜的問題,我們知道人腦常用的思考模式是什麼:是确定大方向之後再細化。我們也嘗試從這個角度思考,能否有一個從粗到細的檢索模式,它能夠逐漸判斷和細化,最終給出最優推薦。

基于這樣的思考,我們把探索的方向就定位在使用層次興趣樹來增加檢索效率。例如對一個面向十億商品庫挑 Top 1 的問題,它的計算次數能從周遊的 10 億次下降到 30 次,我們就認為 OK 了。

有了這樣的一個興趣樹之後,實際上隻是有了一個大概的探索方向,并沒有給出具體的實施。在具體的實施裡面仍然要考慮,有如下三個關鍵性的問題:  

怎麼基于樹來實作高效的檢索;

怎麼在樹上面做興趣模組化;

興趣樹是怎麼建構的。

結合這幾個問題的解法,我們建構了深度樹比對技術 Tree-based Deep Match(TDM)這一全新的推薦算法架構的核心。

接下來我會把這個解決方案拆開具體講一下。

BeamSearch

首先講怎麼做高效地檢索。我們假定整個樹結構的葉子層是具體要推薦的商品,然後從上到下,把興趣從粗到細建構了一個平衡二叉樹。那麼要高效的完成 topK 檢索,關鍵點在于自頂向下的過程中能夠快速剪枝。是以我們采用 beamsearch,根據使用者對每層節點的興趣挑選 topK,将每層 topK 節點的子節點作為下一層挑選的候選集合逐層展開,直到最終的葉子層。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

這個方案大家應該很熟悉,每一層節點中挑選 Top K 節點,比如說第一層要挑選的 Top2 是 LN1 和 LN2,展開的子節點是 SN1 到 SN4,在這個侯選集裡挑選 SN2 和 SN3 是它的 Top2,沿着 SN2 和 SN3 它的整個子節點集合是 ITEM3 到 ITEM6,在這樣一個子結合裡去挑 Top2,最後把 ITEM4 和 ITEM6 挑出來。

通過這樣的方式,我們在每一層能夠對非 topK 興趣的節點分支快速剪枝停止搜尋。這樣 topK 召回總體的計算次數是 2*logN*K ,N 是整個葉子個數,這個數量是一個可控的計算量,使得先進模型能夠使用。

但這裡大家會産生一個疑問,為什麼你能夠采用這樣的檢索政策。?

要知其然,還要知其是以然。我們知道,剛才的分析裡面,整個檢索政策依賴于使用者對樹結構上的每個節點的興趣判别來挑選 TopK,而興趣判别的依據是來自于它的興趣模組化。是以我們興趣模組化的核心是要能夠承載剛才提出來的 Beam Search 檢索方案的。

最大堆樹

這裡我們提出了興趣最大堆結構。直覺上這麼來了解:使用者對樹上的每個節點的興趣是正比于對這個節點子節點興趣的最大值。這是一個假設,我們希望能夠建立一個模型,滿足這樣的最大的興趣。

基于這樣的性質,我們來看一下它有什麼樣的好處?

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

如果使用者對葉子層這麼多節點中的 ITEM8 是最感興趣的,我們就知道,該使用者應該對 SN4 的興趣也是最大的。因為根據最大堆的性質,父節點的興趣等于子節點興趣的最大值。同樣,我們也可以推導出使用者對 LN2 的興趣應該是最大的。那麼在自頂向下檢索的時候,我們就可以每層隻挑 Top1 節點,沿着 Top1 子節點展開繼續檢索,保證這樣的檢索方式能夠最終挑選到 Top1 葉子節點。我們在這裡提出興趣最大堆這樣模組化結構,本質上是來承載高效的檢索政策。

接下來就談到另外一個核心問題:有了這樣的興趣模組化方案,模型該怎麼進行學習?

我們擁有的資料是使用者對具體商品的行為回報,這可以幫助我們模組化使用者對葉子節點的興趣,得到葉子層節點的興趣序關系。但是如何學習最大堆形式的中間層節點興趣則是問題的關鍵點,例如對中間節點 LN1、LN2、SN2 還有 SN3 這樣節點的興趣。最大堆模型給出了使用者對中間節點的興趣模型定義,我們可以從葉子層的興趣序關系根據最大堆性質推導出樹結構上每一層節點的興趣序關系。然後讓深度學習模型分别去拟合每一層的興趣序關系即可。

具體實踐中,我們将每一層興趣的序關系估計還原成興趣點估計,然後建構符合滿足最大堆機率性質的樣本,牽引模型去拟合樣本,進而逼近最大堆性質。注意這裡我們并沒有使用一些結構化正則去限制每一層機率滿足最大堆性質,因為我們發現這樣的方法求解起來非常困難,是以用樣本牽引模型的方式更輕巧的來解決。

那麼具體怎麼做呢?假設使用者對葉子層 ITEM6 這樣一個節點是感興趣的,那麼可以認為它的興趣是 1,同層其他的節點興趣為 0,進而也就可以認為 ITEM6 的這個節點上述的路徑的父節點興趣都為 1,那麼這一層就是 SN3 的興趣為 1,其他的為 0,這層就是 LN2 的興趣為 1,其他為 0。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

通過這樣的樣本分布,就可以滿足興趣最大堆的性質,接下來隻需要讓模型去拟合樣本分布就 OK 了。在這裡我們總結一下采樣方案:從葉子層确定正樣本節點,那麼就可以沿着正樣本上溯确定每一層的正樣本,其他的同層采一些負樣本,建構用于每一層偏序學習模型的樣本。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

基于這樣的性質,我們來看一下最開始提出的問題:怎麼承載先進模型。

因為我們通過整個樹的結構和最大堆性質,建構了模型的樣本,而真正對于每個模型要學習的時候,它隻關心它的模型是否足夠拟合樣本就可以了。我們在這裡就并沒有要求模型一定要把使用者特征和 item 特征轉換為頂層向量内積的形式,而是給模型很大的自由度,隻要去拟合好足夠的樣本,那麼任意的模型都是 OK 的。我們的做法使得整個模型結構和檢索結構解綁了,進而使得任何模型都可以用在這樣一個召回的問題上來,同時結合高效的檢索政策,實作召回階段模型能力的提升。

具體在興趣模型設計的時候,我們的核心考慮是:怎麼讓候選的節點和使用者特征進行自動的特征組合學習?我們在這裡引入了 attention 結構,給使用者行為序列設計了不同的時間窗,對使用者行為序列做有權重的挑選,來實作對使用者多峰興趣的捕捉。

第三個方面,就是整個樹結構是怎麼生成的。

假定葉節點對應具體的 item,我們的目标是建構一個好的樹結構來優化我們的檢索效果。通過前面的分析知道,對于葉子層的樣本我們通過使用者行為回報得到,而中間層的樣本則通過樹結構采樣得到。是以樹結構決定了我們中間層的樣本。

我們從頂向下的檢索政策,利用的是我們對每一層節點興趣模組化進行快速剪枝,要保證最終的檢索效果,就需要我們每一層的興趣判别模型能力足夠強。由于樹結構負責我們中間層的樣本生成,是以我們的思路是通過優化樹結構影響樣本生成進而提升模型能力。具體來說,通過樹結構優化降低中間層的樣本混淆度,讓中間層樣本盡可能可分。

是以,整個樹結構的生成建立和優化的過程,實際上是圍繞着怎麼來生成更好的樣本、幫助模型學習的視角進行的,而不是隻是考慮相似、聚類這樣的模式。那麼這裡的核心方案是什麼呢?

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

考慮到我們的葉子層樣本來自于使用者行為序列,對于同一個使用者,其行為序列中相近的 target item 構成的不同樣本。設計樹結構讓中間層樣本樣本盡可能可分,具體來說,就是相近的 X 所對應的 Y 的标簽也盡可能的相近。在具體的實作上面,相近的 X(即使用者行為序列中間的一些抽取的片斷)對應的真實的标簽 item pair,我們希望它在樹上的距離盡可能足夠的近,通過這樣一種規則來建立樹結構,能夠使得檢索的效果有大幅度的提升。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

到這裡,我們來對深度樹做一個算法總結。

首先我們提出了 BeamSearch 方案來實作對樹上面的高效檢索;然後提出了興趣最大堆的興趣模組化的方案,通過生成樣本,用樣本遷牽引型拟合,去滿足這個最大堆性質來做興趣模組化;最後我們通過讓樹生成盡可能可分的樣本去建立樹結構,這就是我們整個方案的核心。

講述到此,聽衆可能會有這樣兩個問題:這個方案并不簡單,是否給效果帶來足夠大的提升?同時這麼一套複雜的方案,意味着要把排序階段那麼複雜的模型引入到召回階段,工程能力是否足夠的去支援真正線上應用?

為了回答這些問題,我們先分享一下結果。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

首先,我們認為這樣的技術實際要通過離線和線上的驗證。通過離線端我們構造了一個基于淘寶資料的大規模資料集名為:User behaviour,我們在這個資料集上面驗證了三代方法的對比,可以看到我們的方法獲得了顯著的離線效果提升。去年 KDD2018 也收錄了我們的論文,大家感興趣的話,可以看一下相關的論文。

另外,從線上效果來說,我們用這樣一套方案,已經承載了整個阿裡資訊流廣告流量 80% 召回工作,同時能夠支援對千萬量級 AD 的全量檢索,核心的業務場景取得了顯著效果提升,是以從算法效果是足夠有信心的。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

從工程實踐來說,整個工程架構離不開我們的工程團隊強大的支援。線上端:我們對整體的架構做了抽象化的設計,把它拆分成了三個環節:

首先是使用者定向服務,叫做 user targeting service,它能夠負責對使用者行為序列、使用者特征的基礎組織;其次,我們還建構了 deep searching service,它用來做整個樹的索引建構和檢索的過程;此外,考慮到在這個過程中要進行複雜的模型計算,我們建構了 model serving 這樣的服務來專門支援高效的 GPU 計算。通過這三個環節,我們形成了高效的線上方案。通過跳層檢索,多路并行等方案,我們在真實廣告業務中,從千萬量級廣告庫召回 top2K,整體鍊路 rt 增長不超過 5%。離線端依托于阿裡即将開源的 X-Deep Learning 架構,我們能夠支援千億級樣本 & 十億級特征的離線訓練。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

到這裡,我對整個深度樹比對方案進行總結和思考。

我們從一個本質性的問題出發:怎麼從全量的商品庫裡面高效檢索 TopK 的相關商品;為了解決這個問題,我們提出一套全新的推薦算法架構,它能夠支援全庫檢索和先進模型。在此過程中,我們提出了興趣最大堆的結構,通過興趣最大堆這樣一個結構,決定了我們的檢索政策可以采用 BeamSearch 這樣的方案,同時興趣最大堆結構又闡明了樣本是怎麼生成的,進而指導了樹結構是怎麼優化的。此外興趣最大堆又給出了興趣模組化,同時推導出用樣本牽引模型學習的方案。回顧整個流程我們知道興趣最大堆連結了推薦技術的三個核心環節,索引建構,興趣模型和檢索政策,形成了統一架構。

而我們又跳開這個層面深入思考一個新問題:興趣最大堆性質本身源于資料中學習得到,是以我們思考下一代推薦技術不止于全庫檢索 + 先進模型,而是資料驅動下三者(索引,模型,檢索)的聯合優化學習。

下一代推薦技術的核心挑戰

沿着這樣一個思路,我們來看一下深度樹比對在這樣一個全新的視角上,面臨的挑戰是什麼。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

如果說下一代推薦技術應該圍繞的是索引結構、模型能力和檢索政策的聯合端到端學習,那麼在這樣一個大的目标下面,深度樹比對要成為下一代推薦核心技術,我們認為仍然存在 3 個方面的問題:  

第一個問題是:它能不能真正做到資料驅動的端到端的子產品優化?

第二個問題是:它如果成為一代技術,那麼應該具有業務的普适性,不應該隻停留在商品推薦、視訊推薦、新聞推薦等業務,它該怎麼做到業務賦能下的端到端的聯合優化?

第三個問題是:為了能夠适應不同的場景以及不同的推薦業務,它一定要抽象出公共可複用的子產品來做平台性的輸出。

圍繞這三個問題,我們把深度樹比對進一步做了疊代和探索。

端到端的子產品優化

首先是端到端的子產品優化。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

這裡重點講一下樹結構和模型是怎麼聯合優化的。因為樹結構會影響中間層的樣本生成,那麼從模型視角來看,模型效果不好的話,一般就是把樣本錯分了。但是樣本錯分這樣一個具體事實,背後又可能有兩個原因:第一個原因就是模型确實訓練的不好;第二個原因是可能樣本标簽本身打錯了,比如說樹結構本身生成的樣本标簽打錯了。

是以我們提出了一套方案:優化模型和優化樣本标簽交替進行,來實作樹結構和模型的聯合優化方案。最開始先生成一個初始的樹,根據這個初始的樹去訓練模型,有了模型之後,再對資料進行判别,找出哪些樣本标簽打錯了,進而進行一些标簽的調整,相當于做一些樹結構的調整。完成一輪新的樹的結構的調整之後,我們再來做新的模型學習,實作整個交替的優化。

端到端的流程優化

第二部分是怎麼在業務賦能下面來做到端到端的流程優化。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

舉個具體的例子:廣告召回的時候,不是考慮興趣最大化召回,而是考慮收入最大化召回,我們叫做 ECPM。從公式上講,它包括 PCTR×BID,PCTR 是預估點選率,BID 是廣告主的出價。

由于這個 ECPM 是通過公式得到的,它是兩個因子的乘積,是以很難根據使用者直接對一個商品是否有興趣這樣一個隐式的回報學習得到。那麼對于業務目标的最大化召回,怎麼來改善整個深度樹比對的方案,使得它能夠适應業務目标,就是我們探究的一個問題。

我們借鑒深度樹比對方案來改進,核心是學習一個 ECPM 最大堆,具體的學習方式是通過建構滿足 ECPM 最大堆性質的樣本去牽引模型拟合這樣的 ECPM 最大堆。可以假設我們已經得到了從葉子層随機抽取的一些樣本,基于一些預估子產品和後續的回報子產品可以知道使用者對葉子層樣本的 ECPM 值。

根據葉子層的 ECPM 樣本,可以單獨去拟合葉子層的 ECPM 樣本,進而得到一個葉子層的 ECPM 預估模型,有了葉子層的模型,就可以在倒數第二層随機取一些節點做樣本,如果沒有這些樣本 ECPM 值就無法去學習,怎麼建構這些樣本的 ECPM 值呢?根據葉子層的模型再考慮最大堆性質,比如現在采了 SN2 這樣一個節點,要建構它的樣本,可以通過葉子層的模型預估得到 ITEM3 和 ITEM4 的 ECPM 值,根據最大堆的性質,就能夠知道 SN2 的 ECPM 值。這樣就生成了倒數第二層的 ECPM 樣本,進而就可以構模組化型去拟合倒數第二層 ECPM 模型,逐層往上溯,以完成整個 ECPM 最大堆的學習。

平台能力輸出

第三個挑戰就是整個平台能力的輸出。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

這裡我們計劃搭建一套通用架構,其中核心能力包括三個部分:

第一部分是可學習的樹型的索引結構;

第二部分是能夠支援靈活的層排序深度模型,比如 DIN,PNN 等;

第三部分就是我們能夠面向業務目标,能夠定制全局最優化檢索方案。

那麼對于推薦召回問題,可能很多人會關心樹結構是怎麼更新的,比如新聞推薦,如果現在就有新的新聞,要怎麼被這個樹的結構捕捉到。實際上我們已經給出了一個方案:對于實時更新的新鮮事,可以根據一些 sideinfo,找到和目前的新聞相似的新聞,挂載到它們的最相近的父親節點上,保證初始的召回。有了初始的召回之後,就可以積累資料,有了資料之後,就可以通過實時更新,增量學習的方式,實作整個樹型索引和層排序模型的學習,來達成整個樹結構的更新。

下一代推薦技術探索的再思考

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

最後再講一些内容,是對深度樹比對再進一步的思考。

要完成從全量商品庫裡面高效檢索 TopK 商品這樣一個推薦問題,實際上最核心關注的是三個大的子產品:檢索、模型和索引。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

索引決定了整個資料的組織結構,它承載的是模型能力和檢索政策,實作檢索的快速準确。檢索實際上是面向目标,它需要和索引結構相适配。模型支撐的是整個檢索效果的優化。

我們認為,在資料驅動下的三者聯合學習,才能實作整個推薦效果的最優化。之前的兩代發展,可能索引、模型和檢索的政策往往是分離的優化,那麼接下來要進一步去優化它,我們考慮的是怎麼讓它進行聯合優化學習。是以說深度樹比對這樣一個方案,還會沿着聯合優化學習的方案持續的去探索創新。

第二,我們嘗試把深度樹比對方案跳出推薦業務,再來看一下,它有哪些橫向和縱向業務的發展空間。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

從算法鍊路視角看,使用者得到最終的結果經曆了召回、CTR 預估 Rank 和最後的政策,TDM 更多承擔的是召回的工作。我們現在是獨立在優化召回結果,從孤立的優化,到協同 Rank 聯合一起關聯的優化,可能是 TDM 接下來的一個發展的方向。

同時我們從技術和業務的視角來考慮擴充,因為現在網際網路的核心主流業務還是離不開搜尋、推薦和廣告,那麼 TDM 這樣一套召回方案,能不能實作技術和業務上的擴充,能适應更大的業務需求,仍然需要持續探讨的。比如說怎麼來适配搜尋,怎麼來适配廣告。

最後來講一下我們對 TDM 的心态。

阿裡媽媽新突破!深度樹比對如何扛住千萬級推薦系統壓力

我們認為一個優秀的技術不單單是先進的,它更應該是共享的。是以說圍繞 TDM,我們會打造三個計劃:

第一個是賦能計劃。我們希望建立一些産研合作,能夠幫助其他業務和應用落地我們這套架構,帶來效果提升。這一塊我們是抱有非常開放的心态,願意去推動這樣的一些行業内的合作。

其次是我們的合作計劃。因為我們現在整個 TDM 在技術先進性和理論上面還有很多需要突破和優化的地方,是以說我們考慮和研究所、高校建立科研合作,來使得這一技術在關鍵點上有所突破。

最後是開源計劃。我們希望把整個 TDM 從離線到線上 Serving 到離線訓練的整個代碼架構開放出去,希望能夠吸引更多的仁人志士,一起來參與我們的項目,共同疊代和探索,能迸發出新的火花,這是我們的整個開源計劃。

整個阿裡 XDL 的架構,已經在 Github 上進行代碼開源了,TDM 的離線訓練架構,也是作為 XDL 的架構的核心元件一并開源了。圍繞 TDM 我們不僅會開源離線架構,還要開源它的線上 Serving。我們也安排了 TDM 一期二期和三期的開源計劃,希望能夠引起大家關注,希望大家多給意見,共同探讨。