大衆點評搜索基於知識圖譜的深度學習排序實踐

1. 引言

挑戰與思路

搜索是大衆點評App上用戶進行信息查找的最大入口,是鏈接用戶和信息的重要紐帶。而用戶搜索的方式和場景很是多樣,而且因爲對接業務種類多,流量差別大,爲大衆點評搜索(下文簡稱點評搜索)帶來了巨大的挑戰,具體體如今以下幾個方面:html

  1. 意圖多樣:用戶查找的信息類型和方式多樣。信息類型包括POI、榜單、UGC、攻略、達人等。以找店爲例,查找方式包括按距離、按熱度、按菜品和按地理位置等多種方式。例如用戶按照品牌進行搜索時,大機率是須要尋找距離最近或者常去的某家分店;但用戶搜索菜品時,會對菜品推薦人數更加敏感,而距離因素會弱化。
  2. 業務多樣:不一樣業務之間,用戶的使用頻率、選擇難度以及業務訴求均不同。例如家裝場景用戶使用頻次很低,行爲很是稀疏,距離因素弱,而且選擇週期可能會很長;而美食多爲即時消費場景,用戶行爲數據多,距離敏感。
  3. 用戶類型多樣:不一樣的用戶對價格、距離、口味以及偏好的類目之間差別很大;搜索須要能深度挖掘到用戶的各類偏好,實現定製化的「千人千面」的搜索。
  4. LBS的搜索:相比電商和通用搜索,LBS的升維效應極大地增長了搜索場景的複雜性。例如對於旅遊用戶和常駐地用戶來講,前者在搜索美食的時候可能會更加關心當地的知名特點商戶,而對於距離相對不敏感。

上述的各項特性,疊加上時間、空間、場景等維度,使得點評搜索面臨比通用搜索引擎更加獨特的挑戰。而解決這些挑戰的方法,就須要升級NLP(Natural Language Processing,天然語言處理)技術,進行深度查詢理解以及深度評價分析,並依賴知識圖譜技術和深度學習技術對搜索架構進行總體升級。在美團NLP中心以及大衆點評搜索智能中心兩個團隊的緊密合做之下,通過短短半年時間,點評搜索核心KPI在高位基礎上仍然大幅提高,是過去一年半漲幅的六倍之多,提早半年完成整年目標。算法

基於知識圖譜的搜索架構重塑

美團NLP中心正在構建全世界最大的餐飲娛樂知識圖譜——美團大腦(相關信息請參見《美團大腦:知識圖譜的建模方法及其應用》)。它充分挖掘關聯各個場景數據,用NLP技術讓機器「閱讀」用戶公開評論,理解用戶在菜品、價格、服務、環境等方面的喜愛,構建人、店、商品、場景之間的知識關聯,從而造成一個「知識大腦」[1]。經過將知識圖譜信息加入到搜索各個流程中,咱們對點評搜索的總體架構進行了升級重塑,圖1爲點評搜索基於知識圖譜搭建的5層搜索架構。本篇文章是「美團大腦」系列文章第二篇(系列首篇文章請參見《美團餐飲娛樂知識圖譜——美團大腦揭祕》),主要介紹點評搜索5層架構中核心排序層的演變過程,文章主要分爲以下3個部分:服務器

  1. 核心排序從傳統機器學習模型到大規模深度學習模型的演進。
  2. 搜索場景深度學習排序模型的特徵工程實踐。
  3. 適用於搜索場景的深度學習Listwise排序算法——LambdaDNN。

圖1 基於知識圖譜的點評搜索5層架構

2. 排序模型探索與實踐

搜索排序問題在機器學習領域有一個單獨的分支,Learning to Rank(L2R)。主要分類以下:網絡

  1. 根據樣本生成方法和Loss Function的不一樣,L2R能夠分爲Pointwise、Pairwise、Listwise。
  2. 按照模型結構劃分,能夠分爲線性排序模型、樹模型、深度學習模型,他們之間的組合(GBDT+LR,Deep&Wide等)。

