领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践
本文轉載自公眾號:美團技術團隊。???
本文介紹了大眾點評搜索核心排序層模型的演化之路,包括結合知識圖譜信息構建適合搜索場景的Listwise深度學習排序模型LambdaDNN以及特征工程實踐和相關工具建設。
1. 引言
挑戰與思路
搜索是大眾點評App上用戶進行信息查找的最大入口,是連接用戶和信息的重要紐帶。而用戶搜索的方式和場景非常多樣,并且由于對接業務種類多,流量差異大,為大眾點評搜索(下文簡稱點評搜索)帶來了巨大的挑戰,具體體現在如下幾個方面:
意圖多樣:用戶查找的信息類型和方式多樣。信息類型包括POI、榜單、UGC、攻略、達人等。以找店為例,查找方式包括按距離、按熱度、按菜品和按地理位置等多種方式。例如用戶按照品牌進行搜索時,大概率是需要尋找距離最近或者常去的某家分店;但用戶搜索菜品時,會對菜品推薦人數更加敏感,而距離因素會弱化。
業務多樣:不同業務之間,用戶的使用頻率、選擇難度以及業務訴求均不一樣。例如家裝場景用戶使用頻次很低,行為非常稀疏,距離因素弱,并且選擇周期可能會很長;而美食多為即時消費場景,用戶行為數據多,距離敏感。
用戶類型多樣:不同的用戶對價格、距離、口味以及偏好的類目之間差異很大;搜索需要能深度挖掘到用戶的各種偏好,實現定制化的“千人千面”的搜索。
LBS的搜索:相比電商和通用搜索,LBS的升維效應極大地增加了搜索場景的復雜性。例如對于旅游用戶和常駐地用戶來說,前者在搜索美食的時候可能會更加關心當地的知名特色商戶,而對于距離相對不敏感。
上述的各項特性,疊加上時間、空間、場景等維度,使得點評搜索面臨比通用搜索引擎更加獨特的挑戰。而解決這些挑戰的方法,就需要升級NLP(Natural Language Processing,自然語言處理)技術,進行深度查詢理解以及深度評價分析,并依賴知識圖譜技術和深度學習技術對搜索架構進行整體升級。在美團NLP中心以及大眾點評搜索智能中心兩個團隊的緊密合作之下,經過短短半年時間,點評搜索核心KPI在高位基礎上仍然大幅提升,是過去一年半漲幅的六倍之多,提前半年完成全年目標。
基于知識圖譜的搜索架構重塑
美團NLP中心正在構建全世界最大的餐飲娛樂知識圖譜——美團大腦(相關信息請參見《美團大腦:知識圖譜的建模方法及其應用》)。它充分挖掘關聯各個場景數據,用NLP技術讓機器“閱讀”用戶公開評論,理解用戶在菜品、價格、服務、環境等方面的喜好,構建人、店、商品、場景之間的知識關聯,從而形成一個“知識大腦”[1]。通過將知識圖譜信息加入到搜索各個流程中,我們對點評搜索的整體架構進行了升級重塑,圖1為點評搜索基于知識圖譜搭建的5層搜索架構。本篇文章是“美團大腦”系列文章第二篇(系列首篇文章請參見《美團餐飲娛樂知識圖譜——美團大腦揭秘》),主要介紹點評搜索5層架構中核心排序層的演變過程,文章主要分為如下3個部分:
核心排序從傳統機器學習模型到大規模深度學習模型的演進。
搜索場景深度學習排序模型的特征工程實踐。
適用于搜索場景的深度學習Listwise排序算法——LambdaDNN。
圖1 基于知識圖譜的點評搜索5層架構
2. 排序模型探索與實踐
搜索排序問題在機器學習領域有一個單獨的分支,Learning to Rank(L2R)。主要分類如下:
根據樣本生成方法和Loss Function的不同,L2R可以分為Pointwise、Pairwise、Listwise。
按照模型結構劃分,可以分為線性排序模型、樹模型、深度學習模型,它們之間的組合(GBDT+LR,Deep&Wide等)。
在排序模型方面,點評搜索也經歷了業界比較普遍的迭代過程:從早期的線性模型LR,到引入自動二階交叉特征的FM和FFM,到非線性樹模型GBDT和GBDT+LR,到最近全面遷移至大規模深度學習排序模型。下面先簡單介紹下傳統機器學習模型(LR、FM、GBDT)的應用和優缺點,然后詳細介紹深度模型的探索實踐過程。
傳統機器學習模型
圖2 幾種傳統機器學習模型結構
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 Deep&Wide模型結構圖
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]。
圖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。體現在如下兩個方面:
搜索業務常用的指標有QV_CTR或者SSR(Session Success Rate),更關心的是用戶搜索的成功率(有沒有發生點擊行為);而Pointwise的Log Loss更多是關注單個Item的點擊率。
搜索業務更關心排在頁面頭部結果的好壞,而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的。因此我們需要對樣本進行預處理:
通過QueryId進行Shuffle,將同一個Query的樣本聚合在一起,同一個Query的樣本打包進一個TFRecord。
由于每次請求Query召回的Doc數不一樣,對于可變Size的Query樣本在拉取數據進行訓練時需要注意,TF會自動補齊Mini-Batch內每個樣本大小一致,導致輸入數據中存在大量無意義的默認值樣本。這里我們提供兩點處理方式:
MR過程中對Key進行處理,使得多個Query的樣本聚合在一起,然后在訓練的時候進行動態切分。
讀取到補齊的樣本,根據設定的補齊標記獲取索引位,去除補齊數據。
圖11 Lambda梯度的分布式實現
為了提升訓練效率,我們與基礎研發平臺數據平臺中心緊密協同,一起探索并驗證了多項優化操作:
將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,這塊內容可以討論的東西很多,這里不再詳述。
圖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. 深度學習排序診斷系統
深度學習排序模型雖然給業務指標帶來了大幅度的提升,但由于深度學習模型的“黑盒屬性”導致了巨大的解釋性成本,也給搜索業務帶來了一些問題:
日常搜索Bad Case無法快速響應:搜索業務日常需要應對大量來自于用戶、業務和老板們的“靈魂拷問”,“為何這個排序是這樣的”,“為什么這家商戶質量跟我差不多,但是會排在我的前面”。剛切換到深度學習排序模型的時候,我們對于這樣的問題顯得手足無措,需要花費大量的時間去定位問題。
無法從Bad Case中學習總結規律持續優化:如果不明白為什么排序模型會得出一個很壞的排序結果,自然也無法定位模型到底出了什么問題,也就無法根據Bad Case總結規律,從而確定模型和特征將來的優化方向。
模型和特征是否充分學習無從得知:新挖掘一些特征之后,通常我們會根據離線評測指標是否有提升決定特征是否上線。但是,即使一個有提升的特征,我們也無法知道這個特征是否性能足夠好。例如,模型擬合的距離特征,會不會在特定的距離段出現距離越遠反而打分越高的情況。
這些問題都會潛在帶來一些用戶無法理解的排序結果。我們需要對深度排序模型清晰地診斷并解釋。
關于機器學習模型的可解釋性研究,業界已經有了一些探索。Lime(Local Interpretable Model-Agnostic Explanations)是其中的一種,如下圖所示:通過對單個樣本的特征生成擾動產生近鄰樣本,觀察模型的預測行為。根據這些擾動的數據點距離原始數據的距離分配權重,基于它們學習得到一個可解釋的模型和預測結果[5]。舉個例子,如果需要解釋一個情感分類模型是如何預測“我討厭這部電影”為負面情感的,我們通過丟掉部分詞或者亂序構造一些樣本預測情感,最終會發現,決定“我討厭這部電影”為負面情感的是因為“討厭”這個詞。
圖16 Lime解釋器的工作原理
基于Lime解釋器的思想,我們開發了一套深度模型解釋器工具——雅典娜系統。目前雅典娜系統支持兩種工作模式,Pairwise和Listwise模式:
Pairwise模式用來解釋同一個列表中兩個結果之間的相對排序。通過對樣本的特征進行重新賦值或者替換等操作,觀察樣本打分和排序位次的變化趨勢,診斷出當前樣本排序是否符合預期。如下圖所示,通過右側的特征位次面板可以快速診斷出為什么“南京大牌檔”的排序比“金時代順風港灣”要更靠前。第一行的特征位次信息顯示,若將“金時代順風港灣”的1.3km的距離特征用“南京大牌檔”的0.2km的距離特征進行替換,排序位次將上升10位;由此得出,“南京大牌檔”排在前面的決定性因素是因為距離近。
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的,即只會考慮當前商戶相關的特征,而不會考慮列表上下文的結果,未來我們也會在這個方向上進行一些探索。
參考資料
美團大腦:知識圖譜的建模方法及其應用
Wide & Deep Learning for Recommender Systems
Deep Residual Learning for Image Recognition
Attention Is All You Need
Local Interpretable Mode l- Agnostic Explanations: LIME
From RankNet to LambdaRank to LambdaMART: An Overview
A Novel Algorithm for Unbiased Learning to Rank
Unbiased Learning-to-Rank with Biased Feedback
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。
----------? END? ----------
OpenKG.CN
中文開放知識圖譜(簡稱OpenKG.CN)旨在促進中文知識圖譜數據的開放與互聯,促進知識圖譜和語義技術的普及和廣泛應用。
點擊閱讀原文,進入 OpenKG 博客。
總結
以上是生活随笔為你收集整理的领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 | 基于知识库的神经网络问题生
- 下一篇: 论文浅尝 - EMNLP2020 | 图