大眾點評搜尋基於知識圖譜的深度學習排序實踐
1. 引言
挑戰與思路
搜尋是大眾點評 App 上使用者進行資訊查詢的最大入口,是連線使用者和資訊的重要紐帶。而使用者搜尋的方式和場景非常多樣,並且由於對接業務種類多,流量差異大,為大眾點評搜尋(下文簡稱點評搜尋)帶來了巨大的挑戰,具體體現在如下幾個方面:
- 意圖多樣:使用者查詢的資訊型別和方式多樣。資訊型別包括 POI、榜單、UGC、攻略、達人等。以找店為例,查詢方式包括按距離、按熱度、按菜品和按地理位置等多種方式。例如使用者按照品牌進行搜尋時,大概率是需要尋找距離最近或者常去的某家分店;但使用者搜尋菜品時,會對菜品推薦人數更加敏感,而距離因素會弱化。
- 業務多樣:不同業務之間,使用者的使用頻率、選擇難度以及業務訴求均不一樣。例如家裝場景使用者使用頻次很低,行為非常稀疏,距離因素弱,並且選擇週期可能會很長;而美食多為即時消費場景,使用者行為資料多,距離敏感。
- 使用者型別多樣:不同的使用者對價格、距離、口味以及偏好的類目之間差異很大;搜尋需要能深度挖掘到使用者的各種偏好,實現定製化的“千人千面”的搜尋。
- LBS 的搜尋:相比電商和通用搜索,LBS 的升維效應極大地增加了搜尋場景的複雜性。例如對於旅遊使用者和常駐地使用者來說,前者在搜尋美食的時候可能會更加關心當地的知名特色商戶,而對於距離相對不敏感。
上述的各項特性,疊加上時間、空間、場景等維度,使得點評搜尋面臨比通用搜索引擎更加獨特的挑戰。而解決這些挑戰的方法,就需要升級 NLP(Natural Language Processing,自然語言處理)技術,進行深度查詢理解以及深度評價分析,並依賴知識圖譜技術和深度學習技術對搜尋架構進行整體升級。在美團 NLP 中心以及大眾點評搜尋智慧中心兩個團隊的緊密合作之下,經過短短半年時間,點評搜尋核心 KPI 在高位基礎上仍然大幅提升,是過去一年半漲幅的六倍之多,提前半年完成全年目標。
基於知識圖譜的搜尋架構重塑
美團 NLP 中心正在構建全世界最大的餐飲娛樂知識圖譜——美團大腦(相關資訊請參見《美團大腦:知識圖譜的建模方法及其應用》)。它充分挖掘關聯各個場景資料,用 NLP 技術讓機器“閱讀”使用者公開評論,理解使用者在菜品、價格、服務、環境等方面的喜好,構建人、店、商品、場景之間的知識關聯,從而形成一個“知識大腦”[1]。通過將知識圖譜資訊加入到搜尋各個流程中,我們對點評搜尋的整體架構進行了升級重塑,圖 1 為點評搜尋基於知識圖譜搭建的 5 層搜尋架構。本篇文章是“美團大腦”系列文章第二篇(系列首篇文章請參見《美團餐飲娛樂知識圖譜——美團大腦揭祕》),主要介紹點評搜尋 5 層架構中核心排序層的演變過程,文章主要分為如下 3 個部分:
- 核心排序從傳統機器學習模型到大規模深度學習模型的演進。
- 搜尋場景深度學習排序模型的特徵工程實踐。
- 適用於搜尋場景的深度學習 Listwise 排序演算法——LambdaDNN。
2. 排序模型探索與實踐
搜尋排序問題在機器學習領域有一個單獨的分支,Learning to Rank(L2R)。主要分類如下:
- 根據樣本生成方法和 Loss Function 的不同,L2R 可以分為 Pointwise、Pairwise、Listwise。
- 按照模型結構劃分,可以分為線性排序模型、樹模型、深度學習模型,他們之間的組合(GBDT+LR,Deep&Wide 等)。
在排序模型方面,點評搜尋也經歷了業界比較普遍的迭代過程:從早期的線性模型 LR,到引入自動二階交叉特徵的 FM 和 FFM,到非線性樹模型 GBDT 和 GBDT+LR,到最近全面遷移至大規模深度學習排序模型。下面先簡單介紹下傳統機器學習模型(LR、FM、GBDT)的應用和優缺點,然後詳細介紹深度模型的探索實踐過程。
傳統機器學習模型
- LR 可以視作單層單節點的線性網路結構。模型優點是可解釋性強。通常而言,良好的解釋性是工業界應用實踐比較注重的一個指標,它意味著更好的可控性,同時也能指導工程師去分析問題優化模型。但是 LR 需要依賴大量的人工特徵挖掘投入,有限的特徵組合自然無法提供較強的表達能力。
- FM 可以看做是在 LR 的基礎上增加了一部分二階交叉項。引入自動的交叉特徵有助於減少人工挖掘的投入,同時增加模型的非線性,捕捉更多資訊。FM 能夠自動學習兩兩特徵間的關係,但更高量級的特徵交叉仍然無法滿足。
- GBDT 是一個 Boosting 的模型,通過組合多個弱模型逐步擬合殘差得到一個強模型。樹模型具有天然的優勢,能夠很好的挖掘組合高階統計特徵,兼具較優的可解釋性。GBDT 的主要缺陷是依賴連續型的統計特徵,對於高維度稀疏特徵、時間序列特徵不能很好的處理。
深度神經網路模型
隨著業務的發展,在傳統模型上取得指標收益變得愈發困難。同時業務的複雜性要求我們引入海量使用者歷史資料,超大規模知識圖譜特徵等多維度資訊源,以實現精準個性化的排序。因此我們從 2018 年下半年開始,全力推進 L2 核心排序層的主模型遷移至深度學習排序模型。深度模型優勢體現在如下幾個方面:
- 強大的模型擬合能力:深度學習網路包含多個隱藏層和隱藏結點,配合上非線性的啟用函式,理論上可以擬合任何函式,因此十分適用於點評搜尋這種複雜的場景。
- 強大的特徵表徵和泛化能力:深度學習模型可以處理很多傳統模型無法處理的特徵。例如深度網路可以直接中從海量訓練樣本中學習到高維稀疏 ID 的隱含資訊,並通過 Embedding 的方式去表徵;另外對於文字、序列特徵以及影象特徵,深度網路均有對應的結構或者單元去處理。
- 自動組合和發現特徵的能力:華為提出的 DeepFM,以及 Google 提出的 DeepCrossNetwork 可以自動進行特徵組合,代替大量人工組合特徵的工作。
下圖是我們基於 Google 提出的 Wide&Deep 模型搭建的網路結構 [2]。其中 Wide 部分輸入的是 LR、GBDT 階段常用的一些細粒度統計特徵。通過較長週期統計的高頻行為特徵,能夠提供很好的記憶能力。Deep 部分通過深層的神經網路學習 Low-Order、高緯度稀疏的 Categorical 型特徵,擬合樣本中的長尾部分,發現新的特徵組合,提高模型的泛化能力。同時對於文字、頭圖等傳統機器學習模型難以刻畫的特徵,我們可以通過 End-to-End 的方式,利用相應的子網路模型進行預處理表示,然後進行融合學習。
3. 搜尋深度排序模型的特徵工程實踐
深度學習的橫空出世,將演算法工程師從很多人工挖掘和組合特徵的事情中解放出來。甚至有一種論調,專做特徵工程的演算法工程師可能面臨著失業的風險。但是深度學習的自動特徵學習目前主要集中體現在 CV 領域,CV 領域的特徵資料是圖片的畫素點——稠密的低階特徵,深度學習通過卷積層這個強力工具,可以自動對低階特徵進行組合和變換,相比之前人工定義的影象特徵從效果上來說確實更加顯著。在 NLP 領域因為 Transformer 的出現,在自動特徵挖掘上也有了長足的進步,BERT 利用 Transformer 在多個 NLP Task 中取得了 State-of-The-Art 的效果。
但是對於 CTR 預估和排序學習的領域,目前深度學習尚未在自動特徵挖掘上對人工特徵工程形成碾壓之勢,因此人工特徵工程依然很重要。當然,深度學習在特徵工程上與傳統模型的特徵工程也存在著一些區別,我們的工作主要集中在如下幾個方面。
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]。
同時,為了突顯使用者長期偏好和短期偏好對於排序的不同影響,我們按照時間維度對行為序列進行了劃分:Session、半小時、一天、一週等粒度,也在線上取得了收益。
3.2.2 使用者 ID 的 Embedding
一種更常見的刻畫使用者偏好的方式,是直接將使用者 ID 經過 Embedding 後作為特徵接入到模型中,但是最後上線的效果卻不盡如人意。通過分析使用者的行為資料,我們發現相當一部分使用者 ID 的行為資料較為稀疏,導致使用者 ID 的 Embedding 沒有充分收斂,未能充分刻畫使用者的偏好資訊。
Airbnb 發表在 KDD 2018 上的文章為這種問題提供了一種解決思路 [9]——利用使用者基礎畫像和行為資料對使用者 ID 進行聚類。Airbnb 的主要場景是為旅遊使用者提供民宿短租服務,一般使用者一年旅遊的次數在 1-2 次之間,因此 Airbnb 的使用者行為資料相比點評搜尋會更為稀疏一些。
如上圖所示,將使用者畫像特徵和行為特徵進行離散分桶,拼接特徵名和所屬桶號,得到的聚類 ID 為:US_lt1_pn3_pg3_r3_5s4_c2_b1_bd2_bt2_nu3。
我們也採取了類似 Airbnb 的方案,稀疏性的問題得到了很好的解決,並且這樣做還獲得了一些額外的收益。大眾點評作為一個本地化的生活資訊服務平臺,大部分使用者的行為都集中自己的常駐地,導致使用者到達一個新地方時,排序個性化明顯不足。通過這種聚類的方式,將異地有相同行為的使用者聚集在一起,也能解決一部分跨站的個性化問題。
3.2.3 商戶資訊 Embedding
商戶 Embedding 除了可以直接將商戶 ID 加入模型中之外,美團大腦也利用深度學習技術對 UGC 進行大量挖掘,對商家的口味、特色等細粒度情感進行充分刻畫,例如下圖所示的“好停車”、“菜品精緻”、“願意再次光顧”等標籤。
這些資訊與單純的商戶星級、點評數相比,刻畫的角度更多,粒度也更細。我們將這些標籤也進行 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 特徵的收斂。
3.3 圖片特徵
圖片在搜尋結果頁中佔據了很大的展示面積,圖片質量的好壞會直接影響使用者的體驗和點選,而點評商戶首圖來自於商戶和使用者上傳的圖片,質量參差不齊。因此,圖片特徵也是排序模型中較為重要的一類。目前點評搜尋主要用了以下幾類圖片特徵:
- 基礎特徵:提取圖片的亮度、色度飽和度等基礎資訊,進行特徵離散化後得到圖片基礎特徵。
- 泛化特徵:使用 ResNet50 進行圖片特徵提取 [3],通過聚類得到圖片的泛化特徵。
- 質量特徵:使用自研的圖片質量模型,提取中間層輸出,作為圖片質量的 Embedding 特徵。
- 標籤特徵:提取圖片是否是食物、環境、價目表、Logo 等作為圖片分類和標籤特徵。
4. 適用於搜尋場景的深度學習 Listwise 排序演算法:LambdaDNN
4.1 搜尋業務指標與模型優化目標的 Gap
通常模型的預測目標與業務指標總會存在一些 Gap。如果模型的預測目標越貼近業務目標,越能保證模型優化的同時業務指標也能夠有相應的提升;反之則會出現模型離線指標提升,但線上關鍵業務指標提升不明顯,甚至出現負向的問題。工業屆大部分深度學習排序採用 Pointwise 的 Log Loss 作為損失函式,與搜尋業務指標有較大的 Gap。體現在如下兩個方面:
- 搜尋業務常用的指標有 QV_CTR 或者 SSR(Session Success Rate),更關心的是使用者搜尋的成功率(有沒有發生點選行為);而 Pointwise 的 Log Loss 更多是關注單個 Item 的點選率。
- 搜尋業務更關心排在頁面頭部結果的好壞,而 Pointwise 的方法則對於所有位置的樣本一視同仁。
基於上述理由,我們對於深度學習模型的損失函式進行了優化。
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 的深度網路。
4.3 LambdaDNN 的工程實施
我們利用 TensorFlow 分散式框架訓練 LambdaDNN 模型。如前文所述,Lambda 梯度需要對同 Query 下的樣本進行計算,但是正常情況下所有的樣本是隨機 Shuffle 到各個 Worker 的。因此我們需要對樣本進行預處理:
- 通過 QueryId 進行 Shuffle,將同一個 Query 的樣本聚合在一起,同一個 Query 的樣本打包進一個 TFRecord。
- 由於每次請求 Query 召回的 Doc 數不一樣,對於可變 Size 的 Query 樣本在拉取資料進行訓練時需要注意,TF 會自動補齊 Mini-Batch 內每個樣本大小一致,導致輸入資料中存在大量無意義的預設值樣本。這裡我們提供兩點處理方式:
MR 過程中對 Key 進行處理,使得多個 Query 的樣本聚合在一起,然後在訓練的時候進行動態切分。
讀取到補齊的樣本,根據設定的補齊標記獲取索引位,去除補齊資料。
為了提升訓練效率,我們與基礎研發平臺數據平臺中心緊密協同,一起探索並驗證了多項優化操作:
- 將 ID 類特徵的對映等操作一併在預處理中完成,減少多輪 Training 過程中的重複計算。
- 將樣本轉 TfRecord,利用 RecordDataSet 方式讀取資料並計算處理,Worker 的計算效能大概提升了 10 倍。
- Concat 多個 Categorical 特徵,組合成 Multi-Hot 的 Tensor 進行一次 Embedding_Lookup 操作,減少 Map 操作的同時有助於引數做分片儲存計算。
- 稀疏 Tensor 在計算梯度以及正則化處理時保留索引值,僅對有數值的部分進行更新操作。
- 多個 PS 伺服器間進行分片儲存大規模 Tensor 變數,減少 Worker 同步更新的通訊壓力,減少更新阻塞,達到更平滑的梯度更新效果。
整體下來,對於 30 億左右的樣本量、上億級別的特徵維度,一輪迭代大概在半小時內完成。適當的增加平行計算的資源,可以達到分鐘級的訓練任務。
4.4 進一步改進優化目標
NDCG 的計算公式中,折損的權重是隨著位置呈指數變化的。然而實際曝光點選率隨位置變化的曲線與 NDCG 的理論折損值存在著較大的差異。
對於移動端的場景來說,使用者在下拉滑動列表進行瀏覽時,視覺的焦點會隨著滑屏、翻頁而發生變動。例如使用者翻到第二頁時,往往會重新聚焦,因此,會發現第二頁頭部的曝光點選率實際上是高於第一頁尾部位置的。我們嘗試了兩種方案去微調 NDCG 中的指數位置折損:
- 根據實際曝光點選率擬合折損曲線:根據實際統計到的曝光點選率資料,擬合公式替代 NDCG 中的指數折損公式,繪製的曲線如圖 12 所示。
- 計算 Position Bias 作為位置折損:Position Bias 在業界有較多的討論,其中 [7][8] 將使用者點選商戶的過程分為觀察和點選兩個步驟:a. 使用者需要首先看到該商戶,而看到商戶的概率取決於所在的位置;b. 看到商戶後點擊商戶的概率只與商戶的相關性有關。步驟 a 計算的概率即為 Position Bias,這塊內容可以討論的東西很多,這裡不再詳述。
經過上述對 NDCG 計算改造訓練出的 LambdaDNN 模型,相較 Base 樹模型和 Pointwise DNN 模型,在業務指標上有了非常顯著的提升。
4.5 Lambda 深度排序框架
Lambda 梯度除了與 DNN 網路相結合外,事實上可以與絕大部分常見的網路結構相結合。為了進一步學習到更多交叉特徵,我們在 LambdaDNN 的基礎上分別嘗試了 LambdaDeepFM 和 LambdaDCN 網路;其中 DCN 網路是一種加入 Cross 的並行網路結構,交叉的網路每一層的輸出特徵與第一層的原始輸入特徵進行顯性的兩兩交叉,相當於每一層學習特徵交叉的對映去擬合層之間的殘差。
離線的對比實驗表明,Lambda 梯度與 DCN 網路結合之後充分發揮了 DCN 網路的特點,簡潔的多項式交叉設計有效地提升模型的訓練效果。NDCG 指標對比效果如下圖所示:
5. 深度學習排序診斷系統
深度學習排序模型雖然給業務指標帶來了大幅度的提升,但由於深度學習模型的“黑盒屬性”導致了巨大的解釋性成本,也給搜尋業務帶來了一些問題:
- 日常搜尋 Bad Case 無法快速響應:搜尋業務日常需要應對大量來自於使用者、業務和老闆們的“靈魂拷問”,“為何這個排序是這樣的”,“為什麼這家商戶質量跟我差不多,但是會排在我的前面”。剛切換到深度學習排序模型的時候,我們對於這樣的問題顯得手足無措,需要花費大量的時間去定位問題。
無法從 Bad Case 中學習總結規律持續優化:如果不明白為什麼排序模型會得出一個很壞的排序結果,自然也 2. 無法定位模型到底出了什麼問題,也就無法根據 Bad Case 總結規律,從而確定模型和特徵將來的優化方向。 - 模型和特徵是否充分學習無從得知:新挖掘一些特徵之後,通常我們會根據離線評測指標是否有提升決定特徵是否上線。但是,即使一個有提升的特徵,我們也無法知道這個特徵是否效能足夠好。例如,模型擬合的距離特徵,會不會在特定的距離段出現距離越遠反而打分越高的情況。
這些問題都會潛在帶來一些使用者無法理解的排序結果。我們需要對深度排序模型清晰地診斷並解釋。
關於機器學習模型的可解釋性研究,業界已經有了一些探索。Lime(Local Interpretable Model-Agnostic Explanations) 是其中的一種,如下圖所示:通過對單個樣本的特徵生成擾動產生近鄰樣本,觀察模型的預測行為。根據這些擾動的資料點距離原始資料的距離分配權重,基於它們學習得到一個可解釋的模型和預測結果 [5]。舉個例子,如果需要解釋一個情感分類模型是如何預測“我討厭這部電影”為負面情感的,我們通過丟掉部分詞或者亂序構造一些樣本預測情感,最終會發現,決定“我討厭這部電影”為負面情感的是因為“討厭”這個詞。
基於 Lime 直譯器的思想,我們開發了一套深度模型直譯器工具——雅典娜系統。目前雅典娜系統支援兩種工作模式,Pairwise 和 Listwise 模式:
- Pairwise 模式用來解釋同一個列表中兩個結果之間的相對排序。通過對樣本的特徵進行重新賦值或者替換等操作,觀察樣本打分和排序位次的變化趨勢,診斷出當前樣本排序是否符合預期。如下圖所示,通過右側的特徵位次面板可以快速診斷出為什麼“南京大牌檔”的排序比“金時代順風港灣”要更靠前。第一行的特徵位次資訊顯示,若將“金時代順風港灣”的 1.3km 的距離特徵用“南京大牌檔”的 0.2km 的距離特徵進行替換,排序位次將上升 10 位;由此得出,“南京大牌檔”排在前面的決定性因素是因為距離近。
- Listwise 模式與 Lime 的工作模式基本類似,通過整個列表的樣本生成擾動樣本,訓練線性分類器模型輸出特徵重要度,從而達到對模型進行解釋的目的。
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。