在排序模型方面,點評搜索也經歷了業界比較廣泛的迭代過程:從早期的線性模型LR,到引入自動二階交叉特徵的FM和FFM,到非線性樹模型GBDT和GBDT+LR,到最近全面遷移至大規模深度學習排序模型。下面先簡單介紹下傳統機器學習模型(LR、FM、GBDT)的應用和優缺點,而後詳細介紹深度模型的探索實踐過程。架構

傳統機器學習模型

圖2 幾種傳統機器學習模型結構

  1. LR能夠視做單層單節點的線性網絡結構。模型優勢是可解釋性強。一般而言,良好的解釋性是工業界應用實踐比較注重的一個指標,它意味着更好的可控性,同時也能指導工程師去分析問題優化模型。可是LR須要依賴大量的人工特徵挖掘投入,有限的特徵組合天然沒法提供較強的表達能力。
  2. FM能夠看作是在LR的基礎上增長了一部分二階交叉項。引入自動的交叉特徵有助於減小人工挖掘的投入,同時增長模型的非線性,捕捉更多信息。FM可以自動學習兩兩特徵間的關係,但更高量級的特徵交叉仍然沒法知足。
  3. GBDT是一個Boosting的模型,經過組合多個弱模型逐步擬合殘差獲得一個強模型。樹模型具備自然的優點,可以很好的挖掘組合高階統計特徵,兼具較優的可解釋性。GBDT的主要缺陷是依賴連續型的統計特徵,對於高維度稀疏特徵、時間序列特徵不能很好的處理。

深度神經網絡模型

隨着業務的發展,在傳統模型上取得指標收益變得愈發困難。同時業務的複雜性要求咱們引入海量用戶歷史數據,超大規模知識圖譜特徵等多維度信息源,以實現精準個性化的排序。所以咱們從2018年下半年開始,全力推動L2核心排序層的主模型遷移至深度學習排序模型。深度模型優點體如今以下幾個方面:框架

  1. 強大的模型擬合能力:深度學習網絡包含多個隱藏層和隱藏結點,配合上非線性的激活函數,理論上能夠擬合任何函數,所以十分適用於點評搜索這種複雜的場景。
  2. 強大的特徵表徵和泛化能力:深度學習模型能夠處理不少傳統模型沒法處理的特徵。例如深度網絡能夠直接中從海量訓練樣本中學習到高維稀疏ID的隱含信息,並經過Embedding的方式去表徵;另外對於文本、序列特徵以及圖像特徵,深度網絡均有對應的結構或者單元去處理。
  3. 自動組合和發現特徵的能力:華爲提出的DeepFM,以及Google提出的DeepCrossNetwork能夠自動進行特徵組合,代替大量人工組合特徵的工做。

下圖是咱們基於Google提出的Wide&Deep模型搭建的網絡結構[2]。其中Wide部分輸入的是LR、GBDT階段經常使用的一些細粒度統計特徵。經過較長週期統計的高頻行爲特徵,可以提供很好的記憶能力。Deep部分經過深層的神經網絡學習Low-Order、高緯度稀疏的Categorical型特徵,擬合樣本中的長尾部分,發現新的特徵組合,提升模型的泛化能力。同時對於文本、頭圖等傳統機器學習模型難以刻畫的特徵,咱們能夠經過End-to-End的方式,利用相應的子網絡模型進行預處理表示,而後進行融合學習。機器學習

圖3 Deep&Wide模型結構圖

3. 搜索深度排序模型的特徵工程實踐

深度學習的橫空出世,將算法工程師從不少人工挖掘和組合特徵的事情中解放出來。甚至有一種論調,專作特徵工程的算法工程師可能面臨着失業的風險。可是深度學習的自動特徵學習目前主要集中體如今CV領域,CV領域的特徵數據是圖片的像素點——稠密的低階特徵,深度學習經過卷積層這個強力工具,能夠自動對低階特徵進行組合和變換,相比以前人工定義的圖像特徵從效果上來講確實更加顯著。在NLP領域由於Transformer的出現,在自動特徵挖掘上也有了長足的進步,BERT利用Transformer在多個NLP Task中取得了State-of-The-Art的效果。分佈式

可是對於CTR預估和排序學習的領域,目前深度學習還沒有在自動特徵挖掘上對人工特徵工程造成碾壓之勢,所以人工特徵工程依然很重要。固然,深度學習在特徵工程上與傳統模型的特徵工程也存在着一些區別,咱們的工做主要集中在以下幾個方面。ide

3.1 特徵預處理

  • 特徵歸一化:深度網絡的學習幾乎都是基於反向傳播,而此類梯度優化的方法對於特徵的尺度很是敏感。所以,須要對特徵進行歸一化或者標準化以促使模型更好的收斂。
  • 特徵離散化:工業界通常不多直接使用連續值做爲特徵,而是將特徵離散化後再輸入到模型中。一方面由於離散化特徵對於異常值具備更好的魯棒性,其次能夠爲特徵引入非線性的能力。而且,離散化能夠更好的進行Embedding,咱們主要使用以下兩種離散化方法:函數

    • 等頻分桶:按樣本頻率進行等頻切分,缺失值能夠選擇給一個默認桶值或者單獨設置分桶。
    • 樹模型分桶:等頻離散化的方式在特徵分佈特別不均勻的時候效果每每很差。此時能夠利用單特徵結合Label訓練樹模型,以樹的分叉點作爲切分值,相應的葉子節點做爲桶號。
  • 特徵組合:基於業務場景對基礎特徵進行組合,造成更豐富的行爲表徵,爲模型提供先驗信息,可加速模型的收斂速度。典型示例以下:

    • 用戶性別與類目之間的交叉特徵,可以刻畫出不一樣性別的用戶在類目上的偏好差別,好比男性用戶可能會較少關注「麗人」相關的商戶。
    • 時間與類目之間的交叉特徵,可以刻畫出不一樣類目商戶在時間上的差別,例如,酒吧在夜間會更容易被點擊。

3.2 萬物皆可Embedding

深度學習最大的魅力在於其強大的特徵表徵能力,在點評搜索場景下,咱們有海量的用戶行爲數據,有豐富的商戶UGC信息以及美團大腦提供的多維度細粒度標籤數據。咱們利用深度學習將這些信息Embedding到多個向量空間中,經過Embedding去表徵用戶的個性化偏好和商戶的精準畫像。同時向量化的Embedding也便於深度模型進一步的泛化、組合以及進行類似度的計算。

3.2.1 用戶行爲序列的Embedding

用戶行爲序列(搜索詞序列、點擊商戶序列、篩選行爲序列)包含了用戶豐富的偏好信息。例如用戶篩選了「距離優先」時,咱們可以知道當前用戶頗有多是一個即時消費的場景,而且對距離較爲敏感。行爲序列特徵通常有以下圖所示的三種接入方式:

  • Pooling:序列Embedding後接入Sum/Average Pooling層。此方式接入成本低,但忽略了行爲的時序關係。
  • RNN:LSTM/GRU接入,利用循環網絡進行聚合。此方式可以考慮行爲序列的時序關係;代價是增大了模型複雜度,影響線上預測性能。
  • Attention:序列Embedding後引入Attention機制,表現爲加權的Sum Pooling;相比LSTM/GRU計算開銷更低[4]。

圖4 行爲序列特徵接入的幾種方法

同時,爲了突顯用戶長期偏好和短時間偏好對於排序的不一樣影響,咱們按照時間維度對行爲序列進行了劃分:Session、半小時、一天、一週等粒度,也在線上取得了收益。

3.2.2 用戶ID的Embedding

一種更常見的刻畫用戶偏好的方式,是直接將用戶ID通過Embedding後做爲特徵接入到模型中,可是最後上線的效果卻不盡如人意。經過分析用戶的行爲數據,咱們發現至關一部分用戶ID的行爲數據較爲稀疏,致使用戶ID的Embedding沒有充分收斂,未能充分刻畫用戶的偏好信息。

Airbnb發表在KDD 2018上的文章爲這種問題提供了一種解決思路[9]——利用用戶基礎畫像和行爲數據對用戶ID進行聚類。Airbnb的主要場景是爲旅遊用戶提供民宿短租服務,通常用戶一年旅遊的次數在1-2次之間,所以Airbnb的用戶行爲數據相比點評搜索會更爲稀疏一些。

圖5 按照用戶畫像和行爲信息聚類

如上圖所示,將用戶畫像特徵和行爲特徵進行離散分桶,拼接特徵名和所屬桶號,獲得的聚類ID爲:US_lt1_pn3_pg3_r3_5s4_c2_b1_bd2_bt2_nu3。

咱們也採起了相似Airbnb的方案,稀疏性的問題獲得了很好的解決,而且這樣作還得到了一些額外的收益。點評搜索做爲一個本地化的生活信息服務平臺,大部分用戶的行爲都集中本身的常駐地,致使用戶到達一個新地方時,排序個性化明顯不足。經過這種聚類的方式,將異地有相同行爲的用戶彙集在一塊兒,也能解決一部分跨站的個性化問題。

3.2.3 商戶信息Embedding

商戶Embedding除了能夠直接將商戶ID加入模型中以外,美團大腦也利用深度學習技術對UGC進行大量挖掘,對商家的口味、特點等細粒度情感進行充分刻畫,例以下圖所示的「好停車」、「菜品精緻」、「願意再次光顧」等標籤。

圖6 美團大腦提供的商家細粒度情感標籤

這些信息與單純的商戶星級、點評數相比,刻畫的角度更多,粒度也更細。咱們將這些標籤也進行Embedding並輸入到模型中:

  • 直連:將標籤特徵作Pooling後直接輸入模型。這種接入方式適合端到端的學習方式;但受輸入層大小限制,只能取Top的標籤,容易損失抽象實體信息。
  • 分組直連:相似於直鏈接入的方式,可是先對標籤進行分類,如菜品/風格/口味等類別;每一個分類取Top N的實體後進行Pooling生成不一樣維度的語義向量。與不分組的直連相比,可以保留更多抽象信息。
  • 子模型接入:能夠利用DSSM模型,以標籤做爲商戶輸入學習商戶的Embedding表達。此種方式可以最大化保留標籤的抽象信息,可是線上實現和計算成本較高。

3.2.4 加速Embedding特徵的收斂

在咱們的深度學習排序模型中,除了Embedding特徵,也存在大量Query、Shop和用戶維度的強記憶特徵,可以很快收斂。而Embedding特徵是更爲稀疏的弱特徵,收斂速度較慢,爲了加速Embedding特徵的收斂,咱們嘗試了以下幾種方案:

  • 低頻過濾:針對出現頻率較低的特徵進行過濾,能夠很大程度上減小參數量,避免過擬合。
  • 預訓練:利用多類模型對稀疏Embedding特徵進行預訓練,而後進入模型進行微調:

    • 經過無監督模型如Word2vec、Fasttext對用戶-商戶點擊關係建模,生成共現關係下的商戶Embedding。
    • 利用DSSM等監督模型對Query-商戶點擊行爲建模獲得Query和商戶的Embedding。
  • Multi-Task:針對稀疏的Embedding特徵,單獨設置一個子損失函數,以下圖所示。此時Embedding特徵的更新依賴兩個損失函數的梯度,而子損失函數脫離了對強特徵的依賴,能夠加快Embedding特徵的收斂。

圖7 Multi-Task加速Embedding特徵收斂

3.3 圖片特徵

圖片在搜索結果頁中佔據了很大的展現面積,圖片質量的好壞會直接影響用戶的體驗和點擊,而點評商戶首圖來自於商戶和用戶上傳的圖片,質量良莠不齊。所以,圖片特徵也是排序模型中較爲重要的一類。目前點評搜索主要用瞭如下幾類圖片特徵:

  • 基礎特徵:提取圖片的亮度、色度飽和度等基礎信息,進行特徵離散化後獲得圖片基礎特徵。
  • 泛化特徵:使用ResNet50進行圖片特徵提取[3],經過聚類獲得圖片的泛化特徵。
  • 質量特徵:使用自研的圖片質量模型,提取中間層輸出,做爲圖片質量的Embedding特徵。
  • 標籤特徵:提取圖片是不是食物、環境、價目表、Logo等做爲圖片分類和標籤特徵。

圖8 圖片特徵接入

4. 適用於搜索場景的深度學習Listwise排序算法—LambdaDNN

4.1 搜索業務指標與模型優化目標的Gap

一般模型的預測目標與業務指標總會存在一些Gap。若是模型的預測目標越貼近業務目標,越能保證模型優化的同時業務指標也可以有相應的提高;反之則會出現模型離線指標提高,但線上關鍵業務指標提高不明顯,甚至出現負向的問題。工業屆大部分深度學習排序採用Pointwise的Log Loss做爲損失函數,與搜索業務指標有較大的Gap。體如今以下兩個方面:

  1. 搜索業務經常使用的指標有QV_CTR或者SSR(Session Success Rate),更關心的是用戶搜索的成功率(有沒有發生點擊行爲);而Pointwise的Log Loss更可能是關注單個Item的點擊率。
  2. 搜索業務更關心排在頁面頭部結果的好壞,而Pointwise的方法則對於全部位置的樣本一視同仁。

圖9 Pointwise和Listwise優化目標的區別

基於上述理由,咱們對於深度學習模型的損失函數進行了優化。

4.2 優化目標改進-從Log Loss到NDCG

爲了讓排序模型的優化目標儘可能貼近搜索業務指標,須要按照Query計算損失,且不一樣位置的樣本具備不一樣的權重。搜索系統經常使用的指標NDCG(Normalized Discounted Cumulative Gain)相較於Log Loss顯然更貼近搜索業務的要求,NDCG計算公式以下:

累加部分爲DCG(Discounted Cumulative Gain)表示按照位置折損的收益,對於Query下的結果列表l,函數G表示對應Doc的相關度分值,一般取指數函數,即G(lj)=2lj-1(lj表示的是相關度水平,如{0,1,2});函數 η 即位置折損,通常採用 η(j)=1/log(j+1),Doc與Query的相關度越高且位置越靠前則DCG值會越大。另外,一般咱們僅關注排序列表頁前k位的效果,Zk 表示 DCG@k 的可能最大值,以此進行歸一化處理後獲得的就是NDCG@k。

問題在於NDCG是一個到處非平滑的函數,直接以它爲目標函數進行優化是不可行的。LambdaRank提供了一種思路:繞過目標函數自己,直接構造一個特殊的梯度,按照梯度的方向修正模型參數,最終能達到擬合NDCG的方法[6]。所以,若是咱們能將該梯度經過深度網絡進行反向傳播,則能訓練一個優化NDCG的深度網絡,該梯度咱們稱之爲Lambda梯度,經過該梯度構造出的深度學習網絡稱之爲LambdaDNN。

要了解Lambda梯度須要引入LambdaRank。LambdaRank模型是經過Pairwise來構造的,一般將同Query下有點擊樣本和無點擊樣本構形成一個樣本Pair。模型的基本假設以下式所示,令Pij爲同一個Query下Doci相比Docj更相關的機率,其中si和sj分別爲Doci和Docj的模型得分:

使用交叉熵爲損失函數,令Sij表示樣本Pair的真實標記,當Doci比Docj更相關時(即Doci有被用戶點擊,而Docj沒有被點擊),有Sij=1,不然爲-1;則損失函數能夠表示爲:

在構造樣本Pair時,咱們能夠始終令i爲更相關的文檔,此時始終有Sij≡1,代入上式並進行求導,則損失函數的梯度爲:

到目前爲止,損失函數的計算過程當中並未考慮樣本所在的位置信息。所以進一步對梯度進行改造,考慮Doci和Docj交換位置時的NDCG值變化,下式即爲前述的Lambda梯度。能夠證實,經過此種方式構造出來的梯度通過迭代更新,最終能夠達到優化NDCG的目的。

Lambda梯度的物理意義以下圖所示。其中藍色表示更相關(用戶點擊過)的文檔,則Lambda梯度更傾向於位置靠上的Doc獲得的提高更大(如紅色箭頭所示)。有了Lambda梯度的計算方法,訓練中咱們利用深度網絡預測同Query下的Doc得分,根據用戶實際點擊Doc的狀況計算Lambda梯度並反向傳播回深度網絡,則能夠獲得一個直接預測NDCG的深度網絡。

圖10 Lambda梯度的物理意義

4.3 LambdaDNN的工程實施

咱們利用TensorFlow分佈式框架訓練LambdaDNN模型。如前文所述,Lambda梯度須要對同Query下的樣本進行計算,可是正常狀況下全部的樣本是隨機Shuffle到各個Worker的。所以咱們須要對樣本進行預處理:

  1. 經過QueryId進行Shuffle,將同一個Query的樣本聚合在一塊兒,同一個Query的樣本打包進一個TFRecord。
  2. 因爲每次請求Query召回的Doc數不同,對於可變Size的Query樣本在拉取數據進行訓練時須要注意,TF會自動補齊Mini-Batch內每一個樣本大小一致,致使輸入數據中存在大量無心義的默認值樣本。這裏咱們提供兩點處理方式:

    • MR過程當中對Key進行處理,使得多個Query的樣本聚合在一塊兒,而後在訓練的時候進行動態切分。
    • 讀取到補齊的樣本,根據設定的補齊標記獲取索引位,去除補齊數據。

圖11 Lambda梯度的分佈式實現

爲了提高訓練效率,咱們與基礎研發平臺數據平臺中心緊密協同,一塊兒探索並驗證了多項優化操做:

  1. 將ID類特徵的映射等操做一併在預處理中完成,減小多輪Training過程當中的重複計算。
  2. 將樣本轉TfRecord,利用RecordDataSet方式讀取數據並計算處理,Worker的計算性能大概提高了10倍。
  3. Concat多個Categorical特徵,組合成Multi-Hot的Tensor進行一次Embedding_Lookup操做,減小Map操做的同時有助於參數作分片存儲計算。
  4. 稀疏Tensor在計算梯度以及正則化處理時保留索引值,僅對有數值的部分進行更新操做。
  5. 多個PS服務器間進行分片存儲大規模Tensor變量,減小Worker同步更新的通信壓力,減小更新阻塞,達到更平滑的梯度更新效果。

總體下來,對於30億左右的樣本量、上億級別的特徵維度,一輪迭代大概在半小時內完成。適當的增長並行計算的資源,能夠達到分鐘級的訓練任務。

4.4 進一步改進優化目標

NDCG的計算公式中,折損的權重是隨着位置呈指數變化的。然而實際曝光點擊率隨位置變化的曲線與NDCG的理論折損值存在着較大的差別。

對於移動端的場景來講,用戶在下拉滑動列表進行瀏覽時,視覺的焦點會隨着滑屏、翻頁而發生變更。例如用戶翻到第二頁時,每每會從新聚焦,所以,會發現第二頁頭部的曝光點擊率其實是高於第一頁尾部位置的。咱們嘗試了兩種方案去微調NDCG中的指數位置折損:

  1. 根據實際曝光點擊率擬合折損曲線:根據實際統計到的曝光點擊率數據,擬合公式替代NDCG中的指數折損公式,繪製的曲線如圖12所示。
  2. 計算Position Bias做爲位置折損:Position Bias在業界有較多的討論,其中7將用戶點擊商戶的過程分爲觀察和點擊兩個步驟:a.用戶須要首先看到該商戶,而看到商戶的機率取決於所在的位置;b.看到商戶後點擊商戶的機率只與商戶的相關性有關。步驟a計算的機率即爲Position Bias,這塊內容能夠討論的東西不少,這裏再也不詳述。

圖12 真實位置折損與理論折損的差異

通過上述對NDCG計算改造訓練出的LambdaDNN模型,相較Base樹模型和Pointwise DNN模型,在業務指標上有了很是顯著的提高。

圖13 LambdaDNN離線NDCG指標與線上PvCtr效果對比

4.5 Lambda深度排序框架

Lambda梯度除了與DNN網絡相結合外,事實上能夠與絕大部分常見的網絡結構相結合。爲了進一步學習到更多交叉特徵,咱們在LambdaDNN的基礎上分別嘗試了LambdaDeepFM和LambdaDCN網絡;其中DCN網絡是一種加入Cross的並行網絡結構,交叉的網絡每一層的輸出特徵與第一層的原始輸入特徵進行顯性的兩兩交叉,至關於每一層學習特徵交叉的映射去擬合層之間的殘差。

圖14 DCN模型結構

離線的對比實驗代表,Lambda梯度與DCN網絡結合以後充分發揮了DCN網絡的特色,簡潔的多項式交叉設計有效地提高模型的訓練效果。NDCG指標對比效果以下圖所示:

圖15 Lambda Loss與DCN網絡結果的效果

5. 深度學習排序診斷系統

深度學習排序模型雖然給業務指標帶來了大幅度的提高,但因爲深度學習模型的「黑盒屬性」致使了巨大的解釋性成本,也給搜索業務帶來了一些問題:

  1. 平常搜索Bad Case沒法快速響應:搜索業務平常須要應對大量來自於用戶、業務和老闆們的「靈魂拷問」,「爲什麼這個排序是這樣的」,「爲何這家商戶質量跟我差很少,可是會排在個人前面」。剛切換到深度學習排序模型的時候,咱們對於這樣的問題顯得手足無措,須要花費大量的時間去定位問題。
  2. 沒法從Bad Case中學習總結規律持續優化:若是不明白爲何排序模型會得出一個很壞的排序結果,天然也沒法定位模型到底出了什麼問題,也就沒法根據Bad Case總結規律,從而肯定模型和特徵未來的優化方向。
  3. 模型和特徵是否充分學習無從得知:新挖掘一些特徵以後,一般咱們會根據離線評測指標是否有提高決定特徵是否上線。可是,即便一個有提高的特徵,咱們也沒法知道這個特徵是否性能足夠好。例如,模型擬合的距離特徵,會不會在特定的距離段出現距離越遠反而打分越高的狀況。

這些問題都會潛在帶來一些用戶沒法理解的排序結果。咱們須要對深度排序模型清晰地診斷並解釋。

關於機器學習模型的可解釋性研究,業界已經有了一些探索。Lime(Local Interpretable Model-Agnostic Explanations)是其中的一種,以下圖所示:經過對單個樣本的特徵生成擾動產生近鄰樣本,觀察模型的預測行爲。根據這些擾動的數據點距離原始數據的距離分配權重,基於它們學習獲得一個可解釋的模型和預測結果[5]。舉個例子,若是須要解釋一個情感分類模型是如何預測「我討厭這部電影」爲負面情感的,咱們經過丟掉部分詞或者亂序構造一些樣本預測情感,最終會發現,決定「我討厭這部電影」爲負面情感的是由於「討厭」這個詞。
圖16 Lime解釋器的工做原理

基於Lime解釋器的思想,咱們開發了一套深度模型解釋器工具——雅典娜系統。目前雅典娜系統支持兩種工做模式,Pairwise和Listwise模式:

  1. Pairwise模式用來解釋同一個列表中兩個結果之間的相對排序。經過對樣本的特徵進行從新賦值或者替換等操做,觀察樣本打分和排序位次的變化趨勢,診斷出當前樣本排序是否符合預期。以下圖所示,經過右側的特徵位次面板能夠快速診斷出爲何「南京大牌檔」的排序比「金時代順風港灣」要更靠前。第一行的特徵位次信息顯示,若將「金時代順風港灣」的1.3km的距離特徵用「南京大牌檔」的0.2km的距離特徵進行替換,排序位次將上升10位;由此得出,「南京大牌檔」排在前面的決定性因素是由於距離近。
  2. Listwise模式與Lime的工做模式基本相似,經過整個列表的樣本生成擾動樣本,訓練線性分類器模型輸出特徵重要度,從而達到對模型進行解釋的目的。

圖17 深度學習排序診斷系統-雅典娜

6. 總結與展望

2018年下半年,點評搜索完成了從樹模型到大規模深度學習排序模型的全面升級。團隊在深度學習特徵工程、模型結構、優化目標以及工程實踐上都進行了一些探索,在覈心指標上取得了較爲顯著的收益。固然,將來依然有很多能夠探索的點。

在特徵層面,大量知識圖譜提供的標籤信息還沒有充分挖掘。從使用方式上看,簡單以文本標籤的形式接入,損失了知識圖譜的結構信息,所以,Graph Embedding也是將來須要嘗試的方向。同時團隊也會利用BERT在Query和商戶文本的深層語義表達上作一些工做。

模型結構層面,目前線上依然以全鏈接的DNN網絡結構爲主,但DNN網絡結構在低秩數據的學習上不如DeepFM和DCN。目前LambdaDeepFM和LambdaDCN在離線上已經取得了收益,將來會在網絡結構上作進一步優化。

在模型優化目標上,Lambda Loss計算損失的時候,只會考慮Query內部有點擊和無點擊的樣本對,大量無點擊的Query被丟棄,同時,同一個用戶短期內在不一樣Query下的行爲也包含着一些信息能夠利用。所以,目前團隊正在探索綜合考慮Log Loss和Lambda Loss的模型,經過Multi-Task和按照不一樣維度Shuffle樣本讓模型充分學習,目前咱們已經在線下取得了一些收益。

最後,近期Google開源的TF Ranking提出的Groupwise模型也對咱們有一些啓發。目前絕大部分的Listwise方法只是體如今模型訓練階段,在打分預測階段依然是Pointwise的,即只會考慮當前商戶相關的特徵,而不會考慮列表上下文的結果,將來咱們也會在這個方向上進行一些探索。

參考資料

  1. 美團大腦:知識圖譜的建模方法及其應用
  2. Wide & Deep Learning for Recommender Systems
  3. Deep Residual Learning for Image Recognition
  4. Attention Is All You Need
  5. Local Interpretable Model-Agnostic Explanations: LIME
  6. From RankNet to LambdaRank to LambdaMART: An Overview
  7. A Novel Algorithm for Unbiased Learning to Rank
  8. Unbiased Learning-to-Rank with Biased Feedback
  9. Real-time Personalization using Embeddings for Search Ranking at Airbnb

做者簡介

  • 非易,2016年加入美團點評,高級算法工程師,目前主要負責點評搜索核心排序層的研發工做。
  • 祝升,2016年加入美團點評,高級算法工程師,目前負責點評搜索核心排序層的研發工做。
  • 湯彪,2013年加入美團點評,高級算法專家,點評平臺搜索技術負責人,致力於深層次查詢理解和大規模深度學習排序的技術落地。
  • 張弓,2012年加入美團點評,美團點評研究員。目前主要負責點評搜索業務演進,及集團搜索公共服務平臺建設。
  • 仲遠,博士,美團AI平臺部NLP中心負責人,點評搜索智能中心負責人。在國際頂級學術會議發表論文30餘篇,得到ICDE 2015最佳論文獎,並是ACL 2016 Tutorial 「Understanding Short Texts」主講人,出版學術專著3部,得到美國專利5項。此前,博士曾擔任微軟亞洲研究院主管研究員,以及美國Facebook公司Research Scientist。曾負責微軟研究院知識圖譜、對話機器人項目和Facebook產品級NLP Service。

相關文章
相關標籤/搜